R小鹽準備介紹R語言機器學習與預測模型的學習筆記
你想要的R語言學習資料都在這里陨倡, 快來收藏關注【科研私家菜】
01 什么是knn算法
KNN(K-NearestNeighbor)是機器學習入門級的分類算法苫幢,是一種有監(jiān)督算法。
我們有一堆樣本點硼啤,類別已知岭粤,如下圖左回铛,藍色為一類征绸,黃色為另一類。現(xiàn)在有個新樣本點甘有,也就是圖中黑色的叉叉诉儒,需要判斷它屬于哪一類。KNN做的就是選出距離目標點黑叉叉距離最近的k個點亏掀,看這k個點的大多數(shù)顏色是什么顏色忱反。這里的距離怎么定義?當然還是可以用我們的老朋友——歐氏距離來度量滤愕。
給定兩個樣本 X=(x1,x2,...,xn)X=(x_{1},x_{2},...,x_{n})X=(x_{1},x_{2},...,x_{n}) 和 Y=(y1,y2,...,yn)Y=(y_{1},y_{2},...,y_{n})Y=(y_{1},y_{2},...,y_{n}) 温算,其中n表示特征數(shù) ,X和Y兩個向量間的歐氏距離(Euclidean Distance)表示為:
KNN的全稱是K Nearest Neighbors间影,意思是K個最近的鄰居注竿。K個最近鄰居,毫無疑問魂贬,K的取值肯定是至關重要的巩割。那么最近的鄰居又是怎么回事呢?其實啊付燥,KNN的原理就是當預測一個新的值x的時候宣谈,根據(jù)它距離最近的K個點是什么類別來判斷x屬于哪個類別
KNN是一種非參的,惰性的算法模型键科。
非參的意思并不是說這個算法不需要參數(shù)闻丑,而是意味著這個模型不會對數(shù)據(jù)做出任何的假設,與之相對的是線性回歸(我們總會假設線性回歸是一條直線)勋颖。也就是說KNN建立的模型結(jié)構(gòu)是根據(jù)數(shù)據(jù)來決定的嗦嗡,這也比較符合現(xiàn)實的情況,畢竟在現(xiàn)實中的情況往往與理論上的假設是不相符的饭玲。
惰性又是什么意思呢酸钦?想想看,同樣是分類算法咱枉,邏輯回歸需要先對數(shù)據(jù)進行大量訓練(tranning)卑硫,最后才會得到一個算法模型。而KNN算法卻不需要蚕断,它沒有明確的訓練數(shù)據(jù)的過程欢伏,或者說這個過程很快。
KNN算法的優(yōu)勢和劣勢
KNN算法優(yōu)點
- 簡單易用亿乳,相比其他算法硝拧,KNN算是比較簡潔明了的算法径筏。即使沒有很高的數(shù)學基礎也能搞清楚它的原理。
- 模型訓練時間快障陶,上面說到KNN算法是惰性的滋恬,這里也就不再過多講述。
- 預測效果好抱究。
- 對異常值不敏感
KNN算法缺點
- 對內(nèi)存要求較高恢氯,因為該算法存儲了所有訓練數(shù)據(jù)
- 預測階段可能很慢
- 對不相關的功能和數(shù)據(jù)規(guī)模敏感
02 knn算法分類預測實現(xiàn)① class包
train<-iris[index,-5]
test<-iris[-index,-5]
cl<-iris[index,5]#設置類別變量
k<-7#以最近的幾個點來投票
#測試集上的預測
pre_test<-knn(train=train,test=test,cl=cl,k=k,pro=T) #分類結(jié)果
t<-table(iris[-index,5],pre_test)
accu_test<-sum(diag(t))/sum(t) #測試集準確率
#訓練集上的預測
pre_train<-knn(train=train,test=train,cl=cl,k=k,pro=T) #分類結(jié)果
t<-table(iris[index,5],pre_train)
accu_train<-sum(diag(t))/sum(t) #訓練集準確率
效果如下:
03 knn算法分類預測②kknn包
# kknn包可以處理帶有因子型變量的數(shù)據(jù)集
library(kknn)
train<-iris[index,]
test<-iris[-index,]
#測試集上的預測
pre_test<-kknn(Species~.,train, test)
fit_test<- fitted(pre_test) #分類結(jié)果
t<-table(test$Species, fit_test)
accu_test<-sum(diag(t))/sum(t) #測試集準確率
#訓練集上的預測
pre_train<-kknn(Species~.,train, train)
fit_train <- fitted(pre_train) #分類結(jié)果
t<-table(train$Species, fit_train)
accu_train<-sum(diag(t))/sum(t) #訓練集準確率
效果如下:
關注R小鹽,關注科研私家菜(VX_GZH: SciPrivate)鼓寺,有問題請聯(lián)系R小鹽勋拟。讓我們一起來學習 R語言機器學習與臨床預測模型