1. 程式人生 > >相似度(距離計算)彙總

相似度(距離計算)彙總

一、說明

相似性度量用以描述兩個向量之間的相似性,是一個值域為一維的二元函式。一般情況,相似性度量本質上指距離度量,只不過數值指示剛好相反,如果是距離的話,數值越小,距離越近,而相似度越大;如果是相似度的話,數值越小,相似度越小,而距離越大。

相似性度量在機器學習中是一個非常基礎的概念,尤其在聚類、推薦系統等演算法中。

在工程應用中,也會使用一些不完全滿足距離度量基本性質的“非距離度量”[1]。

二、距離度量的基本性質:

        非負性:dist(x,y) >= 0

        同一性:dist(x,x) = 0

        對稱性:dist(x,y) = dist(y,x)

        三角不等式:dist(x,z)+dist(y,z) >= dist(x,y)

三、常用相似性度量

1、閔可夫斯基距離(Minkowski Distance)

2、曼哈頓距離(Manhattan Distance)

p=1時,閔可夫斯基距離就是曼哈頓距離

又稱城市街區距離,在方正的北京大街打車,行車距離就是曼哈頓距離,如果在山城重慶就不是了。

3、歐氏距離(Euclidean Distance)

p=2時,閔可夫斯基距離就是歐氏距離。

在平面幾何或者立體幾何中的距離,通常就是歐氏距離,所以歐氏距離也最容易理解。

4、切比雪夫距離(Chebyshev Distance)

p等於無窮大時,閔可夫斯基距離就是切比雪夫距離。

若將國際象棋棋盤放在二維直角座標系中,格子的邊長定義為1,座標的x軸及y軸和棋盤方格平行,原點恰落在某一格的中心點,則王從一個位置走到其他位置需要的最少步數恰為二個位置的切比雪夫距離,因此切比雪夫距離也稱為棋盤距離

。[2]

5、"加權(weighted)"閔可夫斯基距離

當樣本中不同屬性的重要性不同時,可使用"加權距離"(weighted distance)[1]。

6、餘弦相似度(Cosine Similarity)

餘弦相似性取值[-1,1],值越趨於1,表示兩個向量的相似度越高。餘弦相似度與向量的幅值無關,只與向量的方向相關,在文件相似度(TF-IDF)和圖片相似性(histogram)計算上都有它的身影[3]。

7、皮爾遜相關係數(Pearson Correlation)

餘弦相似度會受到向量的平移影響,怎樣才能實現平移不變性?在餘弦相似度的基礎上,每個向量減去這個向量均值組成的向量,也就是皮爾遜相關係數,有時候也直接叫相關係數。

當兩個向量均值都為0時,皮爾遜相對係數等於餘弦相似性。

8、馬氏距離(Mahalanobis Distance)

一個向量的不同維度如果是不同的量綱,更有甚者,維度之間是相關的,比如身高和體重組成的向量,在閔可夫斯基距離中等同對待,有時,這樣是不恰當的。馬氏距離利用 Cholesky transformation 消除了不同維度之間的相關性尺度不同[3]。

其中,S為樣本的協方差矩陣。當S是單位陣的時候,馬氏距離就是歐式距離;當S是對角陣的時候,馬氏距離是加權歐式距離。

很多時候,一個事物的有點也可能會構成它的缺點。這裡馬氏距離可以消除不同維度之間的不同尺度,就可能放大了變化細微維度的作用[4]。

我們可以按照連續性將屬性分為“連續屬性”和“離散屬性”;也可以按照有序性將屬性分為“有序屬性”和“無序屬性”[1]。上面的相似性度量都是關於“連續”並“有序”屬性的,下面給出幾個關於“離散屬性”和“無序屬性”的相似性度量。

9、漢明距離(Hamming Distance)

兩個等長字串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。

例如:字串“11110011”與“10010010”之間的漢明距離為3。

漢明距離可以在通訊中累計定長二進位制字中發生翻轉的錯誤資料位,所以它也被稱為訊號距離。漢明重量分析在包括資訊理論、編碼理論、密碼學等領域都有應用。[5]

如果要比較兩個不同長度的字串,不僅要進行替換,而且要進行插入與刪除的運算,在這種場合下,通常使用更加複雜的編輯距離等演算法。[5]

10、傑卡德相似係數(Jaccard Similarity)

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

傑卡德相似係數是從相似性度量的角度來表述的,從距離度量的角度,則有傑卡德距離(Jaccard Distance)

傑卡德相似係數和傑卡德距離本質上是一樣的,只是表述角度不同。

在聚類中,傑卡德相似係數可以作為聚類的效能度量[1]。在推薦系統中,傑卡德相似係數可以度量兩個購買若干商品的使用者之間的相似性[3]。

11、KL散度(Kullback-Leibler Divergence)

又叫相對熵,表示兩個隨機分佈之間的相似性

可以證明,KL散度大於等於0,當p=q時等於0;KL散度不滿足對稱性。

12、Hellinger距離(Hellinger Distance)

在七月演算法的課程裡,還講了一個與KL散度類似的距離,表示隨機分佈之間的相似性的Hellinger距離

當α=0時

這時,Hellinger距離就是兩個隨機分佈取平方根之後的歐式距離,符合距離度量的四個性質,是嚴格的距離度量。

轉自:http://www.jianshu.com/p/9b7166997a3e

相關推薦

相似距離計算彙總

