1.問題
說到k-means聚類算法,想必大家已經對它很熟悉了,它是基於距離計算的經典無監督算法,但是有一次在我接受面試時,面試官問了我一個問題:“k-means為什么不能使用曼哈頓距離計算,而使用歐式距離進行計算?”,當時我頓時懵了,心想:‘難道不都可以嗎?’,我只能說都可以,然后面試官給了我一個眼神,“你回去查查吧,看看到底為什么”,然后我就回家啦。這是我后來在網上找到的回答,如下圖:
2.k-means基本思想:
1.在樣本數據中隨機設置n個聚類中心(Xi,Yi),假設數據只有二維;
2.計算樣本數據距離聚類中心(Xi,Yi)距離Di,並各自歸屬到距離自己最近的中心點;
3.各個匯聚到一起的簇計算各自的平均值,將新的平均值作為新的中心點;
4.然后重復2、3兩步,直到中心點的移動范圍小於閾值或達到循環最大次數。
3.距離公式
歐式距離也叫歐幾里得距離,也是最廣泛使用的距離計算公式,指n維空間中兩點間的直線距離
曼哈頓距離指同一坐標系下兩點差的絕對值之和
多說一個,余弦距離指空間中原點與兩點連線所夾角度的大小
4.分析
那到底k-means、knn能不能用曼哈頓計算呢,如第一張圖片所示,這是別人的答案,表示曼哈頓具有維度限制,真的是這樣嗎,我認為並不是這樣的,大家都知道曼哈頓距離可以計算二維空間兩點距離,那么嘗試在三維空間進行計算,由此可以推廣到高維空間,如下手畫圖所示:
一個2x2x2的立方體,坐落在三維坐標軸上,點A(2,2,0),點C(0,0,2),求AC的曼哈頓距離,根據曼哈頓公式計算得:
|0-2|+|0-2|+|2-0|=6,顯而易見,實際距離也是6,路線有很多條,但結果都是一樣的。
5.結論
綜上所述,曼哈頓距離適合k-means,只是各種距離算法可能需要在不同業務場景或數據下選擇使用。