資料探勘基礎演算法 KNN最近鄰分類演算法

2022-02-02 20:18:11 字數 1574 閱讀 8213

通過計算待**樣本和已知分類號的訓練樣本之間的距離來判斷該樣本屬於某個已知分類號的概率。並選取概率最大的分類號來作為待**樣本的分類號

懶惰分類演算法,其模型的建立直到待**例項進行**時才開始。

knn演算法的指導思想是「近朱者赤,近墨者黑」,由你的鄰居來推斷出你的類別。

本質上,knn演算法就是用距離來衡量樣本之間的相似度

從訓練集中找到和新資料最接近的k條記錄,然後根據多數類來決定新資料類別。

演算法涉及3個主要因素:

1) 訓練資料集

2) 距離或相似度的計算衡量

3) k的大小

1) 已知兩類「先驗」資料,分別是藍方塊和紅三角,他們分布在乙個二維空間中

2) 有乙個未知類別的資料(綠點),需要判斷它是屬於「藍方塊」還是「紅三角」類

3) 考察離綠點最近的3個(或k個)資料點的類別,占多數的類別即為綠點判定類別

計算步驟如下:

1)算距離:給定測試物件,計算它與訓練集中的每個物件的距離

2)找鄰居:圈定距離最近的k個訓練物件,作為測試物件的近鄰

3)做分類:根據這k個近鄰歸屬的主要類別,來對測試物件分類

距離越近應該意味著這兩個點屬於乙個分類的可能性越大。但距離不能代表一切,有些資料的相似度衡量並不適合用距離

相似度衡量方法:空間上有歐氏距離,路徑上有曼哈頓距離,西洋棋上的一致範數:切比雪夫距離等,還有夾角余弦等。

(簡單應用中,一般使用歐氏距離,但對於文字分類來說,使用余弦(cosine)來計算相似度就比歐式(euclidean)距離更合適)

簡單投票法:少數服從多數,近鄰中哪個類別的點最多就分為該類。

加權投票法:根據距離的遠近,對近鄰的投票進行加權,距離越近則權重越大(權重為距離平方的倒數)

選定訓練集和對應的測試機,然後選取不同的k值,把其中錯誤率最低的k作為分類的k值,當有新的訓練集更新時,我們再執行模型,不斷迭代更新。一般來說k是不超過20的整數。k

一般使用交叉驗證的方式

樣本不平衡容易導致結果錯誤

如乙個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入乙個新樣本時,該樣本的k個鄰居中大容量類的樣本占多數。

改善方法:對此可以採用權值的方法(和該樣本距離小的鄰居權值大)來改進。

計算量較大

因為對每乙個待分類的文字都要計算它到全體已知樣本的距離,才能求得它的k個最近鄰點。

改善方法:事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。

該方法比較適用於樣本容量比較大的類域的分類,而那些樣本容量較小的類域採用這種演算法比較容易產生誤分。

knn是一種懶惰演算法,平時不好好學習,考試(對測試樣本分類)時才臨陣磨槍(臨時去找k個近鄰)。

懶惰的後果:構造模型很簡單,但在對測試樣本分類地的系統開銷大,因為要掃瞄全部訓練樣本並計算距離。

已經有一些方法提高計算的效率,例如壓縮訓練樣本量等,方法有濃縮技術、編輯技術等

資料探勘K近鄰(KNN)演算法

k近鄰演算法是一種基本分類與回歸演算法,是一種監督式學習。基本思想是在距離空間裡,如果乙個樣本的最接近的k個鄰居裡,絕大多數屬於某個類別,則該樣本也屬於這個類別。俗話叫,隨大流 簡單來說,knn可以看成 有那麼一堆你已經知道分類的資料,然後當乙個新的資料進入的時候,就開始跟訓練裡的每個點求距離,然後...

最近鄰規則演算法(KNN)

最近鄰演算法 knn 是乙個基於例項學習的分類演算法。如果乙個例項在特徵空間中的k個最相似 即特徵空間中最近鄰 的例項中的大多數屬於某乙個類別,則該例項也屬於這個類別。所選擇的鄰居都是已經正確分類的例項。演算法步驟 1 把所有分類好的 有標籤label 的資料 例項 作為訓練集 2 選擇好引數k 3...

KNN 最近鄰演算法初探

本文質量不咋地,目的是記錄一下自己的 還有乙個原因是我發現別人的部落格寫的太好了!knn 演算法屬於監督學習的演算法,基本原理是對整個資料整體進行打標籤之後,對乙個新的元素根據其在向量空間中的位置來對其分類。k近鄰演算法是在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,我們就...