【機器學習-推薦算法】徹底搞清相異度/ 相似度算法


定義

  兩個對象之間的距離相異度(dissimilarity)是這兩個對象差異程度的數值度量。對象越類似,他們的相異度就越低(相似度就越高)。通常用“距離(distance)”用作相似度的同義詞。

  變換經常和相異度一起出現,因為把相似度轉換成相異度或者相反,或者將鄰近度變換到一個特定區間,例如將[0,10]變換到[0,1]。通常,鄰近度度量(特別是相似度)被定義為或者變換到區間[0,1]的值,這樣做的動機是使用一種適當的度量,由鄰近度的值表明兩個對象之間的相似(相異)的程度。

數據對象之間的相異度

針對數據對象之間的相異度,x和y通常都用距離矩陣(distance matrix)表示,計算歐幾里得距離后得到的是歐幾里得距離矩陣。

在數據分析和數據挖掘以及搜索引擎中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。常見的比如數據分析中比如相關分析,數據挖掘中的分類聚類(K-Means等)算法,搜索引擎進行物品推薦時。

相似度算法主要任務是衡量對象之間的相似程度,是信息檢索、推薦系統、數據挖掘等的一個基礎性計算。相似度就是比較兩個事物的相似性。一般通過計算事物的特征之間的距離,如果距離小,那么相似度大;如果距離大,那么相似度小。比如兩種水果,將從顏色,大小,維生素含量等特征進行比較相似性。

問題定義:有兩個對象X,Y,都包含N維特征,X=(x1,x2,x3,……..,xn),Y=(y1,y2,y3,……..,yn),計算X和Y的相似性。常用的有五種方法,如下。

相似度算法介紹

歐幾里得距離

歐幾里得度量(euclidean metric)(也稱歐氏距離)是一個通常采用的距離定義,指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離。

歐氏距離,最常見的兩點之間或多點之間的距離表示法,又稱之為歐幾里得度量,它定義於歐幾里得空間中,如點 x = (x1,...,xn) 和 y = (y1,...,yn) 之間的距離為:

image-20200715120056847

image-20200715120006488

image-20200715120048651

歐氏距離雖然很有用,但也有明顯的缺點。它將樣品的不同屬性(即各指標或各變量量綱)之間的差別等同看待,這一點有時不能滿足實際要求。例如,在教育研究中,經常遇到對人的分析和判別,個體的不同屬性對於區分個體有着不同的重要性。因此,歐氏距離適用於向量各分量的度量標准統一的情況。

注意事項:

a.因為計算是基於各維度特征的絕對數值,所以歐氏度量需要保證各維度指標在相同的刻度級別,比如對身高(cm)和體重(kg)兩個單位不同的指標使用歐式距離可能使結果失效。

b.歐幾里得距離是數據上的直觀體現,看似簡單,但在處理一些受主觀影響很大的評分數據時,效果則不太明顯;比如,U1對Item1,Item2 分別給出了2分,4分的評價;U2 則給出了4分,8分的評分。通過分數可以大概看出,兩位用戶褒Item2 ,貶Item1,也許是性格問題,U1 打分更保守點,評分偏低,U2則更粗放一點,分值略高。在邏輯上,是可以給出兩用戶興趣相似度很高的結論。如果此時用歐式距離來處理,得到的結果卻不盡如人意。即評價者的評價相對於平均水平偏離很大的時候歐幾里德距離不能很好的揭示出真實的相似度。

. 標准化歐氏距離 (Standardized Euclidean distance ),標准化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標准歐氏距離的思路:既然數據各維分量的分布不一樣,那先將各個分量都“標准化”到均值、方差相等。至於均值和方差標准化到多少,先復習點統計學知識。

假設樣本集X的數學期望或均值(mean)為m,標准差(standard deviation,方差開根)為s,那么X的“標准化變量”X*表示為:(X-m)/s,而且標准化變量的數學期望為0,方差為1。

即,樣本集的標准化過程(standardization)用公式描述就是:

image-20200715120038170

標准化后的值 = ( 標准化前的值 - 分量的均值 ) /分量的標准差  

