3. k近鄰學習

簡介

給定測試樣本,基於某種距離度量找出訓練集中與其最
靠近的k個訓練樣本,然後基於這k個” 鄰居”的信息來進行預測.也可基於距離遠近進行加權平均/投票, 距離越近的樣本權重越大.
分類: 投票法, 選擇k個樣本中出現最多的類別標記作爲預測結果, 可以取多類.
迴歸: 平均法, 將這k個樣本標記值的平均值作爲預測結果

懶惰學習: k近鄰學習沒有顯式的訓練過程, 此類學習技術在訓練階段僅僅是把樣本保存起來, 訓練時間開銷爲0, 待收到測試樣本再進行處理.

k近鄰法三要素: 距離的度量, k值的選擇, 分類決策規則

定義
1.png

距離度量
Minkowski(閔可夫斯基)距離
設特徵空間X是n維實數向量空間Rn,xi,xjX,xi=(xi1,xi2,...,xin),xj=(xj1,xj2,...xjn)
xi,xjLp (即閔可夫斯基)距離爲:

Lp(xi,yj)=(l=1n|xilxjl|p)1p,(p1)

當p=1時, 稱爲曼哈頓距離: L1(xi,xj)=l=1n|xilxjl| , 差的絕對值之和
當p=2時, 稱爲歐式距離: L2(xi,xj)=(l=1n|xilxjl|2)12 , 差的絕對值平方和再開方, (均方誤差)
當p= 時, 稱爲切比雪夫距離: L(xi,xj)=maxl(xilxjl) , 各個座標距離的最大值

2.png

k值選擇
1. 較小的k值: 用較小的鄰域中的訓練數據進行預測, 學習的近似誤差減小, 只有與輸入實例相近的(相似的)訓練實例纔會對預測結果起作用. 但學習的估計誤差會增大, 預測結果會對鄰近的實例點(如噪聲)非常敏感. 過小的k值意味着整體模型變得複雜, 容易發生過擬合
2. 較大的k值: 用較大的鄰域中的訓練數據進行預測, 學習的近似誤差增大, 但估計誤差會減小. 與輸入實例較遠的(不相似的)訓練實例也會對預測結果起作用.
3. 應用中k值一般取一個比較小的值, 通常採用交叉驗證法來選取最優的k值

分類決策
1. 多數表決: 由輸入實例的k個近鄰的訓練實例中的多數類決定輸入實例的類
對於給定的實例xX , 其最近鄰的k個訓練實例點構成的集合Nk(x) , 如果涵蓋Nk(x) 的區域類別是cj
那麼誤分類率: 1kxiNk(x)I(yicj)=11kxiNk(x)I(yi=cj)

其中: I(expr)={1expr==true0expr==false

所以xiNk(x)I(yi=cj) 代表集合Nk(x)yi==cj 的元素的數量
xiNk(x)I(yicj) 代表集合Nk(x)yicj 的元素的數量
要試誤分類率最小, 即使xiNk(x)I(yi=cj) 最大. (多數表決)

實現

一般方式
線性掃描, 計算輸入實例與每一個訓練實例的距離

kd樹
1. 構造kd樹
3.png

  1. kd樹搜索(最近鄰搜索)
    4.png

kd樹搜索的平均計算複雜度是O(logN), 這裏N是訓練實例數. kd樹更適合訓練實例數遠大於空間維數時的k近鄰搜索. 當空間維數接近訓練實例時, 它的效率會迅速下降, 幾乎接近線性掃描.

KNN擴展
構造kd樹時順序(或隨機)取特徵, 改進算法取特徵分佈最廣(即方差最大)的緯做劃分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章