機械学習

k近傍法

  • このエントリーをはてなブックマークに追加
  • LINEで送る

こんにちは!

今回はk近傍法というクラス判別の手法をご説明します!

アルゴリズムも非常に分かりすく使いやすいk近傍法についてみていきましょう!

k近傍法とは

k近傍法とはデータを分類する時に活躍する手法です。

ある未知データが与えられたとき、周りの学習データのクラスからその未知データの分類を決定するもの。

そしてkとは手法に与えるパラメーターで、近くに存在する学習データのクラス数を示しています。

たとえば、このような状況では

k=3なので未知データの周りの3つのデータを判断材料とします。

実際に見てみると、青〇のクラスが2つ、緑△のクラスが1つなので、未知データは青〇と判断されます。

続いてこのkを5にするとどうなるでしょう?

k=5なので周りの5個を判断材料とします。

実際に見てみると、青〇のクラスが2つ、緑△のクラスが3つなので、未知データは緑△と判断されます。

kの値を変えることで分類されるクラスが変わりましたね!

今回挙げた例は非常に分類が難しい例であり、このような場合はそれほど多くありませんが、kの値によって分類されるクラスが変わる可能性はあるよ!というお話でした。

ちなみにRで解析する時はclassパッケージのknnという関数を使うと良いでしょう!

この時デフォルトではk=1になっています。すなわちこれは、近くの1つしか判断材料に入れないということ。

これは最近傍法というk近傍法の特殊な例になってしまい局所最適に陥りやすいです。

あまりにも大きすぎるkの値は不均衡データに対して上手く分類できなくなってしまう可能性もありますが、ある程度大きい値にした方が良いでしょう!

個人的には5が推奨です。解析の時は大抵5を選択していました。

k近傍法の識別規則

それでは、具体的にk近傍法の識別規則について数式で見ていきましょう!

\begin{eqnarray}
\left\{
\begin{array}{l}
j&…&((k_j)=max(k_1,…,k_K)の時)\\
reject&…&((k_1,…,k_j)=max(k_1,…,k_K)の時)\\
\end{array}
\right.
\end{eqnarray}

非常に簡単な数式になりました!

この時\(k_i\)は近傍kのうち、クラスiに属するデータ数を表しています。

近傍kの中でも最もクラスjに属するデータが多いときそのデータをjと識別します。

最もデータ数が多いクラスが多数存在する場合は識別不能となります。

k近傍法は非常に分かりやすいアルゴリズムなのでとっかかりやすいです!

Rでパッケージで一発で出来ちゃうんで使ってみましょう!

参考図書

ちなみにk近傍法に関しては、機械学習の王道本「はじめてのパターン認識」で取り上げていますのでそちらを読んで理解を深めると良いでしょう!

 

  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*

CAPTCHA