用官方的話來說,所謂K近鄰演算法,即是給定一個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的K個例項(也就是上面所說的K個鄰居), 這K個例項的多數屬於某個類,就把該輸入例項分類到這個類中。
如果你之前沒有學習過K最近鄰演算法,那今天幾張圖,讓你明白什麼是K最近鄰演算法。
圖說開始
先來一張圖,請分辨它是什麼水果
很多同學不假思索,直接回答:“菠蘿”!!!
仔細看看同學們,這是菠蘿麼?那再看下邊這這張圖。
這兩個水果又是什麼呢?
這就是菠蘿與鳳梨的故事,下邊即將用菠蘿和鳳梨,給大家講述怎麼用一個演算法來知道這是個什麼水果的過程,也就是什麼是K最近鄰演算法。
(給非吃貨同學們補充一個生活小常識,菠蘿的葉子有刺,鳳梨沒有。菠蘿的凹槽處是黃色的,而鳳梨的凹槽處是綠色的,以後千萬不要買錯哦!!!)
上邊這張圖中,我們定義了兩個維度的特徵:
一個是葉子是否有刺
一個是凹槽處是否的顏色
問:一個新的水果來了,我們怎麼判斷他是什麼水果呢?
方法如下:
(看這個神秘水果與哪個水果的舉例近。同等舉例,看離它最近的水果中,哪個水果多)
根據上圖中,我們判斷,這個神秘水果那就是菠蘿啦,原因是離它近的水果中菠蘿比鳳梨多。
相信到這裡,大家都已經明白了什麼是K最近鄰演算法了吧!
下邊來具體學習一下距離的計算
假設我們有3中不知名的水果
我們現在根據其大小和顏色的特徵,把它們放入圖表中
那如我們如何判斷他們有多像呢?
具體的計算,可以使用畢達哥拉斯公式
那現在來計算水果A和水果B之間的距離
最後的計算結果為1
那麼同理,如果要讓你去做一個推薦系統,我們可以把人的使用者畫像放在一個表格裡
如果我們給其中一個人推薦他可能感興趣的書、電影、美食等,就可以看一下離他最近距離的這些人都在做什麼,然後就套用下邊的公式就可以了
無論多少維度,直接套用就可以了。
圖說演算法,是不是非常的簡單就理解了KNN。
祝大家學習愉快,歡迎轉發。