KNN算法的算法思想

之前講解的線性回歸和邏輯回歸的原理中,不免會引入大量的數學推導和證明過程,從預測函數的建立,到損失函數的偏導數求解,不免要求讀者有扎實的高等數學功底和線性代數功底,那么機器學習里有沒有稍微大眾化,通俗易懂的算法呢?KNN算法就是最淺顯易懂的算法之一

假設我們有蘋果,橙子,香蕉三類水果,你希望記錄這三類的特征數據,比如最基本的長度、寬度、高度、重量、周長、體積、光澤度、濕度等量化的物理量,然后統計出一份含有這些物理量的樣品表,其中每一行代表一個水果,你可以很容易的為每一行打上水果標簽,然后你希望寫出某個算法,在當你得到一個未知水果時,通過算法和統計的樣本表,根據每個水果都有的物理量來自動推理出這個未知的水果屬于哪一類水果?

顯然,這是一個分類算法,并且屬于監督學習,KNN算法就是其中最典型最容易實現的算法

本章知識點:

1、數據在不同維度上分布的分類表現

2、KNN算法的思想

3、數據歸一化處理

4、找鄰居

5、投票決定

6、監督學習的過程

7、KNN的優缺點

從知識點可以看出,KNN算法并沒有涉及到高等數學的推導過程,這個算法非常人性,非常簡單

一. 數據在不同維度上分布的分類表現

假設我們的樣本集是由蘋果,橙子,香蕉這3個類別組成,其中每個樣本有4個量化物理維度

樣本集合

我們從采集到的樣本集合里可以知道,每一行4個維度代表一個樣本,并且最后一列表明了樣本的類別,這就是典型的監督學習樣本,我們以這個樣本為參考系,通過算法來預測未知樣本。

我們先用二維空間為參考系,選取樣本的第一維和第四維來繪制樣本集

二維空間上樣本第一維和第四維分布

從第一維和第四維分布上我們看到這三類分類除了顏色區分,離散度是較高的,我們再選擇第一維和第三維來繪制

二維空間上樣本第一維和第三維分布

從第一維和第三維分布上我們可以看到分類效果稍微比前面的清楚一點(沒有那么離散)

下面我們用三維空間為參考系,選取樣本的第一維,第二維,第三維來繪制樣本集

三維空間上樣本前三維分布

可以看出它的廬山真面目,分類效果更加明顯,那么四維空間上的分布呢?對不起,人類無法看到高維空間

二. KNN算法的思想

KNN(k-NearestNeighbor)又被稱為近鄰算法,它的核心思想是:物以類聚,人以群分

假設一個未知樣本數據x需要歸類,總共有ABC三個類別,那么離x距離最近的有k個鄰居,這k個鄰居里有k1個鄰居屬于A類,k2個鄰居屬于B類,k3個鄰居屬于C類,如果k1>k2>k3,那么x就屬于A類,也就是說x的類別完全由鄰居來推斷出來

所以我們可以總結出其算法步驟為:

1、計算測試對象到訓練集中每個對象的距離

2、按照距離的遠近排序

3、選取與當前測試對象最近的k的訓練對象,作為該測試對象的鄰居

4、統計這k個鄰居的類別頻率

5、k個鄰居里頻率最高的類別,即為測試對象的類別

我們可以簡化為:找鄰居 + 投票決定

三. 數據歸一化

有了算法的思想,首先我們要做的是將采集到的樣本集做歸一化處理

因為不同維度的物理量之間往往具有不同的量綱和單位,比如時間,距離等,這樣會造成維度之間可比性較差,為了消除物理量之間絕對值相差太大,需要對樣本數據集進行標準化處理,保證各個物理量之間處于同一個數量級之下,消除不同量綱之間的差異,一般有如下兩個常用的歸一化方法:

1、線性歸一化(Min-Max scaling)

離差標準化

該方法通過線性變化對原始數據進行等比例縮放映射到[0,1]之間,其中X*為歸一化后的數據,X為原始數據,Xmin和Xmax分別為X向量的最小值和最大值

2、0均值標準化(Z-score standardization)

均值歸一化

該方法將原始數據歸一化為均值為0、方差為1的數據集,且該數據集符合標準的高斯分布,其中X*為歸一化后的數據,X為原始數據,μ為X向量的均值,σ為X向量的標準差

歸一化樣本數據集

四. 找鄰居

設x為TestSet的一個n維向量樣本,我們需要在TrainSet中找到距離x最近的k個n維向量樣本作為x的鄰居,那么問題轉化為怎么計算多組兩個n維向量之間的距離?

一般對于兩個n維向量,如果是直接物理量,可以用歐氏距離、曼哈頓距離等來計算這兩個n維向量之間的距離;而對于文本分類而言,一般會使用余弦定理來計算這兩個n維向量之間的夾角來確定相似度

在這里,我們采用歐式距離來計算,設y為TrainSet中任意一個n維向量樣本,則x和y之間的距離可以表示為:

兩個向量的歐式距離

我們需要分別計算x到TrainSet中所有樣本的距離,并對這些距離從小到大排序,選取前k個距離的樣本就找到了x的k個鄰居(物以類聚的思想)

其中k值的設定一般低于樣本數量的平方根,且為奇數最適宜

選取x的k個鄰居

五. 投票決定

我們得到x的k個鄰居后,需要統計這k個鄰居的類別頻率,已少數服從多數的原則,同一類別最多的鄰居,即作為x的類別(x的類別完全由鄰居來投票推斷)

k個鄰居推斷x的類別

六. KNN監督學習的過程

我們將樣本集劃分為25%的測試集和75%的訓練集,以5個鄰居為例運行算法得到下面結果

KNN算法預測結果

可以看到算法只預測錯了1個樣本的分類,準確率達到90%以上

以KNN算法為例,我們可以總結出監督學習的基本流程

1、歸一化數據樣本集

2、劃分樣本集為訓練集和測試集

3、以訓練集為算法參考系,測試集來測試算法

4、計算預測樣品標簽和真實樣品標簽的比值來評估算法的準確率

5、調節不同的參數找到最優算法參數

7. KNN算法的優缺點

1、優點

非常簡單的分類算法沒有之一,人性化,易于理解,易于實現

適合處理多分類問題,比如推薦用戶

2、缺點

屬于懶惰算法,時間復雜度較高,因為需要計算未知樣本到所有已知樣本的距離

樣本平衡度依賴高,當出現極端情況樣本不平衡時,分類絕對會出現偏差

可解釋性差,無法給出類似決策樹那樣的規則

向量的維度越高,歐式距離的區分能力就越弱

KNN算法案例代碼見:KNN算法的基本原理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容