機器學習-KNN算法
阿新 • • 發佈:2018-07-07
訓練集 nbsp 線性分類 但是 測試 優點 http 進行 inf
原理
KNN算法,又叫K近鄰算法。就是在訓練集中數據和標簽已知的情況下,輸入測試數據,將測試數據的特征與訓練集中對應的特征進行相互比較,找到訓練集中與之最為相似的前K個數據,則該測試數據對應的類別就是K個數據中出現次數最多的那個分類,其算法的描述為:
- 1)計算測試數據與各個訓練數據之間的距離;
- 2)按照距離的遞增關系進行排序;
- 3)選取距離最小的K個點;
- 4)確定前K個點所在類別的出現頻率;
- 5)返回前K個點中出現頻率最高的類別作為測試數據的預測分類。
三要素:
- k值的選擇
- 距離的度量(常見的距離度量有歐式距離,曼哈頓距離等)
- 分類決策規則 (多數表決規則)
k值的選擇
- k值越小表明模型越復雜,更加容易過擬合
- 但是k值越大,模型越簡單,如果k=N的時候就表明無論什麽點都是訓練集中類別最多的那個類
所以一般k會取一個較小的值,然後用過交叉驗證來確定
這裏所謂的交叉驗證就是將樣本劃分一部分出來為預測樣本,比如95%訓練,5%預測,然後k分別取1,2,3,4,5之類的,進行預測,計算最後的分類誤差,選擇誤差最小的k
KNN的回歸
在找到最近的k個實例之後,可以計算這k個實例的平均值作為預測值。或者還可以給這k個實例添加一個權重再求平均值,這個權重與度量距離成反比(越近權重越大)。
優缺點:
KNN算法的優點:
- 思想簡單,理論成熟,既可以用來做分類也可以用來做回歸;
- 可用於非線性分類;
- 訓練時間復雜度為O(n);
- 準確度高,對數據沒有假設,對outlier不敏感;
缺點:
- 計算量大;
- 樣本不平衡問題(即有些類別的樣本數量很多,而其它樣本的數量很少);
- 需要大量的內存;
機器學習-KNN算法