機械学習記8日目 ~ k近傍法

 今日は機械学習アルゴルズムを使って、初めての「機械学習」に挑戦します。利用するアルゴリズムは、「k近傍法」です。

 

 k近傍法(k-Nearist Neighbor algorithm)は、機械学習において「教師あり学習」で、分類問題を解くためのアルゴリズムです。

 

 分類問題とは、学習データを「クラス」と呼ばれるグループに分類しておき、テストデータがどのクラスに分類されるかを予測する手法のことです。

 

 なぜ、k近傍法を最初に試そうと思ったのか。1つはアルゴリズムが単純で分かりやすかったからです。もう1つは、機械学習の入門書に必ず登場するアルゴリズムだったからです。

 

 では、k近傍法を使った学習モデルが、どのように予測を行うかを説明します。まず最初に、学習データをベクトル空間上に正解ラベルと共に配置します。教師あり学習なので、正解ラベルが必要です(図1)。

 

f:id:hackU0001:20190227130711p:plain

図1.k近傍法の考え方(その1)

 

 次に、与えられたデータを「特徴ベクトル」として、それぞれ近い場所にある正解ラベルのデータを使ってクラスに分類します(図2)。

f:id:hackU0001:20190227132050p:plain

図2.k近傍法の考え方(その2)

 

これが、k近傍法の土台となる学習モデルになります。次に、正解ラベルを知らせずに、予測したいデータを学習モデルに与えます(図3)。

f:id:hackU0001:20190227134119p:plain

図3.k近傍法の考え方(その3)

 

 学習モデルは、与えられたデータと存在するクラスとの近さ ( 距離 ) をもとに、そのデータがどのクラスに属するかを予測します。k近傍法では、「最も近いk個の点がどのクラスに一番多く存在するか」をもとに、属するクラスを決定します。

 例えばkが6だったとすると、予測したいデータはクラス3に属することになります(図4)。

f:id:hackU0001:20190227140520p:plain

図4.k近傍法の考え方(その4)

 

 ただし、この場合のkは任意なので、変更すると予測結果が変わる場合があります。例えば、kを12にした場合、予測したいデータは、クラス1に分類されます ( 図5 ) 。

 そこで、kの値は予測した結果の正解率から最適な個数を求めます。

f:id:hackU0001:20190227142709p:plain

図5.k近傍法の考え方(その5)