1. 程式人生 > >機器學習中的各種距離

機器學習中的各種距離

1. 歐氏距離
2. 曼哈頓距離
3. 切比雪夫距離
4. 閔可夫斯基距離
5. 標準化歐氏距離
6. 馬氏距離
7. 夾角餘弦
8. 漢明距離
9. 傑卡德距離 & 傑卡德相似係數
10. 相關係數 & 相關距離
11. 資訊熵

============================================================

1. 歐氏距離(Euclidean Distance)

       歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。

       兩個n維向量a與 b間的歐氏距離:


Matlab計算距離主要使用pdist函式。若X是一個M×N的矩陣,則pdist(X)將X矩陣M行的每一行作為一個N維向量,然後計算這M個向量兩兩間的距離。
例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的歐式距離
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'euclidean')
結果:
D =

    1.0000    2.0000    2.2361

============================================================

2. 曼哈頓距離(Manhattan Distance)

       從名字就可以猜出這種距離的計算方法了。想象你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個“曼哈頓距離”。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。

       兩個n維向量a(a1;a2;…;an)與 b(b1;b2;…;bn)間的曼哈頓距離


Matlab計算曼哈頓距離
例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的曼哈頓距離
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'cityblock')
結果:
D =
     1     2     3
============================================================

3. 切比雪夫距離 ( Chebyshev Distance )

       國際象棋玩過麼?國王走一步能夠移動到相鄰的8個方格中的任意一個。那麼國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走試試。你會發現最少步數總是max( | x2-x1 | , | y2-y1 | ) 步 。有一種類似的一種距離度量方法叫切比雪夫距離。

       兩個n維向量a(a1;a2;…;an)與 b(b1;b2;…;bn)間的曼哈頓距離


例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的切比雪夫距離
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'chebychev')
結果:
D =

     1     2     2 

============================================================

4. 閔可夫斯基距離(Minkowski Distance)

閔氏距離不是一種距離,而是一組距離的定義。
(1) 閔氏距離的定義

       兩個n維變數a(a1;a2;…;an)與 b(b1;b2;…;bn)間的閔可夫斯基距離定義為:


                                                                                                                                                         

其中p是一個變引數。
當p=1時,就是曼哈頓距離
當p=2時,就是歐氏距離
當p→∞時,就是切比雪夫距離
根據變引數的不同,閔氏距離可以表示一類的距離。
(2)閔氏距離的缺點
  閔氏距離,包括曼哈頓距離、歐氏距離和切比雪夫距離都存在明顯的缺點。
  舉個例子:二維樣本(身高,體重),其中身高範圍是150~190,體重範圍是50~60,有三個樣本:a(180,50),b(190,50),c(180,60)。那麼a與b之間的閔氏距離(無論是曼哈頓距離、歐氏距離或切比雪夫距離)等於a與c之間的閔氏距離,但是身高的10cm真的等價於體重的10kg麼?因此用閔氏距離來衡量這些樣本間的相似度很有問題。
       簡單說來,閔氏距離的缺點主要有兩個:(1)將各個分量的量綱(scale),也就是“單位”當作相同的看待了。(2)沒有考慮各個分量的分佈(期望,方差等)可能是不同的。
(3)Matlab計算閔氏距離
例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的閔氏距離(以變引數為2的歐氏距離為例)
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'minkowski',2)
結果:
D =

    1.0000    2.0000    2.2361

============================================================

5. 標準化歐氏距離 (Standardized Euclidean distance )

(1)標準歐氏距離的定義
  標準化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標準歐氏距離的思路:既然資料各維分量的分佈不一樣,好吧!那我先將各個分量都“標準化”到均值、方差相等吧。均值和方差標準化到多少呢?這裡先複習點統計學知識吧,假設樣本集X的均值(mean)為m,標準差(standard deviation)為s,那麼X的“標準化變數”表示為:
  而且標準化變數的數學期望為0,方差為1。因此樣本集的標準化過程(standardization)用公式描述就是:
      標準化後的值 =  ( 標準化前的值  - 分量的均值 ) /分量的標準差
  經過簡單的推導就可以得到兩個n維向量a(a1,a2,…,an)與 b(b1,b2,…,bn)間的標準化歐氏距離的公式:
  如果將方差的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)。