一、說明相似性度量用以描述兩個向量之間的相似性,是一個值域為一維的二元函式。一般情況,相似性度量本質上指距離度量,只不過數值指示剛好相反,如果是距離的話,數值越小,距離越近,而相似度越大;如果是相似度的話,數值越小,相似度越小,而距離越大。相似性度量在機器學習中是一個非常基礎的概念,尤其在聚類、推薦系統等演算

計算圖片的相似深度學習

轉載:https://blog.csdn.net/hjimce/article/details/50098483 一、相關理論      本篇博文主要講解2015年CVPR的一篇關於影象相似度計算的文章:《Learning to Compar

【LOJ#6041】事情的相似字尾自動機

【LOJ#6041】事情的相似度(字尾自動機) 題面 LOJ 題解 \(\mbox{YCB}\)搬了這道題目。。。\(\mbox{QwQ}\) 還是用到\(lcp\)就是\(parent\)樹上的\(LCA\)的\(len\)。 每次詢問顯然就是區間內點的貢獻。 那麼考慮所有可能出現的點對。 顯然對於

SQL Server對比兩字串的相似函式演算法

ALTER FUNCTION FNStrCompare (@Val1 VARCHAR(50),---比較字串1 @Val2 VARCHAR(50),---比較字串2 @Break VARCHAR(10) ---分隔符 ) RETURNS INT AS BEGIN DECLARE @

5-11 基於詞頻的檔案相似30分

5-11 基於詞頻的檔案相似度 (30分) 實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文(因為分詞太難了),只考慮長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。 輸

矩陣式比較兩文字字串相似包含漢字方法兩則java程式碼

package com.gsww.ctyxy.util; import java.text.NumberFormat;   import java.util.Locale;    /**  * 比較兩個字串的相似度  */   public class AutomaticRating {   /*    pu

7-6 集合相似25 分

給定兩個整數集合,它們的相似度定義為:N​c​​/N​t​​×100%。其中N​c​​是兩個集合都有的不相等整數的個數,N​t​​是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相

向量文字相似或點的距離計算方案彙總

       鑑於日常學習中常遇到將文字資料等轉為向量,然後計算向量相似度的問題,現將常用方案進行初步彙總,如統計不足敬請留言提示補充:1、餘弦相似度(cosine)        公式:                                即:以向量的夾角為考量角

計算兩篇文件的餘弦相似tfidf

# -*- coding:utf-8 -*- """ @author: Linlifang """ import os import jieba import sys import re import string from sklearn.feature_extracti

51nod 1304 字符串的相似exkmp

stream style iostream class code 相似度 clas pac out 拓展kmp裸題 自己跟自己匹配即可 模板測試=v= #include <iostream> #include <cstring> using n

51Nod - 1304 :字符串的相似 裸的擴展KMP

字母 前綴 scan length clas str input printf while 我們定義2個字符串的相似度等於兩個串的相同前綴的長度。例如 "abc" 同 "abd" 的相似度為2,"aaa" 同 "aaab" 的相似度為3。 給出一個字符串S,計算S同他所有

皮爾遜相關系數與余弦相似Pearson Correlation Coefficient & Cosine Similarity

blog 相關 htm mage cnblogs 變量 對比 兩個 是把 之前《皮爾遜相關系數(Pearson Correlation Coefficient, Pearson‘s r)》一文介紹了皮爾遜相關系數。那麽,皮爾遜相關系數(Pearson Correlation

計算時間複雜--簡單版

步驟: 1、找到執行次數最多的語句 2、語句執行語句的數量級 3、用O表示結果 計算時間複雜度的3個出發點,掌握這三個出發點,那麼一向搞不懂的時間複雜度就可以迎刃而解啦。 然後: 1、用常數1取代執行時間中的所有加法常數 2、在修改後的執行次數函式中,只保留最高

文件的相似2--最小雜湊簽名

           接著上一篇的部落格繼續下去,這篇部落格主要講下最小雜湊簽名的東西。           對於上篇部落格中提到的shingle,可以說是在壓縮資料量的基礎上又儘可能保留了源文件的特徵,以便於後面對不同的文件進行相似度比較。但是我們會發現,shingle集

L2-005 集合相似 25 分) STL——set

-h line pin scripts 正整數 判斷 gin can 們的 鏈接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070149828608 題目: 給

LA 3211 飛機調2—SAT

選擇 排列 tps pri abs true nbsp queue 需要 https://vjudge.net/problem/UVALive-3211 題意: 有n架飛機需要著陸,每架飛機都可以選擇“早著陸”和“晚著陸”

Nginx調反向代理配置

nginx調度 nginx反向代理 nginx輪詢設置 nginx記錄訪問ip nginx反向代理優點:負載均衡,預防單點故

Linux進程啟動過程分析do_execve(可執行程序的加載和運行)---Linux進程的管理與調十一

[] flag 表示 conn nali 最終 roc 不同的 recursion execve系統調用 execve系統調用 我們前面提到了, fork, vfork等復制出來的進程是父進程的一個副本, 那麽如何我們想加載新的程序, 可以通過execve來加載和啟動新的程

7-2 列車調 25 分

alt 問題 opened ons max esp spa lose code 題目: 樣例輸入: 98 4 2 5 3 9 1 6 7 樣例輸出: 4 思路: 要想得到最少的調度序列,那就要找出最少的下降序列的個數。拿上邊的例子來說:有如下四個下降序列 8 4 2

K-L散相對熵的理解

資訊量 I I I 訊息中有意義的內容成為資訊。資訊量函式: