? ? ? ? KNN算法又稱最鄰近算法灾测,其核心思想是用待分類的數(shù)據(jù)與已知的數(shù)據(jù)進行一一比較锹漱,從所有已知數(shù)據(jù)中選出最相似的K個數(shù)據(jù),在這最相似的K個數(shù)據(jù)中楼雹,哪一類的個數(shù)最多我們就判定未知數(shù)據(jù)屬于哪一類荐开。通俗來講假設我們已經(jīng)知道有一百人的人臉信息分屬于三個地區(qū)付翁,這時新來了一個人讓你去判斷他最可能來自哪個地區(qū),KNN就是用這一個未知地區(qū)信息的人去和那一百個已知地區(qū)信息的人進行比對晃听,從一百個里選出K個最像的人出來百侧,假設這K個人中五個來自地區(qū)1,一個來自地區(qū)2能扒,一個來自地區(qū)3佣渴,那么我們就判定這個人是來自地區(qū)1的。
? ? ? ? 所以KNN可以簡化為以下兩步:
? ? ? ? 1.?將待判斷的未知數(shù)據(jù)樣本和所有已知數(shù)據(jù)樣本進行比較初斑,選出最相似的K個
? ? ? ? 2.?從K個結果中進行投票辛润,選出票數(shù)最多的結果作為預測結果
距離度量(Distance Metric)來比較圖片
? ? ? ? 在計算機中,圖像可以表示為矩陣數(shù)據(jù)的形式见秤,那么我們對兩張圖片的比較實際是對兩個矩陣進行比較砂竖。KNN中非常關鍵的一步是對圖像進行比較來判斷兩張圖片的相似程度真椿,那么我們比較的方法實際是采用距離度量的方法,距離值的大與小就表示兩張圖片的相似程度乎澄。
? ? ? ? 距離的計算有兩種計算公式突硝,一種是Manhattan距離(L1 distance),一種是Euclidean距離(L2 distance)
? ? ? ? 通常采用的是L2 distance作為距離度量的方法置济,但具體選用L1還是L2應該依據(jù)使用的場景來進行選擇解恰,他們兩的選擇會影響訓練出的分類器的準確率。
超參數(shù)K的選取
? ? ? ? 超參數(shù)是指需要預先設定浙于,不能從數(shù)據(jù)中習得的參數(shù)护盈,比如這里的K。K的具體取值同樣也會影響最后分類器的準確性羞酗。K的選取是調參的過程腐宋,我們使用一部分數(shù)據(jù)進行分類器的訓練,再用一部分數(shù)據(jù)去測試該K下的準確性整慎,調制K的值重復這一過程脏款,只至選取一個準確度最高的K。在實際應用中裤园,我們希望的是能夠用已知訓練數(shù)據(jù)集得到的分類器去判斷位置的數(shù)據(jù)的結果,并且這一結果具有高的準確度剂府,所以在測試的時候我們還會準備一部分數(shù)據(jù)作為測試數(shù)據(jù)來判斷這一分類器的表現(xiàn)拧揽。綜上我們會將數(shù)據(jù)集分為訓練數(shù)據(jù)(train),調試數(shù)據(jù)(validation)腺占,測試數(shù)據(jù)(test)這三部分磕潮。
? ? ? ? 還有一種交叉驗證的方法是將數(shù)據(jù)分為多份(fold)和一個測試數(shù)據(jù)(test)校哎,取其中的幾份作為訓練數(shù)據(jù),一份作為調試數(shù)據(jù)。比如fold1,2,3,4作為test愈案,fold5作為validation。也可以讓fold4作為validation抓于,其余的作為test算色,這樣可以進行交叉驗證。不變的是只有當你的所有參數(shù)調整完以后才可以用test數(shù)據(jù)去測試結果的好壞怎顾。