《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 機(jī)器學(xué)習(xí)基礎(chǔ):相似度和距離度量究竟是什么

機(jī)器學(xué)習(xí)基礎(chǔ):相似度和距離度量究竟是什么

2019-10-09

  相似度度量和距離度量在整個(gè)機(jī)器學(xué)習(xí)領(lǐng)域都是非常基礎(chǔ)的概念,數(shù)據(jù)科學(xué)家 Gonzalo Ferreiro Volpi 近日通過淺顯易懂的推薦系統(tǒng)示例介紹了這些概念以及它們的計(jì)算方式,。

  在推薦系統(tǒng)中,,我們經(jīng)常談到「相似度度量」這一概念。為什么,?因?yàn)樵谕扑]系統(tǒng)中,基于內(nèi)容的過濾算法和協(xié)同過濾算法都使用了某種特定的相似度度量來確定兩個(gè)用戶或商品的向量之間的相等程度。所以總的來說,,相似度度量不僅僅是向量之間的距離。

  注:我的所有工作都可在我的 GitHub 頁面查看:https://github.com/gonzaferreiro,,其中當(dāng)然也包括本文內(nèi)容的代碼庫以及有關(guān)推薦系統(tǒng)的更多內(nèi)容,。

  在任意類型的算法中,最常見的相似度度量是向量之間夾角的余弦,,即余弦相似度,。設(shè) A 為用戶的電影評分 A 列表,B 為用戶的電影評分 B 列表,,那么它們之間的相似度可以這樣計(jì)算:

640.webp (23).jpg

  從數(shù)學(xué)上看,,余弦相似度衡量的是投射到一個(gè)多維空間中的兩個(gè)向量之間的夾角的余弦。當(dāng)在多維空間中繪制余弦相似度時(shí),,余弦相似度體現(xiàn)的是每個(gè)向量的方向關(guān)系(角度),,而非幅度。如果你想要幅度,則應(yīng)計(jì)算歐幾里德距離,。

  余弦相似度很有優(yōu)勢,,因?yàn)榧词箖蓚€(gè)相似的文件由于大小而在歐幾里德距離上相距甚遠(yuǎn)(比如文檔中出現(xiàn)很多次的某個(gè)詞或多次觀看過同一部電影的某用戶),它們之間也可能具有更小的夾角,。夾角越小,,則相似度越高。

640.webp (22).jpg

  如下例所示,,來自 www.machinelearningplus.com

  上圖統(tǒng)計(jì)了 sachin,、dhoni、cricket 這三個(gè)詞在所示的三個(gè)文檔中的出現(xiàn)次數(shù),。據(jù)此,,我們可以繪出這三個(gè)向量的圖,從而輕松地看出衡量這些文檔的余弦和歐幾里德距離的差異:

640.webp (21).jpg

  按照定義,,常規(guī)余弦相似度反映了方向的差異,,而不是位置的差異。因此,,使用余弦相似度指標(biāo)無法考慮到用戶評分這樣的差異,。調(diào)整后余弦相似度可以緩解這一問題,具體做法是從每對共同評分的配對減去各自用戶的平均評分,,其定義如下:

640.webp (20).jpg

  我們看看下面這個(gè)來自 Stack Overflow 的例子,,這能更好地解釋余弦相似度和調(diào)整過的余弦相似度之間的差異:

  假設(shè)一位用戶為兩部電影分別給出了 0~5 的評分。

640.webp (19).jpg

640.webp (18).jpg

  直觀而言,,我們可以看到用戶 b 和 c 的品味相近,,而 a 則頗為不同。但常規(guī)的余弦相似度卻給出了不一樣的結(jié)果,。在這樣的案例中,,計(jì)算調(diào)整后余弦相似度能讓我們更好地理解用戶之間的相近程度。

