理解KNN算法中的k值-knn算法中的k到底指的是什么 ?


  • 2019-11-09 20:11:26為方便自己收藏學習,轉載博文from:https://blog.csdn.net/llhwx/article/details/102652798

knn算法是指對預測集中的每一個圖像與訓練集中的所有圖像比較,尋找出在訓練集中與這一張預測圖片最接近的圖像,將該圖像的標簽給這張預測圖片。實施的方法為圖像矩陣相減並取絕對值,然后將得到的像素矩陣各元素相加,找到結果中的最小值,我們說產生這個最小值的圖像與該預測圖像最接近。

上面所說的是knn算法中當k值等於1的一種情況,這種讓一個最小值來決定預測圖像標簽的方法有些絕對化,容易在某種巧合下產生錯誤的結果。比如:兩張背景是一種顏色的不同物體,他們相減往往會產生一個比較小的值。

 

 


k = 1時對應的模型如上圖所示:左圖中的點代表訓練集,他們的顏色代表為某一類,點周圍的空白可以看作為預測集。現要按照距離的大小將整個圖像分為不同顏色的區域。當k為1時分類結果如右圖所示,可以看到圖中紫色區域中包含了一小點綠色區域,按照經驗來看,在大量紫色點的附近出現的最有可能的是紫色區域,但由於這個綠點(實際上稱該點為噪聲)的存在,使得結果出現了誤差。就像下面這張圖,讓我們來預測一下虛線點最有可能是什么顏色。當然是紅色。回到knn算法的思想,當我們僅用一個最小值來判斷該點的顏色,那么就有可能出現判斷錯誤的情況。

 

 


那么就可以將knn算法中的k值取其他值,當k等於5的時候,分類結果如下圖所示,在大量紅色點的周圍都是紅色區域,在大量紫色點的周圍都是紫色區域,在大量綠色點的周圍都是綠色區域,這種情況符合我們經驗的預測。

 

 


回到knn算法上,若當k取5時,則表示在訓練集中找到5張與該預測圖像相似的圖片,看着5張圖片的標簽哪一個出現的次數最多,出現次數最多的即為該預測圖像的標簽。若出現次數一樣多則表示為圖中的空白區域。

——————————分割線——————————

比如:如果k=1就找出來和需要判別值最近鄰的一個值。只根據這一個值判別 需要分類的數據屬於哪一類。但往往k=1容易出現錯誤,比如上文提到的如果兩張圖片的背景同樣,但是不同物體,這樣判別出的有時不准,。一般K應該取的稍微大,多找一些最近鄰值與之相比較。綜合判斷進行分類。

knn算法一般是通過計算歐式距離找出判別點與哪個標簽的距離最小。需要注意的是上文提到了一個針對圖像的方法:圖像矩陣進行相減去絕對值,然后將得到的像素矩陣各元素進行相加,找到最小值,則需要判別分類的圖像就屬於最小值對應的圖像類。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM