在數(shù)據(jù)挖掘和分析的過程中,我們經(jīng)常需要知道某兩個或多個分析對象之間的差異性蝇完,從而判別分析對象之間的相似性和所屬類別插爹。在數(shù)據(jù)分析和挖掘領(lǐng)域舒岸,用得最多的就是“分類”和“聚類”算法锄码,如:KNN 和 K-Means局齿。今天將主流的一些距離計算算法做一個歸納罢浇。
為了方便理解讼积,我們暫定分析的對象只有兩個個體 A 和個體 B,并且兩個個體在同一個維度:
A(a1,a2,a3...an)
B(b1,b2,b3...bn)
我們先來了解一下相關(guān)名詞烦衣,距離度量(Distance)是用來衡量空間上兩個個體之間的距離歹河,接下來一些算法公式中會頻繁使用這個概念,我們在公式中用“dist“表示花吟。
歐幾里得距離
這是最常見的距離度量公式秸歧,讀書在數(shù)學(xué)課本中已有接觸,公式如下:
這里需要提醒的是衅澈,我們開篇已經(jīng)注明键菱,是在同一個維度上的兩個對象,如果一個描述的是距離(單位M)今布,一個描述的是重量(單位KG)经备,這樣比較沒有任何意義拭抬,也沒有可比性。
我們將上面的距離公式做個變形
做這樣變形的目的就是是上面一些看上去僵硬不變的線條符號用數(shù)字表示出來侵蒙,因為數(shù)字的是靈活的玖喘,會給人帶來啟發(fā),如上面的公式中就有人獲得靈感蘑志,將公式中的“2”用變量代替,結(jié)果會如何贬派,這個人叫“明可夫斯基”急但,最后的距離公式被后人稱作:
明可夫斯基距離
當t=2時,明可夫斯基距離公式等于歐幾里得距離公式搞乏,使用絕對值因為變量t不能確保兩者之差為非負數(shù)(關(guān)于這個問題上篇文章有提到過)波桩。
當t=1時,明可夫斯基距離等于曼哈頓距離请敦。
曼哈頓距離
曼哈頓距離依賴座標系統(tǒng)镐躲,它還有一個名字叫“城市區(qū)塊距離”感興趣的可以移步這里
上面看到了當t無限縮小后衍生的距離公式,那么當t無限擴大后又是什么樣的結(jié)
果呢侍筛?我們將明可夫斯基距離公式中的“t”放大到無窮大:
這就變成了“切比雪夫距離”萤皂,這些距離都是歐式距離的特殊應(yīng)用。歐式距離不能忽略比較對象的維度匣椰,所以在針對不同維度的比較對象時裆熙,需要對數(shù)據(jù)做標準化處理,這些經(jīng)過處理后的標準數(shù)據(jù)禽笑,再采用歐式距離比較時有個新的名字:馬哈拉諾比斯距離入录。
余弦相似度
這里有個和“距離度量”類似的名詞“相似度度量”,相似度度量(Similarity)在下面的會頻繁用到佳镜,我們用 “Sim” 表示
皮爾森相關(guān)系數(shù)
即相關(guān)分析中的相關(guān)系數(shù) r僚稿,分別對 A 和 B 基于自身總體標準化后計算空間向量的余弦夾角:
歐氏距離與余弦相似度
歐氏距離是最常見的距離度量,而余弦相似度則是最常見的相似度度量蟀伸,很多的距離度量和相似度度量都是基于這兩者的變形和衍生蚀同,所以下面重點比較下兩者在衡量個體差異時實現(xiàn)方式和應(yīng)用環(huán)境上的區(qū)別。
借助三維坐標系來看下歐氏距離和余弦相似度的區(qū)別:
從圖上可以看出距離度量衡量的是空間各點間的絕對距離啊掏,跟各個點所在的位置坐標(即個體特征維度的數(shù)值)直接相關(guān)唤崭;而余弦相似度衡量的是空間向量的夾角,更加的是體現(xiàn)在方向上的差異脖律,而不是位置谢肾。如果保持A點的位置不變,B點朝原方向遠離坐標軸原點小泉,那么這個時候余弦相似度cosθ是保持不變的芦疏,因為夾角不變冕杠,而A、B兩點的距離顯然在發(fā)生改變酸茴,這就是歐氏距離和余弦相似度的不同之處分预。
根據(jù)歐氏距離和余弦相似度各自的計算方式和衡量特征,分別適用于不同的數(shù)據(jù)分析模型:歐氏距離能夠體現(xiàn)個體數(shù)值特征的絕對差異薪捍,所以更多的用于需要從維度的數(shù)值大小中體現(xiàn)差異的分析笼痹,如使用用戶行為指標分析用戶價值的相似度或差異;而余弦相似度更多的是從方向上區(qū)分差異酪穿,而對絕對的數(shù)值不敏感凳干,更多的用于使用用戶對內(nèi)容評分來區(qū)分用戶興趣的相似度和差異,同時修正了用戶間可能存在的度量標準不統(tǒng)一的問題被济。
在實際應(yīng)用中都是距離度量和相似度度量結(jié)合使用救赐,任何一個算法都是在特定場景下發(fā)揮到極致,脫離使用場景只磷,這些偉大的發(fā)明僅僅是個公式经磅。