機器學習 最近鄰策略 k means和KNN

2021-07-10 16:35:17 字數 1433 閱讀 3887

假設我們已經利用一堆樣本進行了訓練,得到了k個分類和k個分類的重心,那麼對於待測資料x』,計算x』到k個分類重心的距離,距離最近的分類y『即為x』的分類。這是最近鄰策略的基本思路,從中衍生了k-means和knn方法。如何度量距離是乙個複雜的問題,一般情況下我們習慣使用歐氏距離來表徵分類距離。如果我們要調整n個分類特徵的權重,可以修改距離度量的定義;可以將n個分類特徵變為特徵的函式f(xn),從而衍生出高維特徵。這裡我們預設使用歐式距離。

k均值聚類(k-means):這個方法簡單來說就是給定k個初始樣本點作為k個起始集合(小黑洞),起始集合附近的樣本點被吸引、合併形成新的更大的集合,然後以新集合的重心為中心重新吞併附近的樣本點,直到最近兩次的聚類中心沒有太大變化或者達到最大迭代步數,從而把樣本點集合分成k個集合。該方法的中心思路和em演算法大同小異。

k-means聚類方法的初始化,要求我們事先知道樣本總體有多少個類別。選好起始的k個初始點,對結果有巨大影響。最簡單的方法是隨機取k個點,這個結果隨機性太強。為了得到比較好的結果,我們可以尋找到彼此離得最遠的k個資料點;此外也可以使用canopy和kmeans++方法進行初始化,這裡不記錄。

首先找到最遠的兩個點作為聚類點;接下來計算每個資料點與最近的聚類的距離,而不是每個資料點與所有聚類點距離的總和,然後找出距離最大的點作為第三個點;依次類推。不能使用當前點與所有聚類點的距離之和的原因如圖:

可以看出,當前聚類點旁邊的點,該點與其他所有聚類點的距離之和是最大的,但是該點與離其最近的聚類點的距離是最小的。與所有聚類點都離得比較遠的點,該點與離其最近的聚類點的距離最大。

k最近鄰分類法knn:我們用足夠的訓練樣本,通過諸如k-means的方法訓練得到k個分類的重心和大致範圍,如果待測資料x到第i個分類的距離最小,那麼有理由認為x屬於分類i。

《統計學習基礎》介紹了乙個應用最近鄰策略的手寫英文本元(256×256畫素)識別方法,同時也說明距離度量的定義靈活性相當高。我們已經獲取256×256畫素標準的英文本元,然後對比手寫字元和標準英文本元的匹配程度。手寫字元可能與標準字元相比,可能有大有小有旋轉,有一定扭曲,那麼手寫字元a到標準字元a的匹配程度可能還不如其他字元。這裡書中引入不變性概念:如果我們將標準字元a進行放大縮小、旋轉、扭曲變換,得到a的標準字符集,然後計算同樣變換過的手寫字符集a和b到標準字符集a的最大匹配程度,結果表明a肯定是比b高的。不變性最近鄰方法的計算規模增加了幾十倍,複雜度高,不過計算規模小於神經網路,正確率持平神經網路。

《統計學習基礎》中還提到了自適應最近鄰策略,這個策略會自適應變化每個已分類點的最近鄰搜尋範圍,即精細地改變已分類集合往外合併樣本點的規則。

kmeans.py

機器學習 KNN最近鄰演算法

k近鄰 k nearest neighbor,knn 可以做分類,也可以做回歸。一 基本思想 給定一組訓練集,有乙個需要判斷類別的輸入例項,離輸入例項最近的k個訓練資料屬於哪個類別,就判斷輸入例項屬於哪個類別。二 分類演算法描述 1 計算輸入例項和所有訓練集資料的距離 2 按距離公升序排序 3 選擇...

機器學習 KNN(最近鄰)詳解

k 近鄰演算法原理 k最近鄰 knn,k nearestneighbor 分類演算法,見名思意 找到最近的k個鄰居 樣本 在前k個樣本中選擇頻率最高的類別作為 類別。下面舉個例子,一下大家就會顯而易見了,如下圖 e.g 下圖中,綠色圓要被決定賦予哪個類,是紅色三角形還是藍色四方形?如果k 3,由於紅...

機器學習問與答(七) 最近鄰學習

問題一 還有哪些消極學習的機器學習演算法?knn是使用最多的消極學習的機器學習演算法。此外還有 case based reasoning 案例推理 是一種模擬推理方法,它提供了一種近似人類思維模型的建造專家系統的新的方法學,這與人對自然問題的求解相一致。它強調這樣的思想 人類在解決問題時,常常回憶過...