(2)Matlab計算標準化歐氏距離
例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的標準化歐氏距離 (假設兩個分量的標準差分別為0.5和1)
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'seuclidean',[0.5,1])
結果:
D =

    2.0000    2.0000    2.8284

============================================================

6. 馬氏距離(Mahalanobis Distance)

(1)馬氏距離定義
       有M個樣本向量X1~Xm,協方差矩陣記為S,均值記為向量μ,則其中樣本向量Xi到u的馬氏距離表示為: 

       而其中向量Xi與Xj之間的馬氏距離定義為:
       若協方差矩陣是單位矩陣(各個樣本向量之間獨立同分布),則公式就成了:


       也就是歐氏距離了。
   若協方差矩陣是對角矩陣,公式變成了標準化歐氏距離。
(2)馬氏距離的優缺點:量綱無關,排除變數之間的相關性的干擾。
(3) Matlab計算(1 2),( 1 3),( 2 2),( 3 1)兩兩之間的馬氏距離
X = [1 2; 1 3; 2 2; 3 1]
Y = pdist(X,'mahalanobis')
結果:
Y =
    2.3452    2.0000    2.3452    1.2247    2.4495    1.2247

============================================================

7. 夾角餘弦(Cosine)

       有沒有搞錯,又不是學幾何,怎麼扯到夾角餘弦了?各位看官稍安勿躁。幾何中夾角餘弦可用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。

(1)在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角餘弦公式:


(2) 兩個n維樣本點a(a1;a2;…;an)與 b(b1;b2;…;bn)的夾角餘弦


       夾角餘弦取值範圍為[-1,1]。夾角餘弦越大表示兩個向量的夾角越小,夾角餘弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角餘弦取最大值1,當兩個向量的方向完全相反夾角餘弦取最小值-1。

       夾角餘弦的具體應用可以參閱參考文獻[1]。
(3)Matlab計算夾角餘弦
例子:計算(1,0)、( 1,1.732)、( -1,0)兩兩間的夾角餘弦
X = [1 0 ; 1 1.732 ; -1 0]
D = 1- pdist(X, 'cosine')  % Matlab中的pdist(X, 'cosine')得到的是1減夾角餘弦的值
結果:
D =

    0.5000   -1.0000   -0.5000

===================================================

8. 漢明距離(Hamming distance)

(1)漢明距離的定義
        兩個等長字串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。例如字串“1111”與“1001”之間的漢明距離為2。
        應用:資訊編碼(為了增強容錯性,應使得編碼間的最小漢明距離儘可能大)。
(2)Matlab計算漢明距離
    Matlab中2個向量之間的漢明距離的定義為2個向量不同的分量所佔的百分比。
        例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的漢明距離
X = [0 0 ; 1 0 ; 0 2];
D = PDIST(X, 'hamming')
結果:
D =

    0.5000    0.5000    1.0000

======================================================

