SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
k-means(k-平均法)
(+Javadocの説明)
WSL 勉強会
2016/06/19(⽇)
友松祐太
2016/6/19 1
はじめに
• 本スライドは本・ネットの資料を参考に作成した資料です。資
料内に誤りがあるかもしれません。。(指摘をお願いします。)
2016/6/19 2
もくじ
• Introduction(クラスタリングについて)
• k-means
• k-meansの初期値問題(初期値選択アルゴリズム)
• KKZアルゴリズム
• k-means++アルゴリズム
• k-meansのさらなる問題点
• おまけ(Javadocのすゝめ)
2016/6/19 3
Introduction
(クラスタリングについて)
2016/6/19 4
クラスタリングとは
• クラスタリングとは?
データの集合を”似たもの同⼠”でグループ化する作業。
教師なしなので、あらかじめどんなグループが出来上がるかわからない
• クラスタとは?
クラスタリングの結果できあがったグループ。
• クラスタリングの種類は以下の2つの観点で種類分けできる
ハードクラスタリングorソフトクラスタリング
階層型クラスタリングor⾮階層型クラスタリング
2016/6/19 5
ハード or ソフト
• ハードクラスタリング
各ベクトルが1つのクラスタに
所属
• ソフトクラスタリング
各ベクトルが全てのクラスタに
ある割合で所属
2016/6/19 6
クラスタA クラスタB
クラスタA クラスタB
クラスタA クラスタB
クラスタA:70%
クラスタB:30%
クラスタA:20%
クラスタB:80%
階層型クラスタリング
• 最も近いクラスタを1つずつ併合していきクラスタリングを⾏
う⼿法。
• クラスタ数が1つになったときの樹形図(dendrogram)を任意の
⾼さで切ることによって,欲しいクラスタ数を得ることができる。
2016/6/19 7
階層型クラスタリング
2016/6/19 8
階層型クラスタリング
2016/6/19 9
階層型クラスタリング
2016/6/19 10
階層型クラスタリング
2016/6/19 11
階層型クラスタリング
2016/6/19 12
クラスタリング⼿法とその分類
2016/6/19 13
階層型クラスタリング ⾮階層型クラスタリング
ソ
フ
ト
ク
ラ
ス
タ
リ
ン
グ
ハ
ド
ク
ラ
ス
タ
リ
ン
グ
・k-means
・x-means
・スペクトラルクラスタリング
・単連結法 ・完全連結法
・群平均法 ・ウォード法
・重⼼法 ・メディアン法
・Fuzzy c-means
・混合分布モデル
・pLSI
・NMF
クラスタリング⼿法とその分類
2016/6/19 14
階層型クラスタリング ⾮階層型クラスタリング
ソ
フ
ト
ク
ラ
ス
タ
リ
ン
グ
ハ
ド
ク
ラ
ス
タ
リ
ン
グ
・k-means<-今⽇はこれを扱う
・x-means
・スペクトラルクラスタリング
・単連結法 ・完全連結法
・群平均法 ・ウォード法
・重⼼法 ・メディアン法
・Fuzzy c-means
・混合分布モデル
・pLSI
・NMF
k-means
2016/6/19 15
k-meansとは
• まずデータを適当に分割し、後からうまく分割するように調整
していくことによってクラスタリングを⾏う⽅法。k-meansの
kとはクラスタをいくつにわけるかという数で、ユーザが事前
に決定する。
2016/6/19 16
k-meansアルゴリズム
Step0 ・各ベクトルの所属クラスタを乱数で選ぶ。
Step1 ・各クラスタに所属するベクトルの重⼼をとり、ク
ラスタの代表ベクトルとする。
Step2 ・各ベクトルから⼀番近いクラスタの代表ベクトル
を新たな所属クラスタとする。
Step3 ・所属クラスタが更新されていればStep1へ、更新さ
れていなければ終了
Finish
2016/6/19 17
k-means(例)その1
2016/6/19 18
Step0:各ベクトルの所
属クラスタを乱数で選
ぶ。
Step1:各クラスタに所
属するベクトルの重⼼
をとり、クラスタの代
表ベクトルとする。
k-means(例)その2
2016/6/19 19
Step2:各ベクトルから⼀
番近いクラスタの代表ベ
クトルを新たな所属クラ
スタとする。
Step3: 所属クラスタ
が更新されているので
step1へ
Step1:各クラスタに所
属するベクトルの重⼼
をとり、クラスタの代
表ベクトルとする。
k-means(例)その3
2016/6/19 20
Step2:各ベクトルから
⼀番近いクラスタの代
表ベクトルを新たな所
属クラスタとする。
Step3: クラスタの割
当に変更がない→終了
k-meansの初期値問題
2016/6/19 21
k-meansの初期値問題
このようなベクトル群を2つのクラスタに分けたい・・・
2016/6/19 22
k-meansの初期値問題
理想的にはこのように分かれて欲しい・・・
2016/6/19 23
k-meansの初期値問題
初期の割当てによってはこのように
分かれてしまうことも・・・2016/6/19 24
KKZ法
• このような初期値ランダム問題に対処するために考案された1
つ⽬の⼿法。
• 後で紹介するk-means++法の先⾏研究。
2016/6/19 25
KKZ法 アルゴリズム
Step0 ・ランダムに1つベクトルを選び代表ベクトルとする
Step1 ・代表ベクトルの数がk個になったら終了
Step2 ・それぞれのベクトル𝑥に関して、最も近い代表ベクト
ルの距離を求める。
Step3 ・Step2で求めた距離が最⼤になるベクトルを新たな代
表ベクトルとして選択
2016/6/19 26
Finish
KKZアルゴリズム
•4つのベクトルから
k=3(個)の初期代表ベ
クトルを選択するとす
る(実際はほぼありえな
い状況…)
2016/6/19 27
KKZアルゴリズム
•[Step0]
ランダムに1つベクトル
を選び代表ベクトルと
する
2016/6/19 28
KKZアルゴリズム
•[Step1]
代表ベクトルの数が1個
≠k個なのでアルゴリズ
ムを続ける
2016/6/19 29
KKZアルゴリズム
•[Step2]
それぞれのベクトル𝑥に
関して、最も近い代表
ベクトルの距離を求め
る。
2016/6/19 30
KKZアルゴリズム
•[Step3]
Step2で求めた距離が最
⼤になるベクトルを新
たな代表ベクトルとし
て選択
2016/6/19 31
KKZアルゴリズム
•[Step1]
代表ベクトルの数が2個
≠k個なのでアルゴリズ
ムを続ける
2016/6/19 32
KKZアルゴリズム
•[Step2]
それぞれのベクトル𝑥に
関して、最も近い代表
ベクトルの距離を求め
る。
2016/6/19 33
KKZアルゴリズム
•[Step3]
Step2で求めた距離が最
⼤になるベクトルを新
たな代表ベクトルとし
て選択
2016/6/19 34
KKZアルゴリズム
•[Step1]
代表ベクトルの数が3個
=k個なのでアルゴリズ
ムを⽌める⇒終了
2016/6/19 35
KKZの問題点
• KKZによって、最初に選んだ代表ベクトルをもとに各代表ベク
トルの距離が最⼤になるように初期値を選択できた。
• 外れ値が存在する場合にうまくいかないことがある。。。
⇒k-means++法の登場
2016/6/19 36
k-means++法
• k-means++:KKZでは距離が最⼤になるものを選んでいたが、
距離が⼤きい物が確率的に選ばれやすいように
して、ランダムに次の点を決める⽅法
• 次の代表ベクトルは確率的にランダムに選ぶので、外れ値にも
対応できる
k-means++を使うと・・・
• ほとんどのデータセットで誤差が減り、あるデータセットでは
誤差が1/1000にも減った
• 収束までの速さが2倍に
2016/6/19 37
k-means++法 アルゴリズム
Step0 ・ランダムに1つベクトルを選び代表ベクトルとする
Step1 ・代表ベクトルの数がk個になったら終了
Step2 ・それぞれのベクトル𝑥に関して、そのベクトルに⼀番
近い代表ベクトルとの距離𝐷(𝑋)を求める。
Step3 ・各ベクトルxに関して重み付き確率分布𝜙 𝑥' =
) *+
∑-) *-
を⽤いて新たな代表ベクトルをランダムに選ぶ
2016/6/19 38
Finish
さらなるk-meansの問題点
2016/6/19 39
さらなるk-meansの問題点
• 右のような事例ではk-means
ではうまくいかないようです。
• また、k-meansは予めkを⾃
分で決める必要があるという
こと
2016/6/19 40
⽯井 健⼀郎, 上⽥ 修功, 前⽥ 英作, 村瀬 洋: わかりやすい
パターン認識, オーム社 (1998)
x-means
• k-meansではあらかじめ分割するクラスタ数kを与える必要が
あった。
→x-meansではK=2で再帰的にK-means法を実⾏していく。ク
ラスタの分割前と分割後でBIC(ベイズ情報量規準)を⽐較し、
値が改善しなくなるまで分割を続ける
まだ勉強中なので、今回は説明しません
2016/6/19 41
おまけ
Javadocのすゝめ
2016/6/19 42
Javadocを書こう
Javadoc:プログラムについての説明をソースコードに記述する仕
組み
/**
* ここにJavadocを書く
* @アノテーション 〜〜〜〜
*/
2016/6/19 43
/*
コメントとは違
う書き⽅
*/
Javadocを書こう
• Javadoc何がいい?
ソースコード内にソースコードの説明が記述できる
(これだけじゃないですが・・・)
•コメントと何が違うの?
HTML形式のドキュメンテーションファイルを出⼒できる。
他にも… コンパイル時の警告の抑制,⾮推奨メソッドの警告表
⽰,スレッドセーフかどうかなど様々なことを記述で
きる。
2016/6/19 44
Javadocを書こう
2016/6/19 45
Javadocを書こう(アノテーション)
2016/6/19 46
• この他にもいろいろあります
アノテーション 効果
@author コーディングした⼈の名前を⽰す
@version プログラムのバージョンを記述する
@param メソッドの引数についての説明
@return メソッドの返り値の説明
@throws メソッドが吐くエラーについての説明
(どんなときにどんなエラーが吐かれるか)
Javadocを書こう
2016/6/19 47
このようなjavaファ
イルからHTML形式
のドキュメントファ
イルを作成する。
Javadocを書こう
• EclipseからHTML形式のJavadocを⽣成
• Project->Generate Javadoc…->private,publicを選択->Finish
2016/6/19 48
Javadocを書こう
2016/6/19 49
できた!!
ご清聴ありがとうございました!
2016/6/19 50
参考資料
• 【改訂版】Eclipseではじめるプログラミング(22):いまさら聞け
ない「Javadoc」と「アノテーション」⼊⾨
• k-means法の様々な初期値設定によるクラスタリング結果の実験的
⽐較(JSAI2011)
• クラスタリングの定番アルゴリズム「K-means法」をビジュアライ
ズしてみた
• 適切なクラスタ数を推定するX-means法 - kaisehのブログ
2016/6/19 51
参考資料
• k-means++法 ‒ Wikipedia
• k-means++|ぽんのブログ - アメーバブログ
• クラスタリング (クラスター分析)
• scikit-learn による最も基本的なクラスタリング分析 ‒ Qiita
• ⾔語処理のための機械学習⼊⾨ (⾃然⾔語処理シリーズ)
2016/6/19 52

