KNN-筆記(1)

1 - 背景

KNN:k近鄰,表示基於k個最近的鄰居的一種機器學習方法。該方法原理簡單,構造方便。且是一個非參數化模型。
KNN是一個「懶學習」方法,也就是其自己沒有訓練過程。只有在對測試集進行結果預測的時候纔會產生計算。KNN在訓練階段,只是簡單的將訓練集放入內存而已。該模型能夠當作是對當前的特徵空間進行一個劃分。當對測試集進行結果預測時,先找到與該測試樣本最接近的K個訓練集樣本,而後基於當前是分類任務仍是迴歸任務來作對應的處理。html

KNN模型中有三個須要注意的地方:
1 - 距離度量的方法;
2 - K值的選擇;
3 - 最後的判別決策規則。算法

如上面第三個,較爲簡單的判別決策規則爲:
1)分類任務,那麼找這K個訓練集樣本中出現次數最多的那個標籤做爲該測試樣本標籤,以下圖:
數據結構


圖1.1 周老師西瓜書圖10.1

2)迴歸任務,基於這K個訓練集樣本求均值,將其做爲該測試集樣本的結果。

不過KNN正是由於基於K個近鄰進行測量的方法,因此其出問題也就在這裏,由於該模型不適合做爲高特徵維度下的選擇。由於它會遇到維數災難的問題。舉個例子,假如當前數據集是均勻分佈在一個D維特徵的空間中的,假設咱們須要計算測試樣本\(x\)周邊一個區域上的類別標籤密度,那麼咱們指望基於足夠大的區域範圍的數據才能獲得合理的結果,那麼對應的邊界長度公式爲:
\[e_D(f) = f^{1/D}\]
也就是假如維度爲\(D=10\),咱們想評估10%的類別標籤密度,那麼每一個維度上所需長度爲\(e_{10}(0.1) = 0.8\),也就是咱們須要每一個維度上80%的長度範圍內的數據,即便咱們只須要估計1%的標籤密度,咱們每一個維度上的長度也是\(e_{10}(0.01)=0.63\)
app


圖2.2 mlapp上圖1.16(b)

當維度爲2,且樣本可以無限多,那麼該模型表現纔是最好的(Cover and Hart 1967)。因此按道理,高維數據其實不適合KNN[]

不過幸運的是, 有一個效應能夠在必定程度上抵消維度災難, 那就是所謂的「 非均勻性的祝福」(blessing of nonuniformity) 。
在大多數應用中, 樣例在空間中並不是均勻分佈, 而是集中在一個低維流形manifold) 上面或附近。 
這是由於數字圖片的空間要遠小於整個可能的空間。 學習器能夠隱式地充分利用這個有效的更低維空間, 也能夠顯式地進行降維。[]

2 距離度量

KNN中最經常使用的方法就是歐式距離計算法,固然也有\(L_p\)距離和馬氏距離等等。
假設樣本的特徵空間\(\chi\)\(n\)維實數的向量空間\(\bf R^n\)\(x_i,x_j\in\chi\),$x_i=(x_i^{(1)}, x_i^{(2)}, ..., x_i^{(n)} ) \(,\)x_j=(x_j^{(1)},x_j^{(2)},...,x_j^{(n)})\(,那麼\)x_i,x_j\(的\)L_p$距離定義爲:
\[L_p^{(x_i,x_j)}=(\sum_{l=1}^n|x_i^{l}-x_j^{l}|^p)^{\frac{1}{p}}\]
這裏\(p\geq1\),
\(p=2\)時,稱爲歐式距離;
\(p=1\)時,稱爲曼哈頓距離;
\(p=\infty\)時,是各個座標距離的最大值,即:
\[L_\infty(x_i,x_j)={max}_l|x_i^{(l)}-x_j^{(l)}|\]
less


圖2.1 李航統計學習方法圖3.2

上圖爲在2維狀況下到原點的距離爲 \(L_p=1\)的點構成的範圍圖

3 K值選取

K值的選擇會對KNN模型的結果產生重大影響。這就是一個模型選擇問題。
模型選擇:假設當前是一個KNN迴歸問題。如今是須要對點\(x_0\)進行\(\hat f_k(x_0)\)擬合,假設該樣原本自函數\(Y=f(X)+\epsilon\), 這裏\(E(\epsilon)=0\), 且\(Var(\epsilon)=\sigma^2\)。爲了簡化問題,假設訓練樣本中\(x_i\)的值是固定的,那麼在測試樣本點\(x_0\)的指望預測偏差也叫作測試或泛化偏差,如:
\[\begin{eqnarray} EPE_k^{(x_0)} &=& E[(Y-\hat f_k(x_0))^2|X=x_0]\\ &=& \sigma^2+[Bias^2(\hat f_k(x_0))+Var(\hat f_k(x_0))]\\ &=& \sigma^2+[f(x_0)-\frac{1}{k}\sum_{l=1}^kf(x(l))]^2+\frac{\sigma^2}{k} \end{eqnarray}\]
第一項叫作不可避免的偏差,是咱們不可控制的,第二項和第三項是咱們可以控制的,分別對應着模型的偏置和方差。偏置隨着K變大而變大,方差隨着K變大而變小。即K越大,模型越簡單,K越小,模型越複雜:
機器學習


圖2.2 esl書上的圖2.11

4 搜索優化

實現KNN模型時,主要考慮的還有個問題是如何對訓練集的樣本點進行快速的K近鄰搜索。當特徵空間維度太大,或者訓練集樣本點不少的時候特別重要。最基礎的搜索方法就是線性搜索了,可想而知每一個測試樣本在比較時,都須要去計算一遍訓練集的全部樣本。效率着實不高。因此才須要量身定作的數據結構搜索方法。函數

4.1 - KD樹

見這裏學習

4.2 - Ball樹

(待續)
參考資料:
[] Machine Learning A Probabilistic Perspective
[] 李航,統計學習方法
[] The Elements of Statistical Learning Data Mining, Inference, and Prediction (Second Edition)
[] Pedro Domingos,A Few Useful Things to Know About Machine Learning
[] 以葉子爲數據的http://www.cnblogs.com/lysuns/articles/4710712.html
[] http://blog.csdn.net/likika2012/article/details/39619687測試

相關文章
相關標籤/搜索