《统计学习方法》学习笔记(4)--k近邻法及常用的距离(or 相似度)度量
一、k近鄰法基礎知識
1. 特征空間中兩個實例點的距離反應了兩個實例點的相似程度。
2. k近鄰模型三要素 = 距離度量(有不同的距離度量所確定的最鄰近點不同)+k值的選擇(應用中,k值一般取一個比較小的值,通常采用交叉驗證法來確定最優k值)+分類決策規則(往往是多數表決規則(majority voting rule),此規則等價于經驗風險最小化)
3. 在訓練數據量太大或者是維數很高時,顯然線性掃描(linear scan)耗時太大,不可取。其中一個辦法就是構建kd樹(空間劃分樹,實際上是一種平衡二叉樹)實現對訓練數據的快速k近鄰搜索。
二、距離度量相關
Note:根據數據特性的不同,可以采用不同的度量方法。一般而言,定義一個距離函數 d(x,y), 需要滿足下面幾個準則:
1) d(x,x) = 0 // 到自己的距離為0
2) d(x,y) >= 0 // 距離非負
3) d(x,y) = d(y,x) // 對稱性: 如果 A 到 B 距離是 a,那么 B 到 A 的距離也應該是 a
4) d(x,k)+ d(k,y) >= d(x,y) // 三角形法則: (兩邊之和大于第三邊)
兩個n維變量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的閔可夫斯基距離定義為:
其中p是一個變參數,根據變參數的不同,閔氏距離可以表示一類的距離。
當p=1時,就是曼哈頓距離,又稱L1距離或者是程式區塊距離(city block distance)等。
當p=2時,就是歐氏距離,又稱L2距離,是直線距離。
當p→∞時,就是切比雪夫距離
閔氏距離,包括曼哈頓距離、歐氏距離和切比雪夫距離都存在明顯的缺點。
舉個例子:二維樣本(身高,體重),其中身高范圍是150~190,體重范圍是50~60,有三個樣本:a(180,50),b(190,50),c(180,60)。那么a與b之間的閔氏距離(無論是曼哈頓距離、歐氏距離或切比雪夫距離)等于a與c之間的閔氏距離,但是身高的10cm真的等價于體重的10kg么?因此用閔氏距離來衡量這些樣本間的相似度很有問題。
簡單說來,閔氏距離的缺點主要有兩個:(1)將各個分量的量綱(scale),也就是“單位”當作相同的看待了。(2)沒有考慮各個分量的分布(期望,方差等)可能是不同的。
兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的歐氏距離:
也可以用表示成向量運算的形式:
標準化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標準歐氏距離的思路:既然數據各維分量的分布不一樣,那先將各個分量都“標準化”到均值、方差相等。
假設樣本集X的數學期望或均值(mean)為m,標準差(standard deviation,方差開根)為s,那么X的“標準化變量”X*表示為:(X-m)/s,而且標準化變量的數學期望為0,方差為1。
即,樣本集的標準化過程(standardization)用公式描述就是:
經過簡單的推導就可以得到兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的標準化歐氏距離的公式:
如果將方差的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)。
(1)在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角余弦公式:
(2) 兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角余弦
類似的,對于兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用類似于夾角余弦的概念來衡量它們間的相似程度?! ?
即:
夾角余弦取值范圍為[-1,1]。夾角余弦越大表示兩個向量的夾角越小,夾角余弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角余弦取最大值1,當兩個向量的方向完全相反夾角余弦取最小值-1。
舉一個具體的例子,假如新聞X和新聞Y對應向量分別是: x1, x2, …, x6400 和 y1, y2, …, y6400。則,它們之間的余弦距離可以用它們之間夾角的余弦值來表示:
當兩條新聞向量夾角余弦等于1時,這兩條新聞完全重復(用這個辦法可以刪除爬蟲所收集網頁中的重復網頁);當夾角的余弦值接近于1時,兩條新聞相似(可以用作文本分類);夾角的余弦越小,兩條新聞越不相關。
余弦距離與歐式距離對比
余弦距離使用兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。
相比歐氏距離,余弦距離更加注重兩個向量在方向上的差異。
借助三維坐標系來看下歐氏距離和余弦距離的區別:
從上圖可以看出,歐氏距離衡量的是空間各點的絕對距離,跟各個點所在的位置坐標直接相關;而余弦距離衡量的是空間向量的夾角,更加體現在方向上的差異,而不是位置。
如果保持A點位置不變,B點朝原方向遠離坐標軸原點,那么這個時候余弦距離cosθ是保持不變的(因為夾角沒有發生變化),而A、B兩點的距離顯然在發生改變,這就是歐氏距離和余弦距離之間的不同之處。
歐氏距離和余弦距離各自有不同的計算方式和衡量特征,因此它們適用于不同的數據分析模型:
歐氏距離能夠體現個體數值特征的絕對差異,所以更多的用于需要從維度的數值大小中體現差異的分析,如使用用戶行為指標分析用戶價值的相似度或差異。
余弦距離更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用于使用用戶對內容評分來區分興趣的相似度和差異,同時修正了用戶間可能存在的度量標準不統一的問題(因為余弦距離對絕對數值不敏感)。
調整余弦相似度算法(Adjusted Cosine Similarity)
余弦相似度更多的是從方向上區分差異,而對絕對的數值不敏感,因此沒法衡量每個維度上數值的差異,會導致這樣一種情況:
用戶對內容評分,按5分制,X和Y兩個用戶對兩個內容的評分分別為(1,2)和(4,5),使用余弦相似度得到的結果是0.98,兩者極為相似。但從評分上看X似乎不喜歡2這個 內容,而Y則比較喜歡,余弦相似度對數值的不敏感導致了結果的誤差,需要修正這種不合理性就出現了調整余弦相似度,即所有維度上的數值都減去一個均值,比如X和Y的評分均值都是3,那么調整后為(-2,-1)和(1,2),再用余弦相似度計算,得到-0.8,相似度為負值并且差異不小,但顯然更加符合現實。
廣義Jaccard相似度可參考,此處略:http://blog.csdn.net/xceman1997/article/details/8600277
1) 杰卡德相似系數
兩個集合A和B的交集元素在A,B的并集中所占的比例,稱為兩個集合的杰卡德相似系數,用符號J(A,B)表示。
杰卡德相似系數是衡量兩個集合的相似度一種指標。
2)杰卡德距離
與杰卡德相似系數相反的概念是杰卡德距離(Jaccard distance)。
杰卡德距離可用如下公式表示:
杰卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區分度。
3) 杰卡德相似系數與杰卡德距離的應用
可將杰卡德相似系數用在衡量樣本的相似度上。
樣本A與樣本B是兩個n維向量,而且所有維度的取值都是0或1。
例如:A(0111)和B(1011)。我們將樣本看成是一個集合,1表示集合包含該元素,0表示集合不包含該元素。
p :樣本A與B都是1的維度的個數
q :樣本A是1,樣本B是0的維度的個數
r :樣本A是0,樣本B是1的維度的個數
s :樣本A與B都是0的維度的個數
那么樣本A與B的杰卡德相似系數可以表示為:這里p+q+r可理解為A與B的并集的元素個數,而p是A與B的交集的元素個數。而樣本A與B的杰卡德距離表示為:
這里p+q+r可理解為A與B的并集的元素個數,而p是A與B的交集的元素個數。
4)杰卡德相似度算法分析
杰卡德相似度算法沒有考慮向量中潛在數值的大小,而是簡單的處理為0和1,不過,做了這樣的處理之后,杰卡德方法的計算效率肯定是比較高的,畢竟只需要做集合操作。
參考:
余弦距離、歐氏距離和杰卡德相似性度量的對比分http://www.cnblogs.com/chaosimple/archive/2013/06/28/3160839.html
不同相關性度量方法的線上效果對比與分析 http://blog.sina.com.cn/s/blog_4b59de07010166z9.html
從K近鄰算法、距離度量談到KD樹、SIFT+BBF算法http://blog.csdn.net/v_july_v/article/details/8203674
機器學習中的相似性度量http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html
漫談:機器學習中距離和相似性度量方法http://www.cnblogs.com/daniel-D/p/3244718.html
總結
以上是生活随笔為你收集整理的《统计学习方法》学习笔记(4)--k近邻法及常用的距离(or 相似度)度量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比较大小教案计算机小朋友们,一年级数学下
- 下一篇: Airtest 入门