本文主要梳理KNN,K近鄰模型的基本原理。
從機器學習的大分類來看,K近鄰模型屬于監督學習中的一種判別式模型,常用于分類問題。初始的數據集中,包含了已經分類標簽好的數據。一句話來說,K近鄰模型就是通過計算實例與現有數據集中所有數據的數學距離,從中挑選出K個最近的例子。在這K個例子中,占據大多數的分類就是新的實例的分類。
在使用K近鄰法時,需要注意的就是定義好數學意義上的距離(一般使用歐拉距離)以及選取合適的K值。這個方法作為分類器的優勢在于實現簡單,沒有先行的假設,但其局限性也很明顯,隨著樣本以及數據量的上升,運算成本也是同比例地增加。
有兩種主要的思路,來加速K近鄰法的運算。首先我們可以利用PCA主成分分析,或者LDA線性判別分析來對原始數據進行降維處理,降維后再計算向量之間的距離就可以提高效率。
其次,在實現過程中,我們放棄計算新的實例和每一個數據集中的例子的距離,而是先計算各個分類中所有已知數據的平均值,通過新的實例與這個平均值之間的距離來進行分類,雖然一定程度犧牲了分類的準確性提高了不可避免的誤差,但卻可以大幅度加速我們算法運行的速度。
dE(x,c)=(x?μc)T(x?μc)d_E(x,c) = (x-\mu_c)^T(x-\mu_c) dE?(x,c)=(x?μc?)T(x?μc?)
其中,x 為新的實例,μc\mu_cμc? 是類的中心點,x 被分類為與他歐拉距離最近的類,每個類由他的中心點(平均值)來表示。