天天看點

機器學習裡的歐氏距離

“遠在天邊,近在眼前”,距離是一個需要定義的概念,對距離進行量化需要一個合适的坐标參考體系。在詩句裡,距離可以很浪漫,“世界上最遙遠的距離,不是生與死的距離,不是天各一方,而是,我就站在你的面前,你卻不知道我愛你”。在機器學習裡,距離是嚴謹的,需要一個精确的公式來計算。

許多機器學習的常見算法都需要用到距離函數,即用于計算兩個不同觀測(obs)之間的距離。以癌症組織的轉錄組測序資料為例,不同的癌症樣本即不同的觀測,兩個樣本間的距離越短,意味着它們之間越相似,在各種非監督聚類算法中更容易被歸為同一類。距離函數五花八門,歐氏距離應該算得上其中“最簡單”和“最直覺”的距離函數了。

機器學習裡的歐氏距離

在數學上,歐氏距離是歐氏空間裡兩點間的直線距離。在一個二維空間裡,兩個點p1和p2的坐标分别為(x1, y1), (x2, y2)。那麼p1和p2的距離d(p1, p2)等于sqrt((x1-x2)2+(y1-y2)2)。同理,在一個三維空間裡,兩個點p1和p2的坐标分别為(x1, y1), (x2, y2) , (z2, z2)。那麼p1和p2的距離d(p1, p2)等于sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)。簡單的說,在二維和三維空間裡,兩個點間的距離就是它們在歐氏空間裡的真實距離。事實上,兩個資料點的情形就是畢達哥拉斯定理用兩個直角邊計算斜邊的公式。

現實中,我們的資料次元往往高于三維。對于n維空間裡的兩個點p1和p2,它們的坐标分别為(p11, p12, …, p1n), (p21, p22, …, p2n)。這兩個點的歐氏距離可以用如下公式定義:

機器學習裡的歐氏距離

這種距離公式有什麼用呢?在非監督機器學習算法k-means聚類中,我們事先并不知道我們的觀測(obs)應該屬于哪個類别。距離公式對于這樣的場景尤為重要。通常,我們随機選擇n個資料中心,作為n個不同類别的“中心”;随後,其他觀測将通過歐式距離公式定義的距離“就近”被配置設定到不同類别中。新的中心被計算,觀測與新中心的距離重新計算,類别重新定義,不斷疊代這個過程直至最終結果不再改變。

機器學習裡的歐氏距離

歐氏距離隻是“一棵樹”,它之外還有一片森林。感興趣的可以安裝R包philentrophy,裡面有46種不同的距離算法可以調用。

機器學習裡的歐氏距離

參考文獻

1.Drost HG. Philentropy: Information Theory and Distance Quantification with R. Journal of Open Source Software (2018).<doi:10.21105/joss.00765>

2.https://www.brandidea.com/kmeans.html

機器學習裡的歐氏距離

繼續閱讀