【Rによるデータサイエンス】非線形判別分析 〜 多数決による判別分析 〜 k最近傍法(k最近隣法,k-NN法)

【Rによるデータサイエンス】非線形判別分析」では、線形判別分析の欠点を簡単に紹介して、非線形判別分析の判別関数による分析について勉強した。

今回は、多数決による判別分析の方法として、k最近隣法を勉強する。

【定義】
k最近隣法とは。。。

k最近隣法とは、判別すべき個体周辺の最も近いものをk個見つけ、そのk個の多数決により、どのグループに属するかを判断する方法。

距離の測度としては、一般的にはユークリッド距離を用いる。
判別を行うときに記憶しておいたデータとの距離(類似度)を求めることが必要なため、記憶ベース推論(memory-based reasoning)法とも呼ばれている。

ケーススタディ
Rのパッケージclassに、k最近隣法の関数knnが含まれている。

> library(class)
> iris.knn<-knn(iris.train[,-5],iris.test[,-5],iris.train[,5],k=5)
> (table(iris.knn,iris.test[,5]))
        
iris.knn  C  S  V
       C 24  0  0
       S  0 25  0
       V  1  0 25

対散布図にご判別された個体を異なる色で表す。

> pairs(iris.test[,1:4], pch=as.character(iris.test[,5]),col=c(3,2)[(iris.test$Species != iris.knn)+1])

◎結果の考察〜交差確認法
交差確認法(leave-one-out cross validation)によるk最近隣法の関数knn.cvを使用する。

> iris.cv<-knn.cv(iris[,-5],iris[,5],k=5)
> table(iris[,5],iris.cv)
            iris.cv
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         47         3
  virginica       0          2        48