無參估計(上):KNN(K nearst neighbor)
無參估計:根據直方圖定義概率公式:,其中V:the volume surrounding X,N:the total number of examples
k:the number of the example inside V.
我們將無參估計分為兩類:
- 固定V,求解k (KDE)
- 固定k,求解V(kNN)
本講圍繞kNN展開。
依舊從,我們對V進行定義:,其中R是點x與k個臨近點之間的距離。C是D維中單元範圍的大小。
定義為。我們想將knn密度估計作為貝葉斯分類器:
- 定義先驗概率(prior):(表示屬於w類的樣本與總樣本數的比值)
- 定義(在V約束下,來自w的樣本數k與來自w的總樣本數N的比值)
- 根據貝葉斯公式:
- 以上為用knn做貝葉斯分類的過程
下面撇開無參估計,對KNN進行介紹。
1.演算法敘述
k近鄰是利用訓練資料對特徵特徵空間進行劃分,並作為其分類的模型。k近鄰三要素:
- k值的選擇
- k值大,意味著模型簡單。也就是說資料點在離聚類中心很遠的時候,依舊可以歸類。這樣一來,近似誤差會變大,不那麼相似的資料點也會被歸類。
- k值小,意味著模型複雜。也就是說只有離聚類中心很近,才可以歸類。這樣一來,估計誤差會變大,如果周圍出現噪聲,預測會出錯。
- k值一般會選取一個較小的值,然後利用交叉驗證集進行選取最優的k值。
- 距離度量
目前常用的有三種:
- 歐式距離p=2
- 曼哈頓距離p=1
- p=無窮大(計算出各個維度的絕對值之後,取其中的最大值)
- 分類決策規則
多數表決:資料中的多數決定最後的類。
這種表決方法滿足經驗風險最小化,p(非x)=1-p(x),如果p(非x)代表錯分類的概率,那麼使得其最小即p(x)最大,也就是多數決策。
2.實現方法
給定一個輸入x,在訓練集上找到與其最鄰近的k個點(在前面的訓練中我們已經確定了訓練集中每個點屬於哪個類,標記為N(k)。
然後分別在N(k)上,使用已經定義好的距離度量來計算每個類的N(k)上的點與x的距離之和,取距離之和最大的那一個類。
我們一般用kd樹來實現這個過程。
例子:給定一個二維空間的資料集:
構造一個平衡kd樹。
首先我們需要進行特徵空間劃分:
step1:在二維空間中繪畫出點。
step2:按照維進行劃分。選的中位數繪製超平面。這二維空間中,則是繪製一條直線。
在本例中,則是(2,5,9,4,8,7)的中位數。(x1,x2)中x1。
step3:對於深度為j的節點,選擇為切分的座標軸。l=j(mod k)+1。
在本例中,為二維空間。l屬於{1,2}。至於深度,根據樹的深度定義,
根節點(劃分的第一個節點深度為1)依次類推不斷加深。本次,j=1,k=2
則l=2,則第二次劃分以為座標軸。左平面,(3,4,7)中位數為3
在右平面,中位數為6.
step4:重複以上步驟。節點(2,3)、(4,7)深度為2,則2mod2+1=1;
則以為軸進行劃分。(8,1)同理。
根據特徵空間劃分:
第一次劃分為根節點,依次類推。
3.K近鄰搜尋:
比如:搜尋點W:
step1:確定目標X,以及包含X的葉節點。通過將X放在特徵空間,即可確定葉節點。比如在圖中,W放在特徵空間中,則可以看到葉節點為D.以D作為最近鄰,真正的最近鄰一定在以S為中心的圓中。
step2:退回到該葉節點的父節點,在該父節點的另一個子節點上搜索最近鄰。在本例中,即在退回到B節點,在E節點周圍查詢最近鄰。該節點與區域圓相交,但是其實B節點比D節點更近,則B為最近鄰。
step3:重複以上過程,直到把所有相交區域查完為止。