なぜ機械学習で
アルゴリズムを
選定するのか?
2024/06/01
メインテーマ
機械学習でアルゴリズムを選定するモチベを理解する
そのために、以下の事例を把握する。
k-meansによる残念な結果 を見る
1つのアルゴリズムの限界 を知る
↓
他のアルゴリズムを探す必要性 を感じる
- 教師なし学習 > クラスタリング > k-means法
- クラスタリング= 似た性質を持つデータをグルーピングすること。
- そのためのアルゴリズムの
1つがk-means法
- k-means法の説明の前に、まずはクラスタリングの目的を見ていく
- ※アルゴリズム= 問題を解くための手順
今回見ていくアルゴリズム
クラスタリングの目的は?(前置き)
ユースケース
- ある回転ずし店、スシ○ーでは、新しいサービスを考えている。
- この時、もしも「中程度の所得者にはラーメンが人気だ」という情報があったら...?
- 中程度の所得者ならば、クーポンを配布したら店に来る頻度が増えるかもしれな
い、、、そんなアイデアを得られる
クラスタリングの目的は?(前置き)
ユースケース
-
1か月の所得額
累
計
ラ
ー
メ
ン
注
文
数
「中程度の所得者にはラーメンが人気
だ」という情報はどう入手するか?
ーここでクラスタリングの出番
アンケート調査の結果を収集
→クラスタリング
→データの傾向を発見する
クラスタリングの目的は?(前置き)
ユースケース
-
1か月の所得額
累
計
ラ
ー
メ
ン
注
文
数
これが、
クラスタリング
の目的の1つ
もっと買え
クーポン
クラスタリング
はどうやって実現?
k-means法
それはk-means法というアルゴリズム
ここからはそれを説明します。
アルゴリズムは4ステップからなります。
k-means
君
k-means法
1.クラスター数を指定
k-means
君
4個のクラスタにして
イエッサー
k-means法
2.ランダムに点をクラスタ数だけ、設置する
これがクラスタの代表点となる
k-means
君
設置シマシタ A
B
C
D
点A, B, C, Dとする
k-means法
3.全てのデータ点と代表点との距離を計算する。
各データ点は最も近い代表点のクラスタに
属する
4つにワケマシタ
k-means
君
A
B
C
D
k-means法
4.クラスターごとに重心を計算する
その重心が次のクラスターの代表点となる
重心を求める式は以下
(i:クラスタを指定する値, X:データ数, x:データ)
k-means
君
代表点
動カシマシタ
重心の式は高校数学
で習ったものの拡張版
かな
k-means法
さいごに3と4のサイクルを、繰り返す。
終了基準は代表点が移動しなくなるか、
予め決めた回数に到達すること
k-means
君
最適化シテマス
k-means法の
失敗ケース
失敗ケース:初期の代表点の位置がマズイ
これらの画像を見てほしい。
1枚の画像が1サイクルに対応する。
重心の位置が1サイクルごとに移動し
ている。
※各データ点の形状が異なれば、属
するクラスタが異なる。
(△、○、□、▽)
k-means
君
失敗ケース:初期の代表点の位置がマズイ
最終結果として
左は△のクラスタ1つのみ。一
方、右下のかたまりは2つ(▽、
□)に分割されている。
→直感に反する
クラスタリング
なんじゃこりゃ
k-means
君
4サイクルシマシタ
失敗ケース:初期の代表点の位置がマズイ
なぜ直感に反するクラスタリングになったか?
初期の重心の位置がマズかったから。
(1つのかたまりの中に2点が密接していた)
k-means
君
こら アルゴリズム
ドオリ
ヤリマシタヨ
失敗ケース:初期の代表点の位置がマズイ
このk-means君の弱点を克服したアルゴリズムがありました。
k-means++ 君です。
k-means
君
k-means++君
k-meansトハ
一味チガウ
アルゴリズムダゼ
k-means++
のアルゴリズム
k-means++法
k-means法との違いは、
最初の代表点の決め方。
ランダムに設置するのではなく
一定の確率に従って設置する。
k-meansの
2のステップを分解してみていく。
k-means++法
クラスター数 = 4として
初期に4つの点を打つことを目指す。
2-1. 1個目の代表点をランダムに選ぶ。 (ここでは青点)
2-2. 2個目を選ぶ。
そのために、
各データ点が2個目の代表点に選ばれる確率を算出。
確率の定義は
青点との距離の2乗 / 青点と各データ点との距離の 2乗の和
k-means++君
k-means++法
2-3. 2-2と同じ方法で3点目の重心を選ぶ。
※この時、すでに重心が2個ある。
この場合、各データ点と近い方の重心の値が
重心に選ばれる確率の計算時に使われる。
例えば、この点が第三の重心に選ばれる確率を算出する際、 (青ではなく)
緑点との距離の2乗 / 緑点と各データ点との距離の 2乗の和 を使う
k-means++法
2-3を、定義したクラスタ数分の
重心が定まるまで繰り返す。
第三ノ重心、君ニ決メタ !
k-means++君
k-means++法
こうして、初期の重心の位置が決まる。
うまーく距離をとれているはず。
それ以降はk-means法と同じ。
k-means++君
ああいう残念な
クラスタリングになるのを避け
られるんやな
k-means++法
以上がk-means++法でした。
k-meansでの失敗、すなわち初期の代表点が近接してしまうことを
回避しやすそうですね。
ここからk-meansとk-means++の
アルゴリズムとしての差を感じられると幸いです。
k-means++君
k-means
君
やるやん
k-meansが失敗するケース
(さらに)
人力のクラスタリング vs k-means
ケース1:
右図のデータ点があり、
3つのクラスターに分けるなら?
右図のとおりに分けますよね?
※色の違いはクラスターの違いを示す
3つの塊に分ける
人力のクラスタリング vs k-means
ところが
k-means君が分けると..
残念な結果になりました
k-means
君
ワタシハ
アルゴリズムドオリニ
ヤリマシタ
人力のクラスタリング vs k-means
ケース2:
こちらはどうでしょうか。
楕円3つに分ける
人力のクラスタリング vs k-means
ところが
k-means君が分けると...
k-means
君
アルゴリズムドオリニ
ヤリマシタッテバ
人力のクラスタリング vs k-means
ケース3:
左下と右上に外れ値がある
クラスタ数を3とすると?
真ん中3つに分ける
外れ値はクラスタから
外す
人力のクラスタリング vs k-means
k-means君は左下の外れ値で
1クラスタ消費しました
一方、中央部は2クラスタに。
k-means
君
アルゴリズムドオリデ
ナニガワルインデスカ
ウエーン
なぜ直感に反するクラスタリングになるのか?
ケース1, 2の理由:
k-meansのアルゴリズムには仮定があります
データセットがその仮定を満たさなかったためです
仮定1. クラスタ同士の密度は同じ
(面積あたりのデータ点の数はクラスタ間で同じ)
仮定2. クラスタは球体である
(楕円ではない)
なぜ直感に反するクラスタリングになるのか?
ケース3の理由:
k-meansは外れ値に弱いです
(理由になってませんが)
解決策の1つは、学習前に外れ値を除去すること
なぜ直感に反するクラスタリングになるのか?
以上が失敗ケースです
k-meansの限界をおわかりいただけたでしょうか。
あらゆるデータセットをクラスタリングしてくれるとは
限りません。
そのため、データを工夫するか、
k-means以外のアルゴリズムを使う必要性が発生します。
さいごに
これで終わりです
最初に掲げたメインテーマを達成できていたら幸いです。
機械学習でアルゴリズムを選定するモチベを理解する
k-meansによる残念な結果 を見る
1つのアルゴリズムの限界 を知る
↓
他のアルゴリズムを探す必要性 を感じる
参考
アルゴリズムの解説動画。短いが、めっちゃ分かりやすい
https://youtu.be/4qJWhvFQb9g?si=jcrJ2sZcCnnO9ZSF
k-meansがどういう前提条件のもとで失敗するかがわかる論文
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5036949/

勉強メモ_なぜ機械学習でのアルゴリズムの選定をするのか?_k-means法を例として