Contenu connexe

Tendances

ユーザーサイド情報検索システム
ユーザーサイド情報検索システムユーザーサイド情報検索システム
ユーザーサイド情報検索システムjoisino
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会takehikoihayashi
 
Word2vecの理論背景
Word2vecの理論背景Word2vecの理論背景
Word2vecの理論背景Masato Nakai
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...Deep Learning JP
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門KnowledgeGraph
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門Retrieva inc.
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
 
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeTakami Sato
 
Googleの新しい検索技術 Knowledge Graphについて
Googleの新しい検索技術 Knowledge GraphについてGoogleの新しい検索技術 Knowledge Graphについて
Googleの新しい検索技術 Knowledge Graphについてmaruyama097
 
[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイ[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイDeep Learning JP
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習Deep Learning JP
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズムnishio
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
 
スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)Hidetoshi Matsui
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative ModelsDeep Learning JP
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAGIRobots
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstmtak9029
 

Tendances (20)

ユーザーサイド情報検索システム
ユーザーサイド情報検索システムユーザーサイド情報検索システム
ユーザーサイド情報検索システム
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
Word2vecの理論背景
Word2vecの理論背景Word2vecの理論背景
Word2vecの理論背景
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
 
Googleの新しい検索技術 Knowledge Graphについて
Googleの新しい検索技術 Knowledge GraphについてGoogleの新しい検索技術 Knowledge Graphについて
Googleの新しい検索技術 Knowledge Graphについて
 
[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイ[DL輪読会]ドメイン転移と不変表現に関するサーベイ
[DL輪読会]ドメイン転移と不変表現に関するサーベイ
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
 
勾配降下法の 最適化アルゴリズム
勾配降下法の最適化アルゴリズム勾配降下法の最適化アルゴリズム
勾配降下法の 最適化アルゴリズム
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstm
 

k-means(k-平均法)