相似度和相异度、常用距离度量、余弦相似度
通常,具有若干屬性的對象之間的鄰近度用單個屬性的鄰近度的組合來定義,因此我們首先討論具有單個屬性的對象之間的鄰近度。考慮由一個標稱屬性描述的對象,對于兩個這樣的對象,相似意味什么呢?由于標稱屬性只攜帶了對象的相異性信息,因此我們只能說兩個對象有相同的值,或者沒有。因而在這種情況下,如果屬性值匹配,則相似度定義為1,否則為0;相異度用相反的方法定義:如果屬性值匹配,相異度為0,否則為1。
對于具有單個序數屬性的對象,情況更為復雜,因為必須考慮序信息。考慮一個在標度{poor, fair, OK, good, wonderful}上測量產品(例如,糖塊)質量的屬性。一個評定為wonderful的產品P1與一個評定為good的產品P2應當比它與一個評定為OK的產品P3更接近。為了量化這種觀察,序數屬性的值常常映射到從0或1開始的相繼整數,例如,{poor = 0, fair =1, OK = 2, good = 3, wonderful = 4}。于是,P1與P2之間的相異度d(P1, P2) = 3?? 2 = 1,或者,如果我們希望相異度在0和1之間取值,d(P1, P2) = (3?? 2)/4 = 0.25;序數屬性的相似度可以定義為s = 1?? d。
序數屬性相似度(相異度)的這種定義可能使讀者感到有點擔心,因為這里我們定義了相等的區間,而事實并非如此。如果根據實際情況,我們應該計算出區間或比率屬性。值fair與good的差真和OK與wonderful的差相同嗎?可能不相同,但是在實踐中,我們的選擇是有限的,并且在缺乏更多信息的情況下,這是定義序數屬性之間鄰近度的標準方法。
對于區間或比率屬性,兩個對象之間的相異性的自然度量是它們的值之差的絕對值。例如,我們可能將現在的體重與一年前的體重相比較,說"我重了10磅。"在這類情況下,相異度通常在0和 之間,而不是在0和1之間取值。如前所述,區間或比率屬性的相似度通常轉換成相異度。
表2-7總結了這些討論。在該表中,x和y是兩個對象,它們具有一個指明類型的屬性,d(x, y)和s(x, y)分別是x和y之間的相異度和相似度(分別用d和s表示)。其他方法也是可能的,但是表中的這些是最常用的。
表2-7? 簡單屬性的相似度和相異度
閔可夫斯基距離(Minkowski distance)來推廣:
| ? |
其中r是參數。下面是閔可夫斯基距離的三個最常見的例子。
r = 1,城市街區(也稱曼哈頓、出租車、L1范數)距離。一個常見的例子是漢明距離(Hamming distance),它是兩個具有二元屬性的對象(即兩個二元向量)之間不同的二進制位個數。
r = 2,歐幾里得距離(L2范數)。
r =? ,上確界(Lmax或L 范數)距離。這是對象屬性之間的最大距離。切比雪夫距離,更正式地,L 距離由公式(2-3)定義:
| ? |
注意不要將參數r與維數(屬性數)n混淆。歐幾里得距離、曼哈頓距離和上確界距離是對n的所有值(1, 2, 3,...)定義的,并且指定了將每個維(屬性)上的差的組合成總距離的不同方法。
通常,文檔用向量表示,向量的每個屬性代表一個特定的詞(術語)在文檔中出現的頻率。當然,實際情況要復雜得多,因為需要忽略常用詞,并使用各種技術處理同一個詞的不同形式、不同的文檔長度以及不同的詞頻。
盡管文檔具有數以百千計或數以萬計的屬性(詞),但是每個文檔向量都是稀疏的,因為它具有相對較少的非零屬性值。(文檔規范化并不對零詞目創建非零詞目,即文檔規范化保持稀疏性。)這樣,與事務數據一樣,相似性不能依賴共享0的個數,因為任意兩個文檔多半都不會包含許多相同的詞,從而如果統計0-0匹配,則大多數文檔都與其他大部分文檔非常類似。因此,文檔的相似性度量不僅應當像Jaccard度量一樣需要忽略0-0匹配,而且還必須能夠處理非二元向量。下面定義的余弦相似度(cosine similarity)就是文檔相似性最常用的度量之一。如果x和y是兩個文檔向量,則
| ? |
其中," "表示向量點積, 。
例2.18? 兩個文檔向量的余弦相似度? 該例計算下面兩個數據對象的余弦相似度,這些數據對象可能代表文檔向量:
總結
以上是生活随笔為你收集整理的相似度和相异度、常用距离度量、余弦相似度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通俗易懂的泰勒展开微积分推导过程
- 下一篇: TensorFlow学习笔记(十六)tf