經過簡單的推導就可以得到兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的標准化歐氏距離的公式:  

image-20200715120024487

如果將方差的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)。

 

馬氏距離

馬氏距離是兩個服從同一分布且其協方差矩陣為Σ的隨機變量x和y的差異程度。馬氏距離不受量綱的影響,兩點之間的馬氏距離與原始數據的測量單位無關;由標准化數據和中心化數據(即原始數據與均值之差)計算出的二點之間的馬氏距離相同。馬氏距離還可以排除變量之間的相關性的干擾。它的缺點是誇大了變化微小的變量的作用。

 
 
 
 
 
 
 
 
馬氏距離(Mahalanobis distance)是由印度統計學家馬哈拉諾比斯(P. C. Mahalanobis)提出的,表示數據的協方差距離。它是一種有效的計算兩個未知樣本集的相似度的方法。與歐氏距離不同的是,它考慮到各種特性之間的聯系(例如:一條關於身高的信息會帶來一條關於體重的信息,因為兩者是有關聯的),並且是尺度無關的(scale-invariant),即獨立於測量尺度。
 

假設空間中兩點x,y,定義:

image-20200715120014284

目的: 計算兩個樣本間距離時,需要考慮樣本所在分布的影響,包括以下兩個方面: a) 不同維度上的方差不同,進而不同維度在計算距離時的重要性不同。 b) 不同維度之間可能存在相關性,干擾距離。 當數據分布已知時:通常用馬氏距離代替歐氏距離,或對數據進行轉換(比如PCA)

性質: 馬氏距離消除了樣本不同維度之間的方差差異和相關性,是一個無量綱的度量方式。

20200925122807

 
 
 
x
 
 
 
 
 馬氏與歐式距離的比較:
1) 馬氏距離的計算是建立在總體樣本的基礎上的 ,這一點可以從上述協方差矩陣的解釋中可以得出,也就是說,如果拿同樣的兩個樣本,放入兩個不同的總體中,最后計算得出的兩個樣本間的馬氏距離通常是不相同的,除非這兩個總體的協方差矩陣碰巧相同;
2)在計算馬氏距離過程中,要求總體樣本數大於樣本的維數,否則得到的總體樣本協方差矩陣逆矩陣不存在,這種情況下,用歐氏距離計算即可。
3)還有一種情況,滿足了條件總體樣本數大於樣本的維數,但是協方差矩陣的逆矩陣仍然不存在,比如三個樣本點(3,4),(5,6)和(7,8),這種情況是因為這三個樣本在其所處的二維空間平面內共線。這種情況下,也采用歐氏距離計算。
4)在實際應用中“總體樣本數大於樣本的維數”這個條件是很容易滿足的,而所有樣本點出現3)中所描述的情況是很少出現的,所以在絕大多數情況下,馬氏距離是可以順利計算的,但是馬氏距離的計算是不穩定的,不穩定的來源是協方差矩陣,這也是馬氏距離與歐氏距離的最大差異之處。 
馬氏距離與歐氏距離的關系
(1)、協方差是單位矩陣時,樣本特征維度之間的相關性(協方差)為0,量綱一致,此時的馬氏距離=歐氏距離
(2)、協方差矩陣是對角矩陣時,樣本特征維度之間的量綱一致,此時的馬氏距離=標准化歐氏距離。
 

模式識別中,馬式距離較之於歐式距離的優點是(C、D) 機器學習 ML模型 易 A.平移不變性; B.旋轉不變性; C尺度不變性; D.考慮了模式的分布

曼哈頓距離(Manhattan Distance)

曼哈頓距離也叫做城市街區距離(city block)。 (1) 二維平面上兩點a(x1,y1)和b(x2,y2)的曼哈頓距離:

image-20200715120016516

(2) n維向量a(x11,x12,…x1n)和b(x21,x22,…,x2n)的曼哈頓距離:

image-20200715120035100

image-20200715120051683

image-20200715120011849

切比雪夫距離

切比雪夫距離是(x1,y1)到(x2,y2)的橫/縱坐標的最大值。 兩個n維樣本a(x11,x12,…,x1n)和b(x21,x22,…x2n)的切比雪夫距離:

