統計學習方法讀書筆記 knn

2021-07-22 01:33:21 字數 2721 閱讀 4637

看李航老師統計學習方法時的筆記。其實書上寫的已經非常易懂了,但是為了自己記憶,姑且寫個筆記,個別地方是自己的理解,可能有偏差。

knn是由cover和hort在2023年提出的分類和回歸方法(監督學習的)。它是乙個機遇距離的機器學習演算法,因此更多地適用於數值型的資料集(用jarccard相似度倒也可以直接衡量標稱資料距離)。

作為乙個機器學習演算法,knn是直接將訓練資料整個作為模型。knn的整個過程非常簡單,可以描述如下:通過計算測試集中資料點與訓練集中每個資料的距離,然後按照距離對訓練資料進行排序(距離越近排名越高),取排名最高的前k個資料點,讓他們投票來確定測試集資料的標籤。

從上述的過程描述可以知道,knn中需要確定3個部分:(1)距離的定義;(2)k值的選擇;(3)分類決策規則。其中分類決策規則姑且可以構造出模型的損失函式,k值的不同會影響到損失函式值的變化。

個人認為距離可以看做是某個空間中兩點之間的直線長度,而在距離公式計算兩點距離的時候則是把兩點對映到對應的空間中計算的那個直線長度(似乎更加難理解了。。),可以感受一下不同距離定義時得到的測試資料點與每個訓練資料點的距離是不同的,這個差異應該就是空間不同造成的。常用的距離有閔可夫斯基距離(包含了曼哈頓距離,歐幾里得距離,切比雪夫距離)、相對熵、余弦相似度、皮爾森相似度、jarccard相似度等(後面幾個相似度是值越大距離越小)。

閔可夫斯基距離

閔可夫斯基距離又被寫作l_p距離,數學上可以表示為乙個關於p的函式: lp

(x⃗ i

,x⃗ j

)=(∑

l=1n

|x(l

)i−x

(l)j

|p)1

/p其中n是資料點所在空間的維度。根據p值的不同,閔可夫斯基距離又被稱為曼哈頓距離(p=1)、歐幾里得距離(p=2)、切比雪夫距離(p=

∞ )

1)曼哈頓距離 l1

(x⃗ i

,x⃗ j

)=(∑

l=1n

|x(l

)i−x

(l)j

|)曼哈頓距離又叫街區距離。之所以叫街區距離,是因為可以形象得把它看做是從乙個樓房排列整齊的街區的某乙個點到另乙個點走過的距離。從公式上看它就是兩個點在各個座標軸上的分量距離之和。

2)歐幾里得距離 l2

(x⃗ i

,x⃗ j

)=(∑

l=1n

|x(l

)i−x

(l)j

|2)1

/2歐幾里得距離可以說是我們最熟悉的距離了。它可以描繪成空間中亮點之間所連直線的長度。

3)切比雪夫距離 l∞

(x⃗ i

,x⃗ j

)=ma

xnl=

1|x(

l)i−

x(l)

j|切比雪夫距離可以理解成在乙個棋盤中,乙個棋子每次只走一步,並且可以往旁邊8個格仔的任乙個格仔移動,按照這樣的移動方式從乙個點移動到另乙個點的最小步數。

相對熵

資訊熵是用來衡量乙個隨機系統(分布)混亂程度的,而相對熵則可以用來表示兩個分布的差異,講道理的話資訊熵和相對熵的關係並不大。資訊熵的定義為:

entr

opy(

p⃗ )=

∑i=1

npi×

log2

(pi)

其中p⃗  是乙個離散分布(因為後面是個sum)。而相對熵則可以表示為: kl

(p⃗ i

,p⃗ j

)=∑l

=1np

il×l

og2(

pilp

jl) 其中p

⃗ i和p⃗ 

j 分別是兩個概率分布。

余弦相似度

余弦相似度是比較以原點作為起點,資料點作為終點的兩個向量之間夾角來衡量兩個資料點的距離:

cos(

x⃗ i,

x⃗ j)

=x⃗ i

⋅x⃗ j

|x⃗ i

|×|x

⃗ j|

皮爾森相似度

jarccard相似度

k值的選擇對knn演算法的影響也很大,k值的物理意義在於在空間上畫乙個範圍,把範圍內的點作為近鄰點。

若k值選小了,則knn會對近鄰的資料點敏感,很在意附近點的類別(抗噪能力很弱),也可以看做整體模型複雜度過高,容易造成過擬合;若k值選大了,它的包容性會很強,即使最靠近它的那些點是噪音,它也不容易受其影響,但太大的k則會學到那些距離太遠的點的類別,從而導致判斷不準確,極端地說,當k值取到包含所有訓練集上的資料,那麼不論測試點是什麼,knn都只會把它歸到訓練集資料中佔比最大的類別(可以看做是演算法複雜度太低)。

通常來說,在計算出測試點與訓練集中所有資料的距離之後,knn是直接用排名前k個訓練資料帶權投票的方式來判斷測試點所屬的類別的,這個思想有點像極大似然估計(頻率估計概率)。

確切地說,對knn而言,在訓練集不變的情況下只要確定了三要素,那麼它的訓練模型就定下來了。kd樹所做的優化並不是提高模型的效能,而是提高演算法執行的效率(更快找到前k個近鄰點)。

通常而言knn在使用時,要遍歷計算每個訓練資料和目標測試資料的距離,當資料量很大時,效率就會很低,因此要通過改變訓練集的資料結構來減少計算距離的次數。kd樹基本思想是把訓練集構成二叉樹的形式(具體實現的結果有點類似cart tree)。

看了好久都忘記怎麼做的了,等哪天有心情了重新看的時候再寫具體實現吧。

統計學習方法讀書筆記

感知機 perceptron 沒啥說的,感知機就是尋找乙個將空間分為兩部分的超平面 前提可分 學習過程既是損失函式極小化的過程。模型 啟用函式 損失函式 推導 首先考慮任意一點x0到超平面的距離 對於誤分類點 xi,yi 來說 所以誤分類點到超平面的總距離 損失函式 損失函式極小化 簡單的梯度下降即...

《統計學習方法》讀書筆記 K近鄰法(KNN)

k近鄰法基本介紹 給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類。分布描述為 1 根據給定的距離度量,在訓練集t中找出與例項x最近的k個點,涵蓋這k個點的x的領域記為nk x 2 在nk x 中,根據分類決策規則,...

統計學習方法筆記 KNN

k近鄰法 k nearest neighbor,k nn 這裡只討論基於knn的分類問題,1968年由cover和hart提出,屬於判別模型 k近鄰法不具有顯式的學習過程,演算法比較簡單,每次分類都是根據訓練集中k個最近鄰,通過多數表決的方式進行 所以模型需要保留所有訓練集資料,而象感知機這樣的模型...