【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