640.webp (17).jpg

  順便一提,,在上一篇有關(guān)推薦系統(tǒng)的文章中,,我們給出了以下用于計(jì)算調(diào)整后余弦相似度的函數(shù):

  from scipy import spatial

  def adjusted_cos_distance_matrix(size, matrix, row_column):

  distances = np.zeros((size,size))

  if row_column == 0:

  M_u = matrix.mean(axis=1)

  m_sub = matrix - M_u[:,None]

  if row_column == 1:

  M_u = matrix.T.mean(axis=1)

  m_sub = matrix.T - M_u[:,None]

  for first in range(0,size):

  for sec in range(0,size):

  distance = spatial.distance.cosine(m_sub[first],m_sub[sec])

  distances[first,sec] = distance

  return distances

  使用這個(gè)函數(shù)的方式非常簡單,只需輸入:

  matrix:這就是用戶之間的評分或觀點(diǎn)等你衡量的東西或你的業(yè)務(wù)商品的原始矩陣,。

  row_columns:如果你衡量的是列之間的距離,,則設(shè)為 1;如果你衡量的是行之間的距離,,則設(shè)為 0,;

  size:所得矩陣的所需大小。也就是說,,當(dāng)尋找用戶或商品相似度時(shí),,這就是用戶或商品的數(shù)量。所以如果有 500 個(gè)不同用戶,,則距離矩陣的大小就為 500×500,。

  下面給出了一個(gè)參考示例:

  user_similarity = adjusted_cos_distance_matrix(n_users,data_matrix,0)

  item_similarity = adjusted_cos_distance_matrix(n_items,data_matrix,1)

  最后,我們簡要回顧一些可用在推薦系統(tǒng)中計(jì)算相似度的其它方法,,但也可用于機(jī)器學(xué)習(xí)中其它任何基于距離的算法:

  1. 歐幾里德距離:如果繪制在 n 維空間中,,相似的項(xiàng)取決于彼此之間的相近程度。

    640.webp (16).jpg

  2. 皮爾森相關(guān)性或相關(guān)相似度:告訴了我們兩個(gè)項(xiàng)之間的相關(guān)程度,。相關(guān)性越高,,則相似度越高。

640.webp (14).jpg

  3. 均方差:在于計(jì)算用戶評分之間的平均平方差,。MSE 更側(cè)重于懲罰更大的錯誤,。

640.webp (13).jpg

  然后:

640.webp (12).jpg

  其中 |??????| 是用戶 ?? 和 ?? 都評價(jià)過的商品的數(shù)量。

  用戶-用戶以及商品-商品相似度示例

  我們借助之前介紹推薦系統(tǒng)的文章來簡要回顧一下協(xié)同過濾的工作方式:假設(shè)我喜歡《盲刺客》和《莫斯科紳士》這兩本書,;我的朋友 Matias 也喜歡《盲刺客》和《莫斯科紳士》,,但也還喜歡《Where the crawdads sing》??雌饋砦遗c Matias 有一樣的興趣,。所以你可能會想我也會喜歡《Where the crawdads sing》,即使我還沒讀過它,。協(xié)同過濾也正是基于這一邏輯,,只是你不僅可以比較用戶,也可以比較商品,。

  我們可視化地比較看看推薦系統(tǒng)的用戶-用戶相似度與商品-商品相似度之間的差異:

  用戶-用戶相似度

  商品-商品相似度

640.webp (11).jpg

640.webp (10).jpg

  現(xiàn)在,,理解了這一點(diǎn),我們用下面的示例解釋說明一些度量,,我認(rèn)為這清楚辨明了用戶-用戶以及商品-商品相似度:

  用戶-用戶相似度詳解

640.webp (9).jpg

  這里給出了一個(gè)用戶電影評分矩陣,。為了以更加實(shí)用的方式理解這一點(diǎn),我們先根據(jù)上表計(jì)算一下用戶 (A, C) 和 (B, C) 的相似度,。用戶 A 和 C 共同評分的電影是 x2 和 x4,,B 和 C 共同評分的電影是 x2、x4,、x5,。知道了這些信息后,我們計(jì)算皮爾森相關(guān)性或相關(guān)相似度:

640.webp (8).jpg

  A 和 C 之間的相關(guān)性比 B 和 C 之間的相關(guān)性大,。因此,,A 和 C 更相似,A 喜歡的電影會被推薦給 C,,C 喜歡的也會被推薦給 A,。

  商品-商品相似度詳解

640.webp (7).jpg

  這里的平均商品評分(mean item rating)是給定商品的所有評分的平均(比較看看我們在用戶-用戶過濾中看到的表格)。這里要計(jì)算的不是用戶-用戶相似度,而是商品-商品相似度,。要做到這一點(diǎn),,我們首先需要找到給這些商品評分過的用戶,然后再基于這些評分來計(jì)算這些商品之間的相似度,。我們計(jì)算一下電影 (x1, x4) 和 (x1, x5) 之間的相似度,。給電影 x1 和 x4 評過分的用戶是 A 和 B,而給電影 x1 和 x5 評過分的用戶也是 A 和 B,。

640.webp (6).jpg

  x1 和 x4 的相似度大于 x1 和 x5 的相似度,。基于這些相似度值,,如果有任何用戶搜索電影 x1,,他們將被推薦 x4;反之亦然,。

  關(guān)于推薦系統(tǒng)的內(nèi)容就到此為止了,。但是,請記住相似度度量和距離度量在整個(gè)機(jī)器學(xué)習(xí)領(lǐng)域都是非?;A(chǔ)的概念,,理解它們對進(jìn)一步的學(xué)習(xí)至關(guān)重要。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。