K近鄰算法:“近朱者赤,近墨者黑”的智慧
AI產(chǎn)品經(jīng)理需要掌握的內(nèi)容有很多,本文將介紹K近鄰算法,它常用來解決分類問題。一起來看看它的原理和應(yīng)用吧。
前文我們介紹了AI產(chǎn)品經(jīng)理的工作流程、模型構(gòu)建流程、模型評估等內(nèi)容,今天我們正式進入算法的學(xué)習(xí)。
首先介紹的是K近鄰算法,K近鄰算法是機器學(xué)習(xí)的入門級算法,原理簡單易懂,常用來解決分類問題。
一、基本原理
K近鄰算法(K-Nearest Neighbor),簡稱KNN算法,是基于距離計算來解決分類問題的一種算法。
其實KNN算法充斥在我們的日常生活中,很多時候,我們都會有意無意的參考一下身邊人的選擇,做出最簡單有效的選擇。
以買空調(diào)為例,在小區(qū)里轉(zhuǎn)悠一圈,統(tǒng)計其中安裝最多的空調(diào)品牌,再找其中一位鄰居聊幾句,符合預(yù)算的話,很容易就下決定了。
還有送女朋友禮物的時候,問下身邊的哥們兒之前都送過什么禮物,選擇頻率最高的禮物,更不容易踩雷。
結(jié)合上面兩個小例子,KNN的原理其實就是參考周圍最近的已經(jīng)做出的選擇,來做出與之類似的選擇,也就是“近朱者赤,近墨者黑”。
再回到機器學(xué)習(xí)場景,那么KNN算法的基本思路就是:在特征空間中,如果一個樣本附近的k個最近(即特征空間中最鄰近)樣本的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。
這里提到了“最近”的概念,我們在計算樣本點之間距離時,可以使用歐式距離、余弦距離、曼哈頓距離等數(shù)學(xué)公式,最常見的是歐式距離。
找出距離待測樣本最近的K個樣本點,然后統(tǒng)計其中最多的類別是哪個,就認(rèn)為待測樣本點歸屬于這個類別。
二、K值的選擇
除了距離之外,KNN算法還需要考慮如何選擇合適的K值,因為K值的選取會影響模型的預(yù)測效果。
如果選擇較小的K值,影響決策的樣本數(shù)量也較少,預(yù)測結(jié)果會對臨近的樣本過于敏感,如果臨近的樣本恰巧是噪聲,預(yù)測就會出錯。換句話說,K值減小就意味著整體模型變復(fù)雜,就容易發(fā)生過擬合。
如果選擇較大的K值,影響決策的樣本數(shù)量就會過多,導(dǎo)致預(yù)測效果下降,很容易導(dǎo)致欠擬合。
我們通??梢詫從1開始,逐一遞增,對比每個K值對應(yīng)的結(jié)果,最終選擇表現(xiàn)最好的K值。
三、應(yīng)用場景
理論上,KNN算法可以支持大多數(shù)的分類場景,如區(qū)分是否好瓜、是否薅羊毛用戶等。
除此之外,KNN還可以應(yīng)用在各種簡單的推薦的場景,比如:
- 根據(jù)用戶的購買記錄,推薦相似的商品
- 根據(jù)用戶的音樂風(fēng)格和歷史播放記錄,推薦用戶可能喜歡的音樂
四、優(yōu)缺點
KNN算法的優(yōu)點:
- 簡單易懂,復(fù)雜度低:訓(xùn)練代價低,甚至不需要訓(xùn)練,只要把樣本數(shù)據(jù)整理好,就可以直接預(yù)測新數(shù)據(jù)
- 邊界不規(guī)則的分類效果更好:當(dāng)數(shù)據(jù)的分類邊界不規(guī)則時,KNN算法效果比線性分類算法好,不需要考慮數(shù)據(jù)的邊界問題
KNN算法的缺點:
- 計算量較大:需要計算待測樣本和每一個已有樣本之間的距離,計算量非常大,所以只適用于小數(shù)據(jù)集
- 數(shù)據(jù)容錯性較低:如果訓(xùn)練集中存在錯誤的樣本數(shù)據(jù),該錯誤樣本又距離待測樣本較近,就會導(dǎo)致預(yù)測不準(zhǔn)確,所以對數(shù)據(jù)質(zhì)量依賴程度是非常高的
- 數(shù)據(jù)分布均衡程度要求高:樣本數(shù)據(jù)不均衡時,某個類別的數(shù)據(jù)量特別大時,會占有絕對的投票優(yōu)勢,影響到其他類別的預(yù)測效果
- 可解釋性較差:除了“近朱者赤,近墨者黑”之外,我們好像很難對輸出結(jié)果有更多的解釋
五、總結(jié)
本文我們簡單介紹了KNN算法的原理、應(yīng)用場景和優(yōu)缺點,KNN算法是機器學(xué)習(xí)的入門級算法,希望對大家有所幫助。
下篇文章,我們會聊一聊樸素貝葉斯算法,敬請期待。
本文由 @AI小當(dāng)家 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!