9. 傑卡德相似係數(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表示集合不包含該元素。
p :樣本A與B都是1的維度的個數
q :樣本A是1,樣本B是0的維度的個數
r :樣本A是0,樣本B是1的維度的個數
s :樣本A與B都是0的維度的個數

那麼樣本A與B的傑卡德相似係數可以表示為:

這裡p+q+r可理解為A與B的並集的元素個數,而p是A與B的交集的元素個數。

而樣本A與B的傑卡德距離表示為:


(4)Matlab 計算傑卡德距離
Matlab的pdist函式定義的傑卡德距離跟我這裡的定義有一些差別,Matlab中將其定義為不同的維度的個數佔“非全零維度”的比例。
例子:計算(1,1,0)、(1,-1,0)、(-1,1,0)兩兩之間的傑卡德距離
X = [1 1 0; 1 -1 0; -1 1 0]
D = pdist( X , 'jaccard')
結果
D =

0.5000    0.5000    1.0000

======================================================

10. 相關係數 ( Correlation coefficient )與相關距離(Correlation distance)

(1) 相關係數的定義


相關係數是衡量隨機變數X與Y相關程度的一種方法,相關係數的取值範圍是[-1,1]。

相關係數的絕對值越大,則表明X與Y相關度越高。

當X與Y線性相關時,相關係數取值為1(正線性相關)或-1(負線性相關)。

(2)相關距離的定義

(3)Matlab計算(1, 2 ,3 ,4 )與( 3 ,8 ,7 ,6 )之間的相關係數與相關距離
X = [1 2 3 4 ; 3 8 7 6]
C = corrcoef( X' )   %將返回相關係數矩陣
D = pdist( X , 'correlation')
結果:
C =
    1.0000    0.4781
    0.4781    1.0000
D =
0.5219

      其中0.4781就是相關係數,0.5219是相關距離。

======================================================

11. 資訊熵(Information Entropy)

       資訊熵並不屬於一種相似性度量。那為什麼放在這篇文章中啊?這個。。。我也不知道。 (╯▽╰)
資訊熵是衡量分佈的混亂程度或分散程度的一種度量。分佈越分散(或者說分佈越平均),資訊熵就越大。分佈越有序(或者說分佈越集中),資訊熵就越小。
       計算給定的樣本集X的資訊熵的公式:

引數的含義:
C:樣本集X的分類數
pi:X中第i類元素出現的概率
       資訊熵越大表明樣本集S分類越分散,資訊熵越小則表明樣本集X分類越集中。。當S中C個分類出現的概率一樣大時(都是1/C),資訊熵取最大值log2(C)。當X只有一個分類時,資訊熵取最小值0

相關推薦

機器學習各種熵的定義及理解

機器學習領域有一個十分有魅力的詞:熵。然而究竟什麼是熵,相信多數人都能說出一二,但又不能清晰的表達出來。 而筆者對熵的理解是:“拒絕學習、拒絕提升的人是沒有未來的,也只有努力才能變成自己想成為的人”。 下圖是對熵的一個簡單描述: 熵可以理解為是一種對無序狀態的度量方式。那麼熵又是如何被用在機器學習中

淺析機器學習各種損失函式及其含義

常見的損失函式 1.0-1損失函式(0-1 loss function) L(Y,f(X))={1,Y≠f(X)0,Y=f(X)   可以看出,該損失函式的意義就是,當預測錯誤時,損失函式值為1,預測正確時,損失函式值為0。該損失函式不考慮預測值和真實

python實現機器學習各種距離計算及文字相似度演算法

在自然語言處理以及機器學習的分類或者聚類中會涉及到很多距離的使用,各種距離的概念以及適用範圍請自行百度或者參考各種距離 import numpy as np import math # 依賴包numpy、python-Levenshtein、scipy

機器學習各種距離

1. 歐氏距離2. 曼哈頓距離 3. 切比雪夫距離 4. 閔可夫斯基距離 5. 標準化歐氏距離 6. 馬氏距離 7. 夾角餘弦 8. 漢明距離 9. 傑卡德距離 & 傑卡德相似係數 10. 相關係數 & 相關距離 11. 資訊熵===============

機器學習幾大距離定義及程序實現

def numpy 返回 字符串 坐標 算法 info 定義 idea 一、歐氏距離(Euclidean Distance) 1、定義:兩點間的直線距離 2、公式: (1)、二維平面a(x1,y1),b(x2,y2)的歐式距離

範數與距離的關係以及在機器學習的應用

1 範數 向量的範數可以簡單形象的理解為向量的長度,或者向量到零點的距離,或者相應的兩個點之間的距離。 向量的範數定義:向量的範數是一個函式||x||,滿足非負性||x|| >= 0,齊次性||cx|| = |c| ||x|| ,三角不等式||x+y|| <= ||x|| + |

機器學習的幾種距離度量方法比較

1. 歐氏距離(Euclidean  Distance)  /ju:'klidiən/ 歐式距離是最容易直觀理解的距離度量方法,我們小學,中學,高中所接觸的兩個空間中的距離一般都是指的是歐式距離。  二維平面上點a(x1,y1)與b(x2,y2)間的歐氏距離:

漫談:機器學習距離和相似性度量方法

在機器學習和資料探勘中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。最常見的是資料分析中的相關分析,資料探勘中的分類和聚類演算法,如 K 最近鄰(KNN)和 K 均值(K-Means)等等。根據資料特性的不同,可以採用不同的度量方法。一般而言,定義一個距離函式 d(x,y), 需要滿足下

機器學習你需要了解的各種

1前言 資訊熵是資訊理論和機器學習中非常重要的概念,資訊是一個很抽象的概念,如何量化資訊呢?夏農提出了‘資訊熵’概念來解決了這個問題。本篇部落格主要是詳細記錄資訊熵中的一些概念 (自資訊,熵,交叉熵,相對熵,互資訊,決策樹中相關的熵),以方便自己日後回顧,所以不

資料探勘和機器學習距離和相似度公式

距離:閔可夫斯基距離公式,也叫 Lp 範數: 當p=1時,變為曼哈頓距離公式,也即 L1範數: 當p=2時,變為歐式距離公式,也即 L2範數: 衡量空間中點的絕對距離,對絕對數值敏感。 相似性: 餘弦相似: 皮爾遜相關係數,即相關分析中的相關係數,對兩個個體的向

機器學習的回歸理解

機器學習中的線性模型理解機器學習中的類別均衡問題?分為類別平衡問題和類別不平衡問題類別平衡問題:可以采用回歸類別不平衡問題:可以采用在縮放針對類別的回歸問題有線性回歸:非線性回本文出自 “簡答生活” 博客,謝絕轉載!機器學習中的回歸理解

機器學習的範數規則化之(一)L0、L1與L2範數

[0 證明 基本上 復雜度 所有 img 方法 風險 機器學習 機器學習中的範數規則化之(一)L0、L1與L2範數 [email protected]/* */ http://blog.csdn.net/zouxy09 轉自:http://blog.csdn.n

專家坐堂:機器學習對核函數的理解

wechat size 學習 blank weixin itl cti title redirect 專家坐堂:機器學習中對核函數的理解 專家坐堂:機器學習中對核函數的理解

機器學習防止過擬合方法

從數據 tro 輸出 效果 沒有 imagenet neu 效率 公式 過擬合 ??在進行數據挖掘或者機器學習模型建立的時候,因為在統計學習中,假設數據滿足獨立同分布,即當前已產生的數據可以對未來的數據進行推測與模擬,因此都是使用歷史數據建立模型,即使用已經產生的數據去訓練

關於機器學習一般線性回歸的補充

機器學習 線性回歸 嶺回歸 在之前的文章中,筆者給出了關於最小二乘法相關公式的整體推導過程,最小二乘法本身除了可以利用數據進行相關參數的擬合(主要是系數和偏置),而且作為分類問題中最為簡單的模型也有著重要作用,我們也可以將其稱作最為簡單的線性回歸模型(以後需要涉及到支持向量機的問題,即Supp

關於機器學習數據降維的相關方法

機器學習 降維 svd 字典學習前言 在之前一些文章的討論中,通過一些例子我們可以發現(主要是關於決策樹或隨機森林的相關內容)其實並不是樣本的所有屬性可能都是那麽得重要,只要不是同等重要,特別是在分類問題上可能可以去除一些屬性或特征(一般決策樹需要進行剪枝,其實剪枝的原因就在於此)依然能夠得到較好的結果(盡

關於機器學習LASSO回歸的相關補充

lasso回歸 軟閾收縮算子 fist算法 在之前的相關文章中筆者給出了一般回歸的補充,即嶺回歸和LASSO回歸,它們都是為了解決在回歸過程中的過擬合問題,其具體解決方案就分別是在目標函數後增加2範數和1範數以限定參數的表現,對於嶺回歸而言,由於2使用範數的原因,這個目標函數仍是可導的,但對於LASSO回

關於機器學習支持向量機相關問題

機器學習 支持向量機 svm 線性感知機 核方法前言 在機器學習中,分類問題占了很大一部分,而對於分類問題的處理有很多方法,比如決策樹、隨機森林、樸素貝葉斯、前饋神經網絡等等;而最為常見的分類需求一般是二分類問題,即將樣本分為兩個集合,然後通過學習某些參數,對新的輸入進行識別並劃分到正確的類別中。 在

機器學習的正則化

道理 lazy 算法 htbox 而且 有趣的 文章 很難 直接 作者:陶輕松鏈接:https://www.zhihu.com/question/20924039/answer/131421690來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

關於機器學習的一些常用方法的補充

機器學習 k近鄰 apriori pagerank前言 機器學習相關算法數量龐大,很難一一窮盡,網上有好事之人也評選了相關所謂十大算法(可能排名不分先後),它們分別是: 1. 決策樹2. 隨機森林算法3. 邏輯回歸4. 支持向量機5. 樸素貝葉斯6