Submit Search
Upload
k-means(k-平均法)
•
7 likes
•
9,534 views
Y
Yuta Tomomatsu
Follow
WSLの勉強会の資料。 クラスタリングの軽い説明からk-meansの説明、k-meansの初期値選択アルゴリズムに関しての資料。 最後におまけ的にJavadocの説明をのせる。
Read less
Read more
Data & Analytics
Report
Share
Report
Share
1 of 52
Download now
Download to read offline
Recommended
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
Takeshi Mikami
機械学習を用いた異常検知入門
機械学習を用いた異常検知入門
michiaki ito
5 クラスタリングと異常検出
5 クラスタリングと異常検出
Seiichi Uchida
Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析
Hiroaki Sengoku
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング・ラボ)
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
Recommended
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
Takeshi Mikami
機械学習を用いた異常検知入門
機械学習を用いた異常検知入門
michiaki ito
5 クラスタリングと異常検出
5 クラスタリングと異常検出
Seiichi Uchida
Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析
Hiroaki Sengoku
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング・ラボ)
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
narumikanno0918
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
Yuya Takashina
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
emakryo
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
Shohei Hido
グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
2 データのベクトル表現と集合
2 データのベクトル表現と集合
Seiichi Uchida
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
Deep Learning JP
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
sleepy_yoshi
GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki
深層学習の数理
深層学習の数理
Taiji Suzuki
テーブル・テキスト・画像の反実仮想説明
テーブル・テキスト・画像の反実仮想説明
tmtm otm
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
最適輸送入門
最適輸送入門
joisino
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法
Hiroki Itô
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
Taiji Suzuki
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
Yusuke Uchida
More Related Content
What's hot
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
narumikanno0918
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
Yuya Takashina
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
emakryo
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
Shohei Hido
グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
2 データのベクトル表現と集合
2 データのベクトル表現と集合
Seiichi Uchida
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
Deep Learning JP
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
sleepy_yoshi
GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki
深層学習の数理
深層学習の数理
Taiji Suzuki
テーブル・テキスト・画像の反実仮想説明
テーブル・テキスト・画像の反実仮想説明
tmtm otm
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
最適輸送入門
最適輸送入門
joisino
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法
Hiroki Itô
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
Taiji Suzuki
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
Yusuke Uchida
What's hot
(20)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
Neural networks for Graph Data NeurIPS2018読み会@PFN
Neural networks for Graph Data NeurIPS2018読み会@PFN
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
グラフィカルモデル入門
グラフィカルモデル入門
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
2 データのベクトル表現と集合
2 データのベクトル表現と集合
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
【DL輪読会】"Masked Siamese Networks for Label-Efficient Learning"
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
GAN(と強化学習との関係)
GAN(と強化学習との関係)
深層学習の数理
深層学習の数理
テーブル・テキスト・画像の反実仮想説明
テーブル・テキスト・画像の反実仮想説明
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
最適輸送入門
最適輸送入門
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
k-means(k-平均法)
1.
k-means(k-平均法) (+Javadocの説明) WSL 勉強会 2016/06/19(⽇) 友松祐太 2016/6/19 1
2.
はじめに • 本スライドは本・ネットの資料を参考に作成した資料です。資 料内に誤りがあるかもしれません。。(指摘をお願いします。) 2016/6/19 2
3.
もくじ • Introduction(クラスタリングについて) • k-means •
k-meansの初期値問題(初期値選択アルゴリズム) • KKZアルゴリズム • k-means++アルゴリズム • k-meansのさらなる問題点 • おまけ(Javadocのすゝめ) 2016/6/19 3
4.
Introduction (クラスタリングについて) 2016/6/19 4
5.
クラスタリングとは • クラスタリングとは? データの集合を”似たもの同⼠”でグループ化する作業。 教師なしなので、あらかじめどんなグループが出来上がるかわからない • クラスタとは? クラスタリングの結果できあがったグループ。 •
クラスタリングの種類は以下の2つの観点で種類分けできる ハードクラスタリングorソフトクラスタリング 階層型クラスタリングor⾮階層型クラスタリング 2016/6/19 5
6.
ハード or ソフト •
ハードクラスタリング 各ベクトルが1つのクラスタに 所属 • ソフトクラスタリング 各ベクトルが全てのクラスタに ある割合で所属 2016/6/19 6 クラスタA クラスタB クラスタA クラスタB クラスタA クラスタB クラスタA:70% クラスタB:30% クラスタA:20% クラスタB:80%
7.
階層型クラスタリング • 最も近いクラスタを1つずつ併合していきクラスタリングを⾏ う⼿法。 • クラスタ数が1つになったときの樹形図(dendrogram)を任意の ⾼さで切ることによって,欲しいクラスタ数を得ることができる。 2016/6/19
7
8.
階層型クラスタリング 2016/6/19 8
9.
階層型クラスタリング 2016/6/19 9
10.
階層型クラスタリング 2016/6/19 10
11.
階層型クラスタリング 2016/6/19 11
12.
階層型クラスタリング 2016/6/19 12
13.
クラスタリング⼿法とその分類 2016/6/19 13 階層型クラスタリング ⾮階層型クラスタリング ソ フ ト ク ラ ス タ リ ン グ ハ ド ク ラ ス タ リ ン グ ・k-means ・x-means ・スペクトラルクラスタリング ・単連結法
・完全連結法 ・群平均法 ・ウォード法 ・重⼼法 ・メディアン法 ・Fuzzy c-means ・混合分布モデル ・pLSI ・NMF
14.
クラスタリング⼿法とその分類 2016/6/19 14 階層型クラスタリング ⾮階層型クラスタリング ソ フ ト ク ラ ス タ リ ン グ ハ ド ク ラ ス タ リ ン グ ・k-means<-今⽇はこれを扱う ・x-means ・スペクトラルクラスタリング ・単連結法
・完全連結法 ・群平均法 ・ウォード法 ・重⼼法 ・メディアン法 ・Fuzzy c-means ・混合分布モデル ・pLSI ・NMF
15.
k-means 2016/6/19 15
16.
k-meansとは • まずデータを適当に分割し、後からうまく分割するように調整 していくことによってクラスタリングを⾏う⽅法。k-meansの kとはクラスタをいくつにわけるかという数で、ユーザが事前 に決定する。 2016/6/19 16
17.
k-meansアルゴリズム Step0 ・各ベクトルの所属クラスタを乱数で選ぶ。 Step1 ・各クラスタに所属するベクトルの重⼼をとり、ク ラスタの代表ベクトルとする。 Step2
・各ベクトルから⼀番近いクラスタの代表ベクトル を新たな所属クラスタとする。 Step3 ・所属クラスタが更新されていればStep1へ、更新さ れていなければ終了 Finish 2016/6/19 17
18.
k-means(例)その1 2016/6/19 18 Step0:各ベクトルの所 属クラスタを乱数で選 ぶ。 Step1:各クラスタに所 属するベクトルの重⼼ をとり、クラスタの代 表ベクトルとする。
19.
k-means(例)その2 2016/6/19 19 Step2:各ベクトルから⼀ 番近いクラスタの代表ベ クトルを新たな所属クラ スタとする。 Step3: 所属クラスタ が更新されているので step1へ Step1:各クラスタに所 属するベクトルの重⼼ をとり、クラスタの代 表ベクトルとする。
20.
k-means(例)その3 2016/6/19 20 Step2:各ベクトルから ⼀番近いクラスタの代 表ベクトルを新たな所 属クラスタとする。 Step3: クラスタの割 当に変更がない→終了
21.
k-meansの初期値問題 2016/6/19 21
22.
k-meansの初期値問題 このようなベクトル群を2つのクラスタに分けたい・・・ 2016/6/19 22
23.
k-meansの初期値問題 理想的にはこのように分かれて欲しい・・・ 2016/6/19 23
24.
k-meansの初期値問題 初期の割当てによってはこのように 分かれてしまうことも・・・2016/6/19 24
25.
KKZ法 • このような初期値ランダム問題に対処するために考案された1 つ⽬の⼿法。 • 後で紹介するk-means++法の先⾏研究。 2016/6/19
25
26.
KKZ法 アルゴリズム Step0 ・ランダムに1つベクトルを選び代表ベクトルとする Step1
・代表ベクトルの数がk個になったら終了 Step2 ・それぞれのベクトル𝑥に関して、最も近い代表ベクト ルの距離を求める。 Step3 ・Step2で求めた距離が最⼤になるベクトルを新たな代 表ベクトルとして選択 2016/6/19 26 Finish
27.
KKZアルゴリズム •4つのベクトルから k=3(個)の初期代表ベ クトルを選択するとす る(実際はほぼありえな い状況…) 2016/6/19 27
28.
KKZアルゴリズム •[Step0] ランダムに1つベクトル を選び代表ベクトルと する 2016/6/19 28
29.
KKZアルゴリズム •[Step1] 代表ベクトルの数が1個 ≠k個なのでアルゴリズ ムを続ける 2016/6/19 29
30.
KKZアルゴリズム •[Step2] それぞれのベクトル𝑥に 関して、最も近い代表 ベクトルの距離を求め る。 2016/6/19 30
31.
KKZアルゴリズム •[Step3] Step2で求めた距離が最 ⼤になるベクトルを新 たな代表ベクトルとし て選択 2016/6/19 31
32.
KKZアルゴリズム •[Step1] 代表ベクトルの数が2個 ≠k個なのでアルゴリズ ムを続ける 2016/6/19 32
33.
KKZアルゴリズム •[Step2] それぞれのベクトル𝑥に 関して、最も近い代表 ベクトルの距離を求め る。 2016/6/19 33
34.
KKZアルゴリズム •[Step3] Step2で求めた距離が最 ⼤になるベクトルを新 たな代表ベクトルとし て選択 2016/6/19 34
35.
KKZアルゴリズム •[Step1] 代表ベクトルの数が3個 =k個なのでアルゴリズ ムを⽌める⇒終了 2016/6/19 35
36.
KKZの問題点 • KKZによって、最初に選んだ代表ベクトルをもとに各代表ベク トルの距離が最⼤になるように初期値を選択できた。 • 外れ値が存在する場合にうまくいかないことがある。。。 ⇒k-means++法の登場 2016/6/19
36
37.
k-means++法 • k-means++:KKZでは距離が最⼤になるものを選んでいたが、 距離が⼤きい物が確率的に選ばれやすいように して、ランダムに次の点を決める⽅法 • 次の代表ベクトルは確率的にランダムに選ぶので、外れ値にも 対応できる k-means++を使うと・・・ •
ほとんどのデータセットで誤差が減り、あるデータセットでは 誤差が1/1000にも減った • 収束までの速さが2倍に 2016/6/19 37
38.
k-means++法 アルゴリズム Step0 ・ランダムに1つベクトルを選び代表ベクトルとする Step1
・代表ベクトルの数がk個になったら終了 Step2 ・それぞれのベクトル𝑥に関して、そのベクトルに⼀番 近い代表ベクトルとの距離𝐷(𝑋)を求める。 Step3 ・各ベクトルxに関して重み付き確率分布𝜙 𝑥' = ) *+ ∑-) *- を⽤いて新たな代表ベクトルをランダムに選ぶ 2016/6/19 38 Finish
39.
さらなるk-meansの問題点 2016/6/19 39
40.
さらなるk-meansの問題点 • 右のような事例ではk-means ではうまくいかないようです。 • また、k-meansは予めkを⾃ 分で決める必要があるという こと 2016/6/19
40 ⽯井 健⼀郎, 上⽥ 修功, 前⽥ 英作, 村瀬 洋: わかりやすい パターン認識, オーム社 (1998)
41.
x-means • k-meansではあらかじめ分割するクラスタ数kを与える必要が あった。 →x-meansではK=2で再帰的にK-means法を実⾏していく。ク ラスタの分割前と分割後でBIC(ベイズ情報量規準)を⽐較し、 値が改善しなくなるまで分割を続ける まだ勉強中なので、今回は説明しません 2016/6/19 41
42.
おまけ Javadocのすゝめ 2016/6/19 42
43.
Javadocを書こう Javadoc:プログラムについての説明をソースコードに記述する仕 組み /** * ここにJavadocを書く * @アノテーション
〜〜〜〜 */ 2016/6/19 43 /* コメントとは違 う書き⽅ */
44.
Javadocを書こう • Javadoc何がいい? ソースコード内にソースコードの説明が記述できる (これだけじゃないですが・・・) •コメントと何が違うの? HTML形式のドキュメンテーションファイルを出⼒できる。 他にも… コンパイル時の警告の抑制,⾮推奨メソッドの警告表 ⽰,スレッドセーフかどうかなど様々なことを記述で きる。 2016/6/19
44
45.
Javadocを書こう 2016/6/19 45
46.
Javadocを書こう(アノテーション) 2016/6/19 46 • この他にもいろいろあります アノテーション
効果 @author コーディングした⼈の名前を⽰す @version プログラムのバージョンを記述する @param メソッドの引数についての説明 @return メソッドの返り値の説明 @throws メソッドが吐くエラーについての説明 (どんなときにどんなエラーが吐かれるか)
47.
Javadocを書こう 2016/6/19 47 このようなjavaファ イルからHTML形式 のドキュメントファ イルを作成する。
48.
Javadocを書こう • EclipseからHTML形式のJavadocを⽣成 • Project->Generate
Javadoc…->private,publicを選択->Finish 2016/6/19 48
49.
Javadocを書こう 2016/6/19 49 できた!!
50.
ご清聴ありがとうございました! 2016/6/19 50
51.
参考資料 • 【改訂版】Eclipseではじめるプログラミング(22):いまさら聞け ない「Javadoc」と「アノテーション」⼊⾨ • k-means法の様々な初期値設定によるクラスタリング結果の実験的 ⽐較(JSAI2011) •
クラスタリングの定番アルゴリズム「K-means法」をビジュアライ ズしてみた • 適切なクラスタ数を推定するX-means法 - kaisehのブログ 2016/6/19 51
52.
参考資料 • k-means++法 ‒
Wikipedia • k-means++|ぽんのブログ - アメーバブログ • クラスタリング (クラスター分析) • scikit-learn による最も基本的なクラスタリング分析 ‒ Qiita • ⾔語処理のための機械学習⼊⾨ (⾃然⾔語処理シリーズ) 2016/6/19 52
Download now