(k-nearest-neighbor knn)
這是一種分類演算法,它的核心思想是:對於新的樣本,根據其k個最近鄰的樣本的類別,通過多數表決等決策規則,決定它的類別。
使用k近鄰演算法,首先需要確定三個東西:
距離度量,k值的選擇,分類決策規則特徵空間中兩個樣本點之間的距離反映了這兩個樣本的相似程度,距離有多種表示方法:
一般用lp表示。
1. 曼哈頓距離(l1距離)
l1距離可以看成是乙個向量範數——1範數,表示向量中所有元素絕對值之和。這裡的向量是兩個樣本特徵向量之差。也就是||x1-x2||1
2. 歐氏距離(l2距離)
l2距離看成是向量的2範數,表示向量中元素的絕對值的平方和的開方。其實就是我們初中數學中計算平面直角座標系中兩個點的距離公式。
3. l無窮距離
當p接近無窮時,lp距離表示向量中各個元素絕對值中最大的那個。表示為:
最後給出適用於所有p的lp計算公式:
最後給出向量範數的計算:
常用的分類決策規則是多數表決,也叫投票,根據票數最多的類別**分類。
1. 構造kd樹
kd樹是一課二叉樹,就是用垂直於座標軸的超平面對k維空間的一種劃分,可以用遞迴的方法產生子結點。
具體步驟如下:
1. 構造根結點,將區域劃分成兩個子區域;
2. 遞迴產生子結點,將子區域再次劃分為兩個子區域;
3. 直到兩個子區域都沒有例項,該點是葉結點,遞迴退出。
2. 搜尋kd樹
搜尋的步驟如下:
1. 從根結點出發,遞迴地向下訪問kd樹(遍歷二叉樹),如果目標點當前維的座標比切分點的座標小,則遍歷左結點,否則遍歷右結點,直到子結點為葉結點為止。
2. 以此葉結點作為當前「最近鄰點」。
3. 遞迴地向上回退,在每個結點執行以下操作:
(1)如果該結點距離目標點更近,則以該結點為「最近鄰點」
(2)檢查該子結點的兄弟結點對應的區域是否有更近的點,如果有則遍歷到兄弟結點,尋找「最近鄰點」
4. 當回退到根結點,搜尋結束,得到目標點的「最近鄰點」。
具體見下圖:
學習筆記 K 近鄰演算法
一 k 近鄰演算法概述 適用於 數值型和標量型 1 收集資料 2 準備資料 向量點距離 3 按照距離遞增次序排序 4 選取與當前距離最小的k個點 5 確定選擇k個點所在類別的頻率 6 判斷當前點的的類別 二 k 近鄰演算法實現 python語言實現 共有資料1000行,含有三個資料特徵 每年獲得的飛...
學習筆記(一)k 近鄰演算法(KNN)
終於找到 機器學習實戰 這本書了,在此記錄一些總結,便於回顧。knn的工作原理是 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中...
機器學習筆記之K近鄰演算法
今天學習的是機器學習中最為簡單的乙個演算法 k近鄰演算法,簡稱knn。由於學習主要參照 機器學習實戰 這本書進行,本系列文章中涉及到的概念與例項絕大部分 於此。本文主要從knn演算法概述,使用k 近鄰演算法改進約會網 的配對效果,手寫識別函式三個方面來展開,本文的主要用意在於闡釋 機器學習實戰 中源...