本文轉載自微信公眾號「活在資訊時代」,作者活在資訊時代。轉載本文請聯絡活在資訊時代公眾號。
在機器學習中,一個基礎的概念就是如何判斷兩個樣本之間的差異,以便能夠評估兩個樣本之間的相似性和類別等資訊。而判斷這種相似性的測量就是兩個樣本在特徵空間內的距離。
根據資料特徵的不同,度量方法有很多種。一般而言,對兩個資料樣本x,y,定義一個函數d(x,y),如果定義其為兩個樣本之間的距離,那麼d(x,y)則需要滿足以下幾個基本性質:
通常來講,常見的距離測量包括:點在空間中的距離、字串間的距離、集合的相似度、變數/概念分佈間的距離四種。
今天我們先來介紹最常用的點在空間中的距離。
點在空間中的距離包括以下幾種:
1、歐幾裡得距離(Ecllidean Distance)
毫無疑問,歐氏距離是人們最熟悉的距離,它也就是兩點之間的直線距離。學過國中數學的同學都知道在笛卡爾座標系中如何計算二維空間兩點之間的距離
其計算公式為:
推廣到N維空間的歐氏距離即為:
2、曼哈頓距離(Manhattan Distance)
曼哈頓距離又稱為計程車距離,其概念來自紐約曼哈頓區這樣有很多橫平豎直的街區,在這種街區中,計程車司機如果想從一個點走到另一個點的話,計算直線距離是沒有用的,因為計程車不可能從建築物上飛過去。因此,這種距離通常是將兩點的東西向、南北向距離分別相減再相加,也就是計程車實際要經過的距離。
如圖所示,紅線和黃線就是兩條不同路徑的曼哈頓距離。數學上,二維空間的曼哈頓距離計算方法如下:
#3、切比雪夫距離(Chebyshev Distance)
切比雪夫距離定義為兩點之間各座標數值差的最大值。
其最直觀的例子就是西洋棋中的國王,因為它可以橫走直走斜走,但是每次都只能走一格,所以切比雪夫距離就是他要走到另一個格子所需要的最小距離。
4、閔可夫斯基距離(Minkowski Distance)
閔氏距離本身不是一個特別的距離,而是將多個距離(曼哈頓距離、歐氏距離、切比雪夫距離)合併為的公式。
其定義為,對於兩個n維變量,閔氏距離為:
當p=1時,可以看到
此時為曼哈頓距離。
當p=2時,可以看到
#此時即為歐氏距離。
當p=∞時,可以看到
#此時即為切比雪夫距離。
5、標準化的歐幾里德距離(Standardized Euclidean Distance)
歐氏距離可以測量兩個點之間的直線距離,但在某些情況下,可能會受到單位不同的影響。例如同時是差5,差5毫米的身高和差5公斤的體重,觀感可能是完全不同的。如果我們想對三個模特兒進行聚類,她們各自的屬性如下:
A:65000000毫克(即65公斤),1.74公尺
B:60000000毫克(即60公斤) ,1.70米
C:65000000毫克(即65公斤),1.40米
按我們正常的理解,A和B是身材比較好的模特,應該歸到一類。但是以上述單位實際計算的時候,卻發現A和B的差異大於A和C之間的差異。原因在於屬性計量單位的不同導致數值差異過大。同樣的數據如果換個單位。
A:65公斤,174公分
B:60公斤,170公分
C:65公斤,140公分
#那麼就會得到我們想到的結果,將A和B歸為一類了。因此,為避免這種因計量單位的不同而出現的差異,我們需要引入標準化歐氏距離。在這種距離計算中,會將各個分量都標準化到平均值、變異數相等的區間。
假設樣本集X的平均值(mean)為m,標準差(standard deviation)為s,則X的「標準化變數」表示為:
其中,標準化後的值= ( 標準化前的值- 分量的平均值) /分量的標準差。經過簡單的推導就可以得到兩個n維向量間的標準化歐氏距離公式為:
#如果將變異數的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)。透過這種操作,我們就有效的消除了不同計重單位之間的差異。
6、蘭氏距離(Lance and Willianms Distance)
蘭氏距離又稱為堪培拉距離,
它是一個無量綱的指標,克服了閔氏距離與各指標的量綱有關的缺點,並且對於較大的奇異值不敏感,特別適合調度偏差的數據。但是這種距離也沒有考慮到變數間的相關性。所以如果需要考慮變數之間的相關性的話,還是需要馬氏距離。
7、馬氏距離(Mahalanobis Distance)
將數值標準化之後,就一定不會出問題嗎?也不一定。例如在一個一維的例子中,如果有兩個類,一個類均值為0,方差為0.1,而另一個類均值為5,方差為5。那麼如果一個值為2的點應該屬於哪一類呢?我們直覺認為它肯定是第二類,因為第一類顯然不太可能在數值上達到2。但是實際上從距離上計算的話2這個數字就得屬於第一類。
所以,在一個變異數較小的維度下,很小的差異就可能成為離群點。例如說下圖,A與B相對於原點的距離是相同的,但是由於樣本整體沿著橫軸分佈,所以B點更有可能是樣本中的點,而A點則更有可能是離群點。
而在維度間不獨立同分佈的情況下,也會出現問題,例如說下圖中的A點與B點到原點的距離相等,但是主要分佈類似f(x)=x,所以A比較像是離群點。
因此,我們可以看到,在這種情況下,標準化的歐氏距離也會有問題,所以我們需要引入馬氏距離。
馬氏距離將變數依照主成分旋轉,讓維度間相互獨立,然後再標準化,讓維度同分佈。而主成分即為特徵向量方向,所以只需要按照特徵向量的方向旋轉,然後縮放特徵值倍就可以了。例如上圖轉換之後會得到下面的結果:
可以看出離群點被成功分開了。
馬氏距離是由印度數學家馬哈拉諾比斯提出的,表示數據的協方差距離。它是一種有效計算兩個未知樣本集的相似度的方法。
對於一個平均值為
,協方差矩陣為Σ的多變數向量
#,其馬氏距離(單一資料點的馬氏距離)為:
對於兩個服從同一分佈且其協方差矩陣為Σ的隨機變數X與Y的差異程度,資料點x, y之間的馬氏距離為:
如果協方差矩陣為單位矩陣,那麼馬氏距離就簡化成了歐氏距離。如果協方差矩陣為對角陣,那麼馬氏距離就變成了標準化的歐氏距離。
8、餘弦距離(Cosine Distance)
顧名思義,餘弦距離來自幾何中的夾角餘弦,它可用於衡量兩個向量方向的差異,而非距離或長度上。當餘弦值為0時,兩向量正交,夾角為90度。夾角越小,餘弦值越接近1,方向更趨同。
在N維空間中,餘弦距離為:
#值得指出的是,餘弦距離不滿足三角不等式。
9、測地距離(Geodesic Distance)
#測地距離最初是指球體表面之間的最短距離。當特徵空間為平面時,測地距離即為歐氏距離。在非歐幾何中,球面上兩點間距離最短的線是連接這兩點的大圓弧,在球面上的三角形、多邊形的邊也是由這些大圓弧組成的。
10、布雷柯蒂斯距離(Bray Curtis Distance)
布雷柯蒂斯距離主要用於植物學、生態學和環境科學,它可以用來計算樣本之間的差異。其公式為:
其取值在[0, 1]之間,如果兩個向量座標都為0的話,那麼值就無意義。
以上是機器學習基礎之數字上的距離:點在空間中的距離的詳細內容。更多資訊請關注PHP中文網其他相關文章!