當前位置:
首頁 > 最新 > MachineLN之kNN

MachineLN之kNN

我想說:

其實訓練模型是個力氣活,有人說訓練模型很簡單,把數據塞進去,然後跑完就好了,哦,這樣的話誰都會,關鍵的也就在這裡,同樣的數據同樣的模型,有些人訓練的模型在測試集上99%,有些人的則只有95%,甚至90%,其實學習最關鍵的也在這裡,大家同時學一個知識,也都學了,但是理解的程度會大相徑庭,注意trick不可不學,並且坑不得不踩。唉,前幾天訓練好的一個模型,再讓自己復現感覺也很難搞定了,天時地利人和!!!今天開始搞傳統機器學習的理論和實踐,突然發現這是自己的短板,其實也不是啦:李航老師統計學看了4遍,周志華老師機器學習看了一遍,模式分類那本大厚書粗略看了一遍,經典的數據挖掘看了一遍,還看了一本機器學習的忘記名字了,吳恩達的課看了一遍,還看了一些英文資料,機器學習實踐照著敲了一遍,在就是一些零零碎碎的.....,雖然做過一些實踐,但是缺乏工程上的磨練。

1. kNN介紹

kNN(K Nearest Neighbor):存在一個樣本數據集合,也稱作訓練樣本集,並且樣本集中每個數據都存在標籤,即我們知道樣本集中每一個數據與所屬分類的對應關係。輸入沒有標籤的數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較,然後演算法提取樣本集中特徵相似數據(最近鄰)的分類標籤,一般來說我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰演算法中的k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作為新數據的分類。

看一下下圖:x是未知類別的,計算與w1,w2,w3相似度(距離),下圖是取5個(k個)最相似的數據,然後從5個中選擇出現次數最多的類別,作為x的類別。

其實,k值的選擇至關重要,看下圖,不宜太小不宜太大:

2. kNN中相似度量方法:

上面提到的相似度(還有推薦中的相似度),很多時候都是用距離來衡量,計算距離的方法有:

可以看出,歐式距離是閔氏距離在k=2時的特例。

可以看出,絕對(曼哈頓)距離是閔氏距離在k=1時的特例。

可以看出,切比雪夫距離是閔氏距離在k=無窮大時的特例

可以看出夾角餘弦距離是從兩觀測的變數整體結構相似性角度測度其距離的。夾角餘弦值越大,其結構相似度越高。

當然除了以上的相似度量方法還有很多,馬氏距離、交叉熵、KL變換等,都是可以衡量相似度的方法,但是要注意在什麼情境用什麼方法;

3. 注意的問題:

實際應用中,p個維度(特徵)之間可能存在數量級的差異(這裡也體現了數據歸一化的重要性),數量級較大的維度對距離大小的影響會大於數量級小的變數。為了消除這種影響,統計學中常見的方法有標準分數法和極差法(有的稱為極大-極小值法)。

另外,很多時候是這麼做的,例如在DL中我們用CNN提取的特徵作為kNN的樣本;或者更傳統一點,可以通過PCA降維後的結果作為kNN的樣本;可以減少維度災難;鄙人缺少此方便實戰經驗,寫起來比較晦澀;

4. kNN的優缺點

KNN的優缺點:

5. 一些思考:

下一遍: kNN實踐 python代碼+詳細注釋

MachineLN 交流群請掃碼加machinelp為好友:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

PDF如何轉Word?終極版來啦!

TAG:全球大搜羅 |