全2530文字
PR

実用的なソフトウエアを開発するにはアルゴリズムの知識は欠かせない。基礎から機械学習まで、厳選した10個のアルゴリズムをPythonによる実装とともに解説する。

[9 機械学習] k近傍法

 「k近傍法」は、機械学習の「教師あり学習」の中で、最も簡単なアルゴリズムの一つです。あるデータがどのグループに属しているのかを推測するために使います。

 k近傍法の処理の流れは、次の通りです。

  • (1)どのグループに属しているのかわからない未知のデータの“近く”にある「教師データ」を、近い順にk個取り出す。
  • (2)取り出したk個の教師データそれぞれが、どのグループに属しているのかを集計する。
  • (3)取り出した教師データが最も多く属しているグループを、未知のデータが属するグループとする。

 2つのデータの近さは、三平方の定理から計算する「ユークリッド距離」(図1)や、すでに紹介したコサイン類似度などを使って測定します。

図1●ユークリッド距離の計算式
図1●ユークリッド距離の計算式
[画像のクリックで拡大表示]

 教師データとは、機械学習の根拠となるデータで、「正解ラベル」を持ったデータのことです。

 kの値は人間が決めなければなりません。kの値によって結果が変わってくるので、慎重に検討する必要があります。このような、人間が決める変数は「ハイパーパラメータ」と呼ばれます。

 コサイン類似度のところで使ったお得意さんのデータの例でk近傍法を試してみましょう。今回は、長年のお得意さん12人の香水とネクタイの年間売り上げのデータに、性別も付いています(表1)。この表1を教師データとして使います。ここでは、性別を正解ラベルとします。

表1●これを教師データとして使う
表1●これを教師データとして使う
[画像のクリックで拡大表示]