一、分類算法中的學習概念
因為分類算法都是有監督學習,故分為以下2種學習。
1、
急切學習:在給定的訓練元組之后、接受到測試元組之前就構造好分類模型。
算法有:貝葉斯、基於規則的分類(決策樹)、向后傳播分類、SVM(支持向量機)、基於關聯規則挖掘的分類。
2、
懶惰學習:直到給定一個測試元組才開始構造分類模型。也稱為基於實例的學習法。
算法有:KNN。
二、KNN的特點
優點:實現方便、支持增量學習、能對超多邊形的復雜決策空間建模
缺點:計算量開銷大、大規模存儲支持。
三、KNN算法原理
非常簡單、就是在測試元組中找和訓練元組向量空間上最接近的K個點中,類別最多的那個分類。
向量空間距離無非那么幾種:歐式、閔科夫斯基、曼哈頓等。
四、KNN算法的細節
1、注意屬性在向量空間的規范化、規范化公式和聚類[0,1]規范化公式一樣。
2、比較的屬性如果是2元變量或者分類變量,
設定好差值。(注意最大差區間仍要在規范化空間內部)
3、確實屬性值的處理:
① 分類(2元變量)變量直接設置差值為規范化空間的最大值。
② 數值類型屬性 若:
Ⅰ:2個元組對應屬性均缺失,差值直接為規范化空間最大值。
Ⅱ:如果只有一個缺失,另一個取值為V,則距離差值為|1-V| 和
|0-V| 的最大值 (即Max(|規范化空間的上下界-V|))
4、確定K的值:通過對樣本的實驗(多次和人工結合),取出誤差最小的分類結果。
5、對噪聲的處理:在訓練的過程中對噪聲的元組直接Kill掉。
五、KNN算法的單機實現
1、准備訓練數據、對數據預處理和訓練:(具體實驗和人工干預具體分析)
2、存儲訓練數據的結果
3、預處理測試數據
4、通過訓練數據得到參數K
5、維護一個大小為K的PriorityQueue用於存儲最近的KNNNode
6、隨機從訓練元組中選出K個元素計算好測試元素和這個訓練元素的距離並且記錄訓練元組的組編號放入優先隊列(優先堆)中。
7、遍歷整個訓練元組數據集合,如果測試距離小於優先隊列的對頭元素的距離。則移除對頭、並且壓入這個新的KNNNode,然后從新保持優先隊列順序。
8、遍歷完成后,計算最大的分組的組號。則測試元組屬於這個分組。
六、KNN算法的分布式實現
MAHOUT源碼稍后補充。