數據挖掘之距離計算算法

在數據分析和數據挖掘的過程當中,咱們常常須要知道個體間差別的大小,進而評價個體的類似性和類別。最多見的是數據分析中的相關分析,數據挖掘中的分類和聚類算法,如K最近鄰(KNN)和K均值(K-Means)。固然衡量個體差別的方法有不少,最近查閱了相關的資料,這裏整理羅列下。算法

爲了方便下面的解釋和舉例,先設定咱們要比較X個體和Y個體間的差別,它們都包含了N個維的特徵,即X=(x1, x2, x3, … xn),Y=(y1, y2, y3, … yn)。下面來看看主要能夠用哪些方法來衡量二者的差別,主要分爲距離度量和類似度度量。ide

距離度量idea

距離度量(Distance)用於衡量個體在空間上存在的距離,距離越遠說明個體間的差別越大。ci

歐幾里得距離(Euclidean Distance)數據分析

歐氏距離是最多見的距離度量,衡量的是多維空間中各個點之間的絕對距離。公式以下:it

Euclidean Distance

由於計算是基於各維度特徵的絕對數值,因此歐氏度量須要保證各維度指標在相同的刻度級別,好比對身高(cm)和體重(kg)兩個單位不一樣的指標使用歐式距離可能使結果失效。數據挖掘

明可夫斯基距離(Minkowski Distance)io

明氏距離是歐氏距離的推廣,是對多個距離度量公式的歸納性的表述。公式以下:變量

Minkowski Distance

這裏的p值是一個變量,當p=2的時候就獲得了上面的歐氏距離。cli

曼哈頓距離(Manhattan Distance)

曼哈頓距離來源於城市區塊距離,是將多個維度上的距離進行求和後的結果,即當上面的明氏距離中p=1時獲得的距離度量公式,以下:

Manhattan Distance

切比雪夫距離(Chebyshev Distance)

切比雪夫距離起源於國際象棋中國王的走法,咱們知道國際象棋國王每次只能往周圍的8格中走一步,那麼若是要從棋盤中A格(x1, y1)走到B格(x2, y2)最少須要走幾步?擴展到多維空間,其實切比雪夫距離就是當p趨向於無窮大時的明氏距離:

Chebyshev Distance

其實上面的曼哈頓距離、歐氏距離和切比雪夫距離都是明可夫斯基距離在特殊條件下的應用。

馬哈拉諾比斯距離(Mahalanobis Distance)

既然歐幾里得距離沒法忽略指標度量的差別,因此在使用歐氏距離以前須要對底層指標進行數據的標準化,而基於各指標維度進行標準化後再使用歐氏距離就衍生出來另一個距離度量——馬哈拉諾比斯距離(Mahalanobis Distance),簡稱馬氏距離。

類似度度量

類似度度量(Similarity),即計算個體間的類似程度,與距離度量相反,類似度度量的值越小,說明個體間類似度越小,差別越大。

向量空間餘弦類似度(Cosine Similarity)

餘弦類似度用向量空間中兩個向量夾角的餘弦值做爲衡量兩個個體間差別的大小。相比距離度量,餘弦類似度更加註重兩個向量在方向上的差別,而非距離或長度上。公式以下:

Cosine Similarity

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

即相關分析中的相關係數r,分別對X和Y基於自身整體標準化後計算空間向量的餘弦夾角。公式以下:

Pearson Correlation Coefficient

Jaccard類似係數(Jaccard Coefficient)

Jaccard係數主要用於計算符號度量或布爾值度量的個體間的類似度,由於個體的特徵屬性都是由符號度量或者布爾值標識,所以沒法衡量差別具體值的大小,只能得到「是否相同」這個結果,因此Jaccard係數只關心個體間共同具備的特徵是否一致這個問題。若是比較X與Y的Jaccard類似係數,只比較xn和yn中相同的個數,公式以下:

Jaccard Coefficient

調整餘弦類似度(Adjusted Cosine Similarity)

雖然餘弦類似度對個體間存在的偏見能夠進行必定的修正,可是由於只能分辨個體在維之間的差別,無法衡量每一個維數值的差別,會致使這樣一個狀況:好比用戶對內容評分,5分制,X和Y兩個用戶對兩個內容的評分分別爲(1,2)和(4,5),使用餘弦類似度得出的結果是0.98,二者極爲類似,但從評分上看X彷佛不喜歡這2個內容,而Y比較喜歡,餘弦類似度對數值的不敏感致使告終果的偏差,須要修正這種不合理性,就出現了調整餘弦類似度,即全部維度上的數值都減去一個均值,好比X和Y的評分均值都是3,那麼調整後爲(-2,-1)和(1,2),再用餘弦類似度計算,獲得-0.8,類似度爲負值而且差別不小,但顯然更加符合現實。

歐氏距離與餘弦類似度

歐氏距離是最多見的距離度量,而餘弦類似度則是最多見的類似度度量,不少的距離度量和類似度度量都是基於這二者的變形和衍生,因此下面重點比較下二者在衡量個體差別時實現方式和應用環境上的區別。

藉助三維座標系來看下歐氏距離和餘弦類似度的區別:

distance and similarity

從圖上能夠看出距離度量衡量的是空間各點間的絕對距離,跟各個點所在的位置座標(即個體特徵維度的數值)直接相關;而餘弦類似度衡量的是空間向量的夾角,更加的是體如今方向上的差別,而不是位置。若是保持A點的位置不變,B點朝原方向遠離座標軸原點,那麼這個時候餘弦類似度cosθ是保持不變的,由於夾角不變,而A、B兩點的距離顯然在發生改變,這就是歐氏距離和餘弦類似度的不一樣之處。

根據歐氏距離和餘弦類似度各自的計算方式和衡量特徵,分別適用於不一樣的數據分析模型:歐氏距離可以體現個體數值特徵的絕對差別,因此更多的用於須要從維度的數值大小中體現差別的分析,如使用用戶行爲指標分析用戶價值的類似度或差別;而餘弦類似度更多的是從方向上區分差別,而對絕對的數值不敏感,更多的用於使用用戶對內容評分來區分用戶興趣的類似度和差別,同時修正了用戶間可能存在的度量標準不統一的問題(由於餘弦類似度對絕對數值不敏感)。

上面都是對距離度量和類似度度量的一些整理和彙總,在現實的使用中選擇合適的距離度量或類似度度量能夠完成不少的數據分析和數據挖掘的建模,後續會有相關的介紹。

相關文章
相關標籤/搜索