數學中的常見的距離公式
數學中的常見的距離公式
轉載自:點選開啟連結
- 1. 歐氏距離,最常見的兩點之間或多點之間的距離表示法,又稱之為歐幾里得度量,它定義於歐幾里得空間中,如點 x = (x1,...,xn) 和 y = (y1,...,yn) 之間的距離為:
(1)二維平面上兩點a(x1,y1)與b(x2,y2)間的歐氏距離:
(2)三維空間兩點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離:
(3)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的歐氏距離:
也可以用表示成向量運算的形式:
其上,二維平面上兩點歐式距離,程式碼可以如下編寫:
- //unixfy:計算歐氏距離
- double euclideanDistance(const vector<double>& v1, const vector<double>& v2)
- {
- assert(v1.size() == v2.size());
- double ret = 0.0;
- for (vector<double>::size_type i = 0; i != v1.size(); ++i)
- {
- ret += (v1[i] - v2[i]) * (v1[i] - v2[i]);
- }
- return sqrt(ret);
- }
- 2. 曼哈頓距離,我們可以定義曼哈頓距離的正式意義為L1-距離或城市區塊距離,也就是在歐幾里得空間的固定直角座標系上兩點所形成的線段對軸產生的投影的距離總和。例如在平面上,座標(x1, y1)的點P1與座標(x2, y2)的點P2的曼哈頓距離為:,要注意的是,曼哈頓距離依賴座標系統的轉度,而非系統在座標軸上的平移或對映。
(1)二維平面兩點a(x1,y1)與b(x2,y2)間的曼哈頓距離(2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的曼哈頓距離
- 3. 切比雪夫距離,若二個向量或二個點p 、and q,其座標分別為及,則兩者之間的切比雪夫距離定義如下:,
(1)二維平面兩點a(x1,y1)與b(x2,y2)間的切比雪夫距離(2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的切比雪夫距離這個公式的另一種等價形式是
- 4. 閔可夫斯基距離(Minkowski Distance),閔氏距離不是一種距離,而是一組距離的定義。
(1) 閔氏距離的定義兩個n維變數a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的閔可夫斯基距離定義為:其中p是一個變引數。當p=1時,就是曼哈頓距離當p=2時,就是歐氏距離當p→∞時,就是切比雪夫距離根據變引數的不同,閔氏距離可以表示一類的距離。
-
5. 標準化歐氏距離 (Standardized Euclidean distance ),標準化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標準歐氏距離的思路:既然資料各維分量的分佈不一樣,那先將各個分量都“標準化”到均值、方差相等。至於均值和方差標準化到多少,先複習點統計學知識。
-
6. 馬氏距離(Mahalanobis Distance)(協方差矩陣中每個元素是各個向量元素之間的協方差Cov(X,Y),Cov(X,Y) = E{ [X-E(X)] [Y-E(Y)]},其中E為數學期望)
(2)馬氏距離的優缺點:量綱無關,排除變數之間的相關性的干擾。「微博上的seafood高清版點評道:原來馬氏距離是根據協方差矩陣演變,一直被老師誤導了,怪不得看Killian在05年NIPS發表的LMNN論文時候老是看到協方差矩陣和半正定,原來是這回事」 - 7、巴氏距離(Bhattacharyya Distance),在統計中,Bhattacharyya距離測量兩個離散或連續概率分佈的相似性。它與衡量兩個統計樣品或種群之間的重疊量的Bhattacharyya係數密切相關。Bhattacharyya距離和Bhattacharyya係數以20世紀30年代曾在印度統計研究所工作的一個統計學家A. Bhattacharya命名。同時,Bhattacharyya係數可以被用來確定兩個樣本被認為相對接近的,它是用來測量中的類分類的可分離性。
(1)巴氏距離的定義對於離散概率分佈 p和q在同一域 X,它被定義為:
其中:
是Bhattacharyya係數。對於連續概率分佈,Bhattacharyya係數被定義為:
在這兩種情況下,巴氏距離並沒有服從三角不等式.(值得一提的是,Hellinger距離不服從三角不等式)。對於多變數的高斯分佈 ,
,
和是手段和協方差的分佈。需要注意的是,在這種情況下,第一項中的Bhattacharyya距離與馬氏距離有關聯。(2)Bhattacharyya係數Bhattacharyya係數是兩個統計樣本之間的重疊量的近似測量,可以被用於確定被考慮的兩個樣本的相對接近。計算Bhattacharyya係數涉及整合的基本形式的兩個樣本的重疊的時間間隔的值的兩個樣本被分裂成一個選定的分割槽數,並且在每個分割槽中的每個樣品的成員的數量,在下面的公式中使用
考慮樣品a 和 b ,n是的分割槽數,並且,被一個 和 b i的日分割槽中的樣本數量的成員。更多介紹請參看:http://en.wikipedia.org/wiki/Bhattacharyya_coefficient。
- 8. 漢明距離(Hamming distance), 兩個等長字串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。例如字串“1111”與“1001”之間的漢明距離為2。應用:資訊編碼(為了增強容錯性,應使得編碼間的最小漢明距離儘可能大)。
或許,你還沒明白我再說什麼,不急,看下上篇blog中第78題的第3小題整理的一道面試題目,便一目瞭然了。如下圖所示:
- //動態規劃:
- //f[i,j]表示s[0...i]與t[0...j]的最小編輯距離。
- f[i,j] = min { f[i-1,j]+1, f[i,j-1]+1, f[i-1,j-1]+(s[i]==t[j]?0:1) }
- //分別表示:新增1個,刪除1個,替換1個(相同就不用替換)。
與此同時,面試官還可以繼續問下去:那麼,請問,如何設計一個比較兩篇文章相似性的演算法?(這個問題的討論可以看看這裡:http://t.cn/zl82CAH,及這裡關於simhash演算法的介紹:http://www.cnblogs.com/linecong/archive/2010/08/28/simhash.html),接下來,便引出了下文關於夾角餘弦的討論。(上篇blog中第78題的第3小題給出了多種方法,讀者可以參看之。同時,程式設計師程式設計藝術系列第二十八章將詳細闡述這個問題)
- 9. 夾角餘弦(Cosine) ,幾何中夾角餘弦可用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。
(1)在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角餘弦公式:
(2) 兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角餘弦
類似的,對於兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用類似於夾角餘弦的概念來衡量它們間的相似程度,即:
夾角餘弦取值範圍為[-1,1]。夾角餘弦越大表示兩個向量的夾角越小,夾角餘弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角餘弦取最大值1,當兩個向量的方向完全相反夾角餘弦取最小值-1。
- 10. 傑卡德相似係數(Jaccard similarity coefficient)
(1) 傑卡德相似係數兩個集合A和B的交集元素在A,B的並集中所佔的比例,稱為兩個集合的傑卡德相似係數,用符號J(A,B)表示。
傑卡德相似係數是衡量兩個集合的相似度一種指標。(2) 傑卡德距離與傑卡德相似係數相反的概念是傑卡德距離(Jaccard distance)。傑卡德距離可用如下公式表示:
傑卡德距離用兩個集合中不同元素佔所有元素的比例來衡量兩個集合的區分度。(3) 傑卡德相似係數與傑卡德距離的應用可將傑卡德相似係數用在衡量樣本的相似度上。舉例:樣本A與樣本B是兩個n維向量,而且所有維度的取值都是0或1,例如:A(0111)和B(1011)。我們將樣本看成是一個集合,1表示集合包含該元素,0表示集合不包含該元素。M11 :樣本A與B都是1的維度的個數M01:樣本A是0,樣本B是1的維度的個數M10:樣本A是1,樣本B是0 的維度的個數M00:樣本A與B都是0的維度的個數依據上文給的傑卡德相似係數及傑卡德距離的相關定義,樣本A與B的傑卡德相似係數J可以表示為:
這裡M11+M01+M10可理解為A與B的並集的元素個數,而M11是A與B的交集的元素個數。而樣本A與B的傑卡德距離表示為J':
- 11.皮爾遜係數(Pearson Correlation Coefficient)
(其中,E為數學期望或均值,D為方差,D開根號為標準差,E{ [X-E(X)] [Y-E(Y)]}稱為隨機變數X與Y的協方差,記為Cov(X,Y),即Cov(X,Y) = E{ [X-E(X)] [Y-E(Y)]},而兩個變數之間的協方差和標準差的商則稱為隨機變數X與Y的相關係數,記為)
- 當相關係數為0時,X和Y兩變數無關係。
- 當X的值增大(減小),Y值增大(減小),兩個變數為正相關,相關係數在0.00與1.00之間。
- 當X的值增大(減小),Y值減小(增大),兩個變數為負相關,相關係數在-1.00與0.00之間。
OK,接下來,我們們來重點了解下皮爾遜相關係數。在統計學中,皮爾遜積矩相關係數(英語:Pearson product-moment correlation coefficient,又稱作 PPMCC或PCCs, 用r表示)用於度量兩個變數X和Y之間的相關(線性相關),其值介於-1與1之間。通常情況下通過以下取值範圍判斷變數的相關強度:
相關係數 0.8-1.0 極強相關
0.6-0.8 強相關
0.4-0.6 中等程度相關
0.2-0.4 弱相關
0.0-0.2 極弱相關或無相關在自然科學領域中,該係數廣泛用於度量兩個變數之間的相關程度。它是由卡爾·皮爾遜從弗朗西斯·高爾頓在19世紀80年代提出的一個相似卻又稍有不同的想法演變而來的。這個相關係數也稱作“皮爾森相關係數r”。(1)皮爾遜係數的定義:兩個變數之間的皮爾遜相關係數定義為兩個變數之間的協方差和標準差的商:
以上方程定義了總體相關係數, 一般表示成希臘字母ρ(rho)。基於樣本對協方差和方差進行估計,可以得到樣本標準差, 一般表示成r:
一種等價表示式的是表示成標準分的均值。基於(Xi, Yi)的樣本點,樣本皮爾遜係數是
其中、 及 ,分別是標準分、樣本平均值和樣本標準差。或許上面的講解令你頭腦混亂不堪,沒關係,我換一種方式講解,如下:假設有兩個變數X、Y,那麼兩變數間的皮爾遜相關係數可通過以下公式計算:
- 公式一:
注:勿忘了上面說過,“皮爾遜相關係數定義為兩個變數之間的協方差和標準差的商”,其中標準差的計算公式為:
(2)皮爾遜相關係數的適用範圍
當兩個變數的標準差都不為零時,相關係數才有定義,皮爾遜相關係數適用於:
- 兩個變數之間是線性關係,都是連續資料。
- 兩個變數的總體是正態分佈,或接近正態的單峰分佈。
- 兩個變數的觀測值是成對的,每對觀測值之間相互獨立。
(3)如何理解皮爾遜相關係數
rubyist:皮爾遜相關係數理解有兩個角度
其一, 按照高中數學水平來理解, 它很簡單, 可以看做將兩組資料首先做Z分數處理之後, 然後兩組資料的乘積和除以樣本數,Z分數一般代表正態分佈中, 資料偏離中心點的距離.等於變數減掉平均數再除以標準差.(就是高考的標準分類似的處理)
樣本標準差則等於變數減掉平均數的平方和,再除以樣本數,最後再開方,也就是說,方差開方即為標準差,樣本標準差計算公式為:
所以, 根據這個最樸素的理解,我們可以將公式依次精簡為:
其二, 按照大學的線性數學水平來理解, 它比較複雜一點,可以看做是兩組資料的向量夾角的餘弦。下面是關於此皮爾遜係數的幾何學的解釋,先來看一幅圖,如下所示:
迴歸直線: y=gx(x) [紅色] 和 x=gy(y) [藍色]
如上圖,對於沒有中心化的資料, 相關係數與兩條可能的迴歸線y=gx(x) 和 x=gy(y) 夾角的餘弦值一致。對於沒有中心化的資料 (也就是說, 資料移動一個樣本平均值以使其均值為0), 相關係數也可以被視作由兩個隨機變數 向量 夾角 的 餘弦值(見下方)。舉個例子,例如,有5個國家的國民生產總值分別為 10, 20, 30, 50 和 80 億美元。 假設這5個國家 (順序相同) 的貧困百分比分別為 11%, 12%, 13%, 15%, and 18% 。 令 x 和 y 分別為包含上述5個資料的向量: x = (1, 2, 3, 5, 8) 和 y = (0.11, 0.12, 0.13, 0.15, 0.18)。
利用通常的方法計算兩個向量之間的夾角 (參見 數量積), 未中心化 的相關係數是:
我們發現以上的資料特意選定為完全相關: y = 0.10 + 0.01 x。 於是,皮爾遜相關係數應該等於1。將資料中心化 (通過E(x) = 3.8移動 x 和通過 E(y) = 0.138 移動 y ) 得到 x = (−2.8, −1.8, −0.8, 1.2, 4.2) 和 y = (−0.028, −0.018, −0.008, 0.012, 0.042), 從中(4)皮爾遜相關的約束條件
從以上解釋, 也可以理解皮爾遜相關的約束條件:
- 1 兩個變數間有線性關係
- 2 變數是連續變數
- 3 變數均符合正態分佈,且二元分佈也符合正態分佈
- 4 兩變數獨立
在實踐統計中,一般只輸出兩個係數,一個是相關係數,也就是計算出來的相關係數大小,在-1到1之間;另一個是獨立樣本檢驗係數,用來檢驗樣本一致性。
相關文章
- 常見問題01:計算地球上兩個點的距離
- 根據經緯度計算兩點之間的距離的公式公式
- JavaScript 元素距離視窗頂部的距離JavaScript
- 距離度量學習
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 有趣的數學公式(一)公式
- 常見數學術語
- 離散數學——4.命題邏輯公式的正規化公式
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 場景設計中距離感的設計
- leetcode-624.陣列列表中的最大距離LeetCode陣列
- 曼哈頓距離與切比雪夫距離的互化
- ggplot2中繪圖設定x軸、y軸名稱距離框線的距離繪圖
- 數學公式公式
- 馬氏距離與歐氏距離
- LeetCode 834 樹中距離之和LeetCode
- 常見機器學習演算法背後的數學機器學習演算法
- Python中的常見方法Python
- 02聚類演算法-相似度距離公式、維度災難聚類演算法公式
- 計算地圖中兩點之間的距離地圖
- 【Python】距離Python
- 難度2:素數距離問題
- leetcode-834. 樹中距離之和LeetCode
- Django中的session常見配置DjangoSession
- 常見的語音交友app開發中資源隔離方法有哪些?APP
- 編輯距離及編輯距離演算法演算法
- 曼哈頓距離與切比雪夫距離
- 初學python的常見問題Python
- 一張圖:9個資料科學中的距離測量與演算法資料科學演算法
- 電商廣告營銷中,有哪些常見公式和優化手段?公式優化
- 原生JS獲取DOM 節點到瀏覽器頂部的距離或者左側的距離JS瀏覽器
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- Laravel 距離排序Laravel排序
- unit原子距離
- 餘弦距離
- 馬氏距離
- Excel小技巧-公式和函式使用的常見八種錯誤合集Excel公式函式
- MySQL常見的配置引數概覽MySql
- Levenshtein:計算字串的編輯距離字串