度量学习方法总结
目錄
一.距離度量
閔可夫斯基距離
歐式距離(Euclidean Distance):
標準化歐氏距離(Standardized Euclidean distance )
曼哈頓距離(ManhattanDistance)
切比雪夫距離(Chebyshevdistance)
馬氏距離
馬氏距離代碼示例:
夾角余弦
相關(guān)系數(shù)( Correlation coefficient )與相關(guān)距離(Correlation distance)
交叉熵與相對熵(kl散度)
漢明距離
度量學(xué)習(xí) (Metric Learning) == 距離度量學(xué)習(xí) (Distance Metric Learning,DML) == 相似度學(xué)習(xí)
根據(jù)不同的任務(wù)來自主學(xué)習(xí)出針對某個特定任務(wù)的度量距離函數(shù)。通過計算兩張圖片之間的相似度,使得輸入圖片被歸入到相似度大的圖片類別中去。
一.距離度量
閔可夫斯基距離
假設(shè)數(shù)值點 P 和 Q 坐標如下:
那么,閔可夫斯基距離定義為:
歐式距離(Euclidean Distance):
兩點之間的直線距離。p 是 2的閔可夫斯基距離。
(1)二維平面上兩點a(x1,y1),b(x2,y2)之間的歐式距離公式:
(2) n維空間上兩點a(x1,x2……..xn),b(y1,y2……..yn)的歐式距離公式:
標準化歐氏距離(Standardized Euclidean distance )
樣本集的標準化過程(standardization)用公式描述就是:
標準化后的值 = ( 標準化前的值 - 分量的均值 ) /分量的標準差
經(jīng)過簡單的推導(dǎo)就可以得到兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的標準化歐氏距離的公式:
如果將方差的倒數(shù)看成是一個權(quán)重,這個公式可以看成是一種加權(quán)歐氏距離(Weighted Euclidean distance)。
曼哈頓距離(ManhattanDistance)
p 是 1 的閔可夫斯基距離。
(1)二維平面上兩點a(x1,y1),b(x2,y2)之間的曼哈頓距離公式:
(2) n維空間上兩點a(x1,x2……..xn),b(y1,y2……..yn)的曼哈頓距離公式:
閔可夫斯基距離與數(shù)據(jù)的分布無關(guān),具有一定的局限性,如果 x 方向的幅值遠遠大于 y 方向的值,這個距離公式就會過度放大 x 維度的作用。所以,在計算距離之前,我們可能還需要對數(shù)據(jù)進行z-transform處理,即減去均值,除以標準差:
: 該維度上的均值
: 該維度上的標準差
Z變換(Z-transform) 將離散系統(tǒng)的時域數(shù)學(xué)模型——差分方程轉(zhuǎn)化為較簡單的頻域數(shù)學(xué)模型——代數(shù)方程,以簡化求解過程的一種數(shù)學(xué)工具。
https://zhuanlan.zhihu.com/p/45114376
切比雪夫距離(Chebyshevdistance)
各對應(yīng)坐標數(shù)值差的最大值。p 趨近于無窮大時的閔可夫斯基距離。
(1)二維平面上兩點a(x1,y1),b(x2,y2)之間的切比雪夫距離公式:
(2) n維空間上兩點a(x1,x2……..xn),b(y1,y2……..yn)的切比雪夫距離公式:
如果維度相互之間數(shù)據(jù)相關(guān)(例如:身高較高的信息很有可能會帶來體重較重的信息,因為兩者是有關(guān)聯(lián)的),這時候就要用到馬氏距離(Mahalanobis distance)了。
馬氏距離
馬氏距離是基于樣本分布的一種距離。有M個樣本向量X1~Xm,協(xié)方差矩陣記為S,均值記為向量μ,則其中樣本向量X到u的馬氏距離表示為:
假設(shè)樣本點(列向量)之間的協(xié)方差對稱矩陣是, 通過 Cholesky Decomposition(實際上是對稱矩陣 LU 分解的一種特殊形式)可以轉(zhuǎn)化為下三角矩陣和上三角矩陣的乘積:。消除不同維度之間的相關(guān)性和尺度不同,只需要對樣本點 x 做如下處理:。處理之后的歐幾里得距離就是原樣本的馬氏距離:為了書寫方便,這里求馬氏距離的平方):
而其中向量Xi與Xj之間的馬氏距離定義為:
若協(xié)方差矩陣是單位矩陣(各個樣本向量之間獨立同分布),則公式就成了:
也就是歐氏距離了。
若協(xié)方差矩陣是對角矩陣(協(xié)方差矩陣的對角線上即為方差),公式變成了標準化歐氏距離。
馬氏距離的計算是建立在總體樣本的基礎(chǔ)上的,如果拿同樣的兩個樣本,放入兩個不同的總體中,最后計算得出的兩個樣本間的馬氏距離通常是不相同的,除非這兩個總體的協(xié)方差矩陣碰巧相同;計算馬氏距離過程中,要求總體樣本數(shù)大于樣本的維數(shù),否則得到的總體樣本協(xié)方差矩陣逆矩陣不存在,這種情況下,用歐式距離計算即可。
馬氏距離代碼示例:
# -*- coding=utf-8 -*-
# code related at: http://www.cnblogs.com/daniel-D/
import numpy as np
import pylab as pl
import scipy.spatial.distance as dist
def plotSamples(x, y, z=None):
    stars = np.matrix([[3., -2., 0.], [3., 2., 0.]])
    if z is not None:
        x, y = z * np.matrix([x, y])
        stars = z * stars
    pl.scatter(x, y, s=10)    # 畫 gaussian 隨機點
    pl.scatter(np.array(stars[0]), np.array(stars[1]), s=200, marker='*', color='r')  # 畫三個指定點
    pl.axhline(linewidth=2, color='g') # 畫 x 軸
    pl.axvline(linewidth=2, color='g')  # 畫 y 軸
    pl.axis('equal')
    pl.axis([-5, 5, -5, 5])
    pl.show()
