【圖像處理】-034 knn算法
在讀matting文獻的時候,讀到了knn matting,該算法在摳圖之後的效果還可以,在後面的深度摳圖時常用語製作訓練樣本的mask。這裏,先對knn進行簡單介紹。
1 原理
knn算法,又稱爲k最近鄰(k nearest neighbor)算法,是機器學習和數據挖掘中常用的一種分類算法。所謂K最近鄰,是指K個最近的鄰居的意思,說的是每個樣本可以用最接近的K個鄰居的屬性來代表。
KNN算法的核心思想是,如果一個樣本在特徵中間中的K個最相鄰的樣本中的大多數屬於某一個類別,那麼這個樣本也屬於這個類別,並且具有這個類別上樣本的特性。
該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。
kNN方法在類別決策時,只與極少量的相鄰樣本有關。由於kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更爲適合。
2 優劣勢
KNN算法適合於處理維度不高的數據,對於高維數據,由於每次計算時都需要遍歷以往的樣本計算距離,因此,計算量相當大。對於高維大數據量的處理不夠便捷。
3 實現步驟
在訓練集中數據和標籤已知的情況下,輸入測試數據,將測試數據的特徵與訓練集中對應的特徵進行相互比較,找到訓練集中與之最爲相似的前K個數據,則該測試數據對應的類別就是K個數據中出現次數最多的那個分類,其算法的描述爲:
-
1)計算測試數據與各個訓練數據之間的距離;
-
2)按照距離的遞增關係進行排序;
-
3)選取距離最小的K個點;
-
4)確定前K個點所在類別的出現頻率;
-
5)返回前K個點中出現頻率最高的類別作爲測試數據的預測分類。