k-近鄰演算法(k nearest neighbor),是最基本的分類演算法,其基本思想是採用測量不同特徵值之間的距離方法進行分類。
存在乙個樣本資料集合(訓練集),並且樣本集中每個資料都存在標籤(即每一資料與所屬分類的關係已知)。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較(計算距離),然後提取樣本集中特徵最相似資料(最近鄰)的分類標籤。一般會取前k個最相似的資料,然後取k個最相似資料**現次數最多的標籤(分類)最後新資料的分類。
因此,這是乙個很「懶惰」的演算法,所謂的訓練資料並沒有形成乙個「模型」,而是乙個新的資料需要分類了,去和所有訓練資料逐一比較,最終給出分類。這個特徵導致在資料量較大時,效能很差勁。
對未知類別屬性的資料集中的每個點依次執行以下操作:
1)計算已知類別資料集中的點與當前點之間的距離(歐式距離、曼哈頓距離或者余弦夾角等各種距離演算法,具體情況具體分析用哪種);
2)按照距離遞增次序排序;
3)選取與當前點距離最小的k個點;
4)確定前k個點所在類別的出現頻率;
5)返回前k個點出現頻率最高的類別作為當前點的**分類。
歐氏距離計算:
二維平面上兩點a(x1,y1)與b(x2,y2)間的歐氏距離:
三維空間兩點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離:
n維空間兩點的歐式距離以此類推
我還是瞎編乙個案例,下表有11個同學的小學成績和12年後讀的大學的情況,現在已知「衛」同學的小學成績了,可以根據knn來**未來讀啥大學。
逐一計算各位同學與衛同學的距離,然後我們選定3位(即這裡的k=3)最為接近的同學,推測衛同學最終的大學
3位同學中2個清華,1個北郵,所以衛同學很有可能在12年後上清華。
1) k的選擇,一般不超過訓練集數量的平方根
2)距離更近的近鄰也許更應該決定最終的分類,所以可以對於k個近鄰根據距離的大小設定權重,結果會更有說服力
3)如果採用歐氏距離計算,不同變數間的值域差距較大時,需要進行標準化,否則值域較大的變數將成為最終分類的唯一決定因素
資料探勘K近鄰(KNN)演算法
k近鄰演算法是一種基本分類與回歸演算法,是一種監督式學習。基本思想是在距離空間裡,如果乙個樣本的最接近的k個鄰居裡,絕大多數屬於某個類別,則該樣本也屬於這個類別。俗話叫,隨大流 簡單來說,knn可以看成 有那麼一堆你已經知道分類的資料,然後當乙個新的資料進入的時候,就開始跟訓練裡的每個點求距離,然後...
k 近鄰演算法
此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...
K 近鄰演算法
k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...