image-20200715120027805

等價於:

image-20200715120040956

閔可夫斯基距離(Minkowski distance)

閔氏距離是歐氏距離的推廣,是對多個距離度量公式的概括性的表述,看看下圖

image-20200715120008153

(1) 當p = 1時,就是曼哈頓距離 (2) 當p = 2時,就是歐氏距離 (3) 當p ->∞時,就是切比雪夫距離

image-20200715120014477

image-20200715120047110

 
 
 
xxxxxxxxxx
 
 
 
 
歐氏距離、曼哈頓距離、切比雪夫距離和閔科夫斯基距離的缺點:
(1) 將各個特征的量綱(也就是單位)等同的看待了,但如:“10kg”和“10m”難道是等價的嗎?
(2) 沒有考慮各個分量的分布(期望、方差等)可能是不同的。
 

數據對象之間的相似度

  數據對象之間的相似度一定程度上可以看做是數據對象之間的相異度的否定。

余弦相似度(Cosine Similarity)

余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。相比距離度量,余弦相似度更加注重兩個向量在方向上的差異,而非距離或長度上。

對於兩個n維樣本點a(x11,x12,x13,…,x1n)和b(x21,x22,…x2n)可使用余弦公式:

image-20200715120057066

夾角余弦范圍為[-1,1],余弦值和夾角成反比,和相似度成正比 夾角余弦越大----->兩個向量的夾角越小----->相似度越大 夾角余弦越小---->兩個向量的夾角越大------->相似度越小

image-20200715120003893

image-20200715120022048

皮爾森相關系數(Pearson Correlation Coefficient)

又稱相關相似性,通過Peason相關系數來度量兩個用戶的相似性。計算時,首先找到兩個用戶共同評分過的項目集,然后計算這兩個向量的相關系數。

公式:

image-20200715120008795

202009251249075

傑卡德距離 & 傑拉德相似系數(Jaccard Similarity)

傑卡德相似系數 Jaccard系數主要用於計算符號度量或布爾值度量的個體間的相似度,因為個體的特征屬性都是由符號度量或者布爾值標識,因此無法衡量差異具 體值的大小,只能獲得“是否相同”這個結果,所以Jaccard系數只關心個體間共同具有的特征是否一致這個問題。集合A和集合B的交集元素在A,B並集中所占的比例,稱為兩個集合的傑卡德相似系數。

image-20200715120041470

image-20200715120025631

傑卡德相似系數是衡量兩個集合的相似度的一種指標。

首先計算出A和B的交(A ∩ B),以及A和B的並 (A ∪ B):

image-20200715120050380

然后利用公式進行計算:

image-20200715120022815

代碼實現:

image-20200715120051801

 

傑卡德距離 傑卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區分度。

image-20200715120034059

傑卡德相似系數與傑卡德距離的應用

1.傑卡德相似系數可用於衡量樣本的相似度。 如,A(0,1,1,1),B(1,0,1,1)將樣本看成一個集合,1表示集合包含該元素,0表示集合不包含該元素。 p:樣本A與B都是1的維度的個數 q:樣本A是1,B是0的維度的個數 r:樣本A是0,B是1的維度的個數 s:樣本A與B都是0的維度的個數 那么A和B的傑卡德相似系數:

image-20200715120054124

 
 
 
xxxxxxxxxx
 
 
 
 
為什么分母不加s呢?
對於傑卡德相似系數或傑卡德距離來說,它處理的都是非對稱變量(即狀態的兩個輸出不是同等重要的)。例如:疾病檢查的陽性和陰性結果,負匹配的數量s被認為是不重要的,可在計算時忽略。
 

2.舉例 考察兩個患者的症狀情況(發燒,咳嗽,白細胞升高,嘔吐,流鼻涕),如果他們的取值分別為(1,1,0,0,1)和(1,0,0,1,0),則它們的傑卡德距離為(2+1)/(1+2+1)=3/4,表示兩者的相異度,而1-3/4 = 1/4表示兩者的相異度。

 
 
 
xxxxxxxxxx
 
 
 
 
在CTR指標上,Jaccard的推薦精准度遠優於cosine。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM