「遠在天邊,近在眼前」,距離是一個需要定義的概念,對距離進行量化需要一個合適的坐標參考體系。在詩句裡,距離可以很浪漫,「世界上最遙遠的距離,不是生與死的距離,不是天各一方,而是,我就站在你的面前,你卻不知道我愛你」。在機器學習裡,距離是嚴謹的,需要一個精確的公式來計算。
許多機器學習的常見算法都需要用到距離函數,即用於計算兩個不同觀測(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
更多精彩:
☆TCGA時間線上的裡程碑
☆第一個抗癌靶向治療藥物
☆中國人群三陰乳腺癌多組學研究
☆EGFR和C-RAF雙重抑制使部分晚期胰腺導管腺癌進入完全緩解
☆這些年發在CNS上的單細胞測序癌症研究
☆世衛GLOBOCAN 2018年全球癌症統計報告
☆一個患者的癌症中有多少體細胞突變呢?
☆第一個國產PD-1單抗獲批上市
☆人類基因組有多少蛋白質編碼基因
☆從基因序列預測蛋白質三維結構
智預微信公眾號歡迎涉及癌症、數學、算法、統計等相關領域投稿
投稿郵箱:13488122802@163.com