第一個問題就是k值的選取問題?ide
怎麼快速找到k個鄰居,尤爲是在特徵空間維數大及訓練數據容量大時尤爲必要。學習
(1)k值的問題:當k值很小的時候,就至關於在較小的領域中訓練實例進行預測,學習的近似偏差會減少,只有與輸入實例較近的訓練實例纔會對預測結果起做用(反過來想,離的越近,確定越類似,離得越遠,類似度就差很大)。但缺點是學習的估計偏差會增大,預測結果會對近鄰的實例點很是敏感,若是近鄰的實例點恰巧是噪聲,預測就會出錯。(有噪聲,就比較複雜),模型越複雜,越容易發生過擬合ci
若是選擇較大,就至關於用較大領域中的訓練實例進行預測。其優勢是能夠減小學習的估計偏差it
k越大,這時與輸入實例較遠的訓練實例也會對 (能夠下降噪聲)就意味着總體模型變得簡單class
通常來講k值是經過交差驗證法來得到的。通常取k值小於sqrt(n)搜索
(2)如何快速的搜索K個鄰居?im
KD樹是一種很好的辦法數據