# 產(chǎn)生高斯分布的隨機點
mean = [0, 0]      # 平均值
cov = [[2, 1], [1, 2]]   # 協(xié)方差
x, y = np.random.multivariate_normal(mean, cov, 1000).T
plotSamples(x, y)
covMat = np.matrix(np.cov(x, y))    # 求 x 與 y 的協(xié)方差矩陣
Z = np.linalg.cholesky(covMat).I  # 仿射矩陣
plotSamples(x, y, Z)
# 求馬氏距離 
print '\n到原點的馬氏距離分別是:'
print dist.mahalanobis([0,0], [3,3], covMat.I), dist.mahalanobis([0,0], [-2,2], covMat.I)
# 求變換后的歐幾里得距離
dots = (Z * np.matrix([[3, -2, 0], [3, 2, 0]])).T
print '\n變換后到原點的歐幾里得距離分別是:'
print dist.minkowski([0, 0], np.array(dots[0]), 2), dist.minkowski([0, 0], np.array(dots[1]), 2)夾角余弦
機器學(xué)習(xí)中可以把兩點看成是空間中的兩個向量,通過衡量兩向量之間的相似性來衡量樣本之間的相似性。
(1)二維平面上兩向量a(x1,y1),b(x2,y2)之間的夾角余弦公式:
也可直接通過向量運算:
(2) n維空間上兩點a(x1,x2……..xn),b(y1,y2……..yn)的夾角余弦公式:
余弦相似度(Cosine similarity):
余弦相似度與向量的幅值無關(guān),只與向量的方向相關(guān),夾角余弦越大表示兩個向量的夾角越小,夾角余弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角余弦取最大值1,當兩個向量的方向完全相反夾角余弦取最小值-1。
相關(guān)系數(shù)( Correlation coefficient )與相關(guān)距離(Correlation distance)
(1) 相關(guān)系數(shù)的定義
相關(guān)系數(shù)是衡量隨機變量X與Y相關(guān)程度的一種方法,相關(guān)系數(shù)的取值范圍是[-1,1]。相關(guān)系數(shù)的絕對值越大,則表明X與Y相關(guān)度越高。當X與Y線性相關(guān)時,相關(guān)系數(shù)取值為1(正線性相關(guān))或-1(負線性相關(guān))。
(2)相關(guān)距離的定義
交叉熵與相對熵(kl散度)
參考之前的博客https://blog.csdn.net/qq_28266311/article/details/83994605
漢明距離
兩個等長字符串之間的漢明距離是兩個字符串對應(yīng)位置的不同字符的個數(shù)。
例如:
1011101與 1001001 之間的漢明距離是2
2143896與 2233796 之間的漢明距離是3
irie與 rise之間的漢明距離是 3
杰卡德距離(Jaccard Distance)
杰卡德相似系數(shù)(Jaccard similarity coefficient):兩個集合A和B的交集元素在A,B的并集中所占的比例,稱為兩個集合的杰卡德相似系數(shù),用符號J(A,B)表示:
- 杰卡德距離(Jaccard Distance):與杰卡德相似系數(shù)相反,用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區(qū)分度:
參考
https://blog.csdn.net/wangpei1949/article/details/52926651
https://www.cnblogs.com/daniel-D/p/3244718.html
https://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html
總結(jié)
 
                            
                        - 上一篇: 英雄祭坛培养哪个英雄
- 下一篇: Jenkins 关闭和重启实现方式.
