knn原理
訓練元組用
n個屬性描述,每個元組代表
n維空間中的乙個點,所有的訓練元組存放在
n維的模式空間。當給定乙個未知元組時,搜尋該模式空間,找出最接近未知元組的
k個訓練元組。未知元組指派到它的
k個最近鄰中的多數類。「鄰近性」用距離度量,如歐幾里德距離。
knn演算法中的細節處理
•數值屬性規範化:將數值屬性規範到0-1區間以便於計算,也可防止大數值型屬性對分類的主導作用。
可選的方法有:v'= (v - vmin)/ (vmax - vmin),當然也可以採用其它的規範化方法
•比較的屬性是分類型別而不是數值型別的:同則差為0,異則差為1.
有時候可以作更為精確的處理,比如黑色與白色的差肯定要大於灰色與白色的差。
•缺失值的處理:取最大的可能差,對於分類屬性,如果屬性a的乙個或兩個對應值丟失,則取差值為1;
如果a是數值屬性,若兩個比較的元組a屬性值均缺失,則取差值為1,若只有乙個缺失,另乙個值為v,則取差值為|1-v|和|0-v|中的最大值
•確定k的值:通過實驗確定。進行若干次實驗,取分類誤差率最小的k值。
•對雜訊資料或不相關屬性的處理:對屬性賦予相關性權重w,w越大說明屬性對分類的影響越相關。對雜訊資料可以將所在的元組直接cut掉。
knn演算法流程
•準備資料,對資料進行預處理
•選用合適的資料結構儲存訓練資料和測試元組
•設定引數,如k
•維護乙個大小為k的的按距離由大到小的優先順序佇列,用於儲存最近鄰訓練元組
•隨機從訓練元組中選取k個元組作為初始的最近鄰元組,分別計算測試元組到這k個元組的距離,將訓練元組標號和距離存入優先順序列
•遍歷訓練元組集,計算當前訓練元組與測試元組的距離,將所得距離l與優先順序佇列中的最大距離lmax進行比較。若l>=lmax,則捨棄該元組,遍歷下乙個元組。若l< lmax,刪除優先順序佇列中最大距離的元組,將當前訓練元組存入優先順序佇列。
•遍歷完畢,計算優先順序佇列中k個元組的多數類,並將其作為測試元組的類別。
•測試元組集測試完畢後計算誤差率,繼續設定不同的k值重新進行訓練,最後取誤差率最小的k值。
knn的優缺點
優點:原理簡單,實現起來比較方便。支援增量學習。能對超多邊形的複雜決策空間建模。
缺點:計算開銷大,需要有效的儲存技術和並行硬體的支撐。
knn演算法的改進策略
•將儲存的訓練元組預先排序並安排在搜尋樹中(如何排序有待研究)
•並行實現
•部分距離計算,取n個屬性的「子集」計算出部分距離,若超過設定的閾值則停止對當前元組作進一步計算。轉向下乙個元組。
•剪枝或精簡:刪除證明是「無用的」元組。
該演算法比較適用於樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域採用這種演算法比較容易產生誤分
KNN K近鄰 分類演算法
knn演算法是機器學習中最基本演算法之一,屬於惰性學習演算法的典例。惰性指模型僅通過對訓練資料集的記憶功能進行 而不產生判別函式。knn演算法本身很簡單,歸納為如下幾步 選擇近鄰數量k和距離度量的方法 找到待分類樣本的k個最近鄰 根據最近鄰類標進行多數投票 k近鄰演算法的k,近鄰個數。一般的根據經驗...
KNN K最近鄰演算法 例項應用
knn演算法是尋找最近的k個資料,推測新資料的分類 通用步驟 計算距離 常用有歐幾里得距離 馬氏距離 公升序排序 取前k個 加權平均 k的選取 資料分析與預處理 m 惡性 b 良性 其他資料為判斷良性 惡性的依據 劃分資料集 取資料的1 3作為測試集,2 3作為訓練集 import random i...
第九章 KNN(K最近鄰分類演算法)
1 惰性學習法 說到惰性學習法,就要提到急切學習法。急切學習法 給定訓練集,在接收待分類的新元祖 如檢驗元組 之前,就構造泛化 即分類 模型。如 決策樹歸納 貝葉斯分類 基於規則的分類 後向傳播分類 支援向量機和基於關聯規則挖掘的分類等。惰性學習法 也稱為基於例項的學習法 給定乙個訓練元組,簡單地儲...