KNN (最近鄰分類規(guī)則)--最簡單的機(jī)器學(xué)習(xí) 分類阳堕,回歸算法
個人認(rèn)為機(jī)器學(xué)習(xí)的三個最主要的特性,是 分類翻具,回歸,聚類萎馅。對于具體的問題,我們通過數(shù)據(jù)的抽象虹蒋,運用函數(shù)來表示問題糜芳,在一定的空間內(nèi),用凸優(yōu)化的思想來迭代魄衅,搜索更好的數(shù)值峭竣。這個過程得益于計算機(jī)不斷發(fā)展的計算能力,實則是統(tǒng)計晃虫,概率皆撩,數(shù)學(xué)抽象問題和計算機(jī)編程的完美結(jié)合,便成為機(jī)器學(xué)習(xí)哲银。
使用KNN算法解決一個現(xiàn)實的分類問題:如何區(qū)分 愛情片與 動作片 (不是愛情動作片扛吞!《機(jī)器學(xué)習(xí)實戰(zhàn)P16》? )
根據(jù)每部電影的打斗鏡頭數(shù),和接吻鏡頭數(shù)來做電影分類
????現(xiàn)在已經(jīng)知道6部電影的打斗荆责,接吻鏡頭數(shù)和電影分類滥比。對于一部未知影片,已知打斗和接吻鏡頭數(shù)做院,如何得到這部電影的分類盲泛?
我們計算電影和電影之間的距離,按照向量坐標(biāo)距離計算键耕,未知電影和已知電影的距離:
按照距離遞增排序寺滚,可以找到k個最近的電影,讓k=3郁竟,即Kevin Longblade玛迄,Robo Slayer 3000由境,Amped 這三部愛情片的距離最近棚亩,因此我們判定未知電影為愛情片。這個簡單例子是KNN算法的簡明闡述虏杰。劃重點了:
????如果一個樣本在特征空間中有k個最近鄰的特征點(已知分類)讥蟆,而這k個特征點中大多數(shù)屬于某一個類別,那么這個樣本屬于那一類的概率最大纺阔。
KNN算法的具體實現(xiàn)流程如下:
1.初始化距離為最大值
2.計算未知樣本與每個訓(xùn)練樣本的距離d(多種距離計算方法)
3.得到目前的k個最近鄰的的最大距離dMax
4.重復(fù)步驟2瘸彤,4,需要計算所有未知樣本與已知樣本的距離(也是KNN的計算復(fù)雜缺陷)
5.統(tǒng)計k個最近鄰樣本中數(shù)量最大的所屬類別笛钝,確定未知樣本的分類质况。
KNN也可以用來做回歸愕宋,樣本的k個最近鄰居,可以計算樣本與鄰居的平均值结榄,或?qū)⒉煌従拥挠绊憴?quán)值賦給該樣本中贝,得到新的樣本。
KNN的Python代碼比較簡單臼朗,示例一小段KNN代碼邻寿,紅框中的內(nèi)容是關(guān)于距離計算的步驟