閔可夫斯基距離

想象你在地圖上尋找從家到朋友家的最短路線,閔可夫斯基距離就像是一個萬能的尺子,可以根據你的喜好量出不同類型的“遠近”。

歐幾里得距離

就像是直接走直線距離,就好比你和朋友住在同一平面城市,從你家門到他家門,直接穿過街道走過去的最短距離。

曼哈頓距離

則是走街區的距離,假設你只能沿著街區邊緣走,不能穿房子,從一個街區的這頭走到另一個街區的那頭,就像是在城市里走網格狀的道路,不能斜穿。

切比雪夫距離

則是看你們兩個家中最遠的那個房間之間的距離,就像是不管你怎么走,總要走過最長的那一段路,比如說你家的臥室離大門最遠,他家也是,那這段距離就是關鍵。

切比雪夫距離這個概念,可以用一個更生活化的例子來解釋。想象你去超市買東西,超市里的商品擺放在不同的貨架上,而你需要買的是蘋果、牛奶和面包,這三個商品分別位于超市的三個角落。
切比雪夫距離的思想是這樣的:不論你怎樣走,先去哪個貨架,最終決定你這次購物旅程“最耗時”或“最遠”的,其實是這三個商品中離你最遠的那一個位置。比如,如果你一開始在超市入口,蘋果在最左邊盡頭,牛奶在最右邊盡頭,面包在最前面深處,那么無論你怎么規劃路線,從入口到這三個地方中的任何一個開始逛,最終決定你整個行程“最長步行距離”的,其實是從入口到這三個商品中最遠的那個——可能是蘋果或牛奶所在的盡頭。
換句話說,切比雪夫距離就是考慮最壞情況下的距離,即所有可能路徑中的最大單項距離。在這個場景中,它不關心你實際走過的總步數,只看你離目標物中最遠的那個有多遠。就像比賽跑步,不管你中間跑得多快,最終成績由你跑得最慢的那一段決定。這就是切比雪夫距離簡單而又直觀的含義。

而閔可夫斯基距離就是這個萬能尺子,你想怎么量就怎么量。如果尺子設定成2(歐幾里得),它就是量直線;設成1(曼哈頓),它就只量街區;設成無限大,它就只關心最遠的那一點(切比雪夫)。這樣,你就可以根據天氣、心情或實際情況選擇最合適的出行方式了。

機器學習什么時候會用到曼哈頓距離呢?

曼哈頓距離在機器學習中主要用于以下幾種場景:

分類與回歸問題:在一些特定的分類和回歸模型中,特別是在那些需要衡量特征間絕對差異更為重要的情況下,曼哈頓距離可以作為距離度量來替代歐幾里得距離。例如,在特征空間中,如果各個維度的取值都是整數或變化較為離散,曼哈頓距離更能體現這種特征差異。

聚類分析:在K-means、DBSCAN等聚類算法中,曼哈頓距離可以用來確定數據點之間的相似度,尤其是在處理離散化或稀疏數據時更為有效。它有助于將數據劃分到不同的簇中,尤其是在數據呈“塊狀”分布的特征空間中。

特征選擇與降維:在評估特征對目標變量的重要性時,曼哈頓距離可以用于特征之間差異的量化,幫助識別哪些特征對模型貢獻更大。在降維過程中,利用曼哈頓距離進行距離計算,有助于保留數據的局部結構,特別是對于處理高維空間中的稀疏特征。

異常檢測:在檢測數據集中異常點時,曼哈頓距離可以用于識別那些在多個維度上同時偏離正常范圍較遠的點,因為它是各維度差值絕對值的總和。

推薦系統:在某些推薦算法中,尤其是基于內容的推薦,曼哈頓距離可以用來衡量用戶偏好或項目特征之間的相似度,因為它能夠容忍不同特征上獨立的較大偏差,適合處理離散特征的匹配。

圖像處理:在圖像分割或特征提取中,尤其是在處理像素級操作時,曼哈頓距離因其計算效率和對離散數據的友好性,有時會被用作度量像素間差異。

綜上所述,曼哈頓距離在處理離散數據、強調各維度獨立差異、需要快速計算或在特定數據結構上保持不變性等場景中,是機器學習中一個非常有用的工具。

說的太抽象了,我無法直觀的感受

想象一下,你正在規劃在一座方格狀布局的城市(如紐約曼哈頓)中旅行的路線。城市中的道路嚴格按照東西向和南北向排列,不允許斜著穿越街區。現在你要從A點出發,到達B點。

歐幾里得距離就像是你直接飛過去,無視街道,直線到達B點的最短距離。
而曼哈頓距離則是你必須沿著街道走的實際行走距離,只能向北、南、東、西四個方向移動,直到到達目的地。
在機器學習中,如果我們的數據像是分布在這樣的“城市”中,每個特征(比如收入、年齡、教育水平等)就像是一個街區,數據點(人或事件)則位于這些街區的交叉口。當我們想要比較兩個數據點的相似度時,使用曼哈頓距離意味著我們關注的是每個特征上差異的直接累加,而不是考慮它們組合后的整體差異。

例如,建立一個電影推薦系統,如果用戶對電影的評分是基于幾個維度(比如劇情、視覺效果、演員表現等)的評分,曼哈頓距離可以幫助我們找到在各個維度上與用戶偏好最接近的其他用戶或電影。即使某個電影在某一方面評分差距很大(比如視覺效果),但只要其他方面接近,總體上仍可能被看作是相似的,因為曼哈頓距離更重視每一方面的獨立差異累加。

這樣的場景下,曼哈頓距離提供了一種更實際、分項考量的視角,使得機器學習模型能夠理解和區分數據點間的差異,并據此做出決策,比如推薦相似度高的電影給用戶。

繼續簡化

讓我們嘗試用更簡單的語言和一個具體的例子來解釋這個概念。

想象你有兩個朋友,我們稱他們為小明和小紅,我們想看看他們倆在某些方面的相似程度如何。我們將考慮的方面有三個“街區”,分別是他們的年齡、月收入和受教育年數。

小明的情況是:年齡25歲,月收入8000元,受教育16年。
小紅的情況是:年齡27歲,月收入7500元,受教育15年。
如果我們要用曼哈頓距離來衡量他們在這三個方面上的“距離”或差異,我們不會去計算他們所有差異的綜合影響(比如年齡和收入的差距乘積加上教育年的差距),而是直接計算每個方面上的差距,然后把它們相加起來。

在年齡上,他們相差2歲。
在月收入上,他們相差500元。
在受教育年數上,他們相差1年。
所以,用曼哈頓距離來衡量的話,我們就是簡單地把這些差異加起來:2歲 + 500元 + 1年。這個總和就是他們在這些特征上的“曼哈頓距離”,它告訴我們,如果把每個特征看作一個獨立的街區,小明和小紅在這些街區上的“行走距離”總共是多少。

總結來說,曼哈頓距離在機器學習中,尤其是在比較兩個對象的相似性時,更側重于看每個特征(街區)上單獨的差異,然后直接把這些差異累加起來得到總距離,而不是考慮所有特征差異的某種組合效應。這種方式適用于那些特征之間相對獨立,且每個特征差異同樣重要的情況。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容