为什么不可以使用哈曼顿距离_K-means真的不能使用曼哈顿距离吗?
問題
說到k-means聚類算法,想必大家已經(jīng)對(duì)它很熟悉了,它是基于距離計(jì)算的經(jīng)典無監(jiān)督算法,但是有一次在我接受面試時(shí),面試官問了我一個(gè)問題:“k-means為什么不能使用曼哈頓距離計(jì)算,而使用歐式距離進(jìn)行計(jì)算?”,當(dāng)時(shí)我頓時(shí)懵了,心想:‘難道不都可以嗎?’,我只能說都可以,然后面試官給了我一個(gè)眼神,“你回去查查吧,看看到底為什么”,然后我就回家啦。這是我后來在網(wǎng)上找到的回答,如下圖:
k-means基本思想:
1.在樣本數(shù)據(jù)中隨機(jī)設(shè)置n個(gè)聚類中心(Xi,Yi),假設(shè)數(shù)據(jù)只有二維;
2.計(jì)算樣本數(shù)據(jù)距離聚類中心(Xi,Yi)距離Di,并各自歸屬到距離自己最近的中心點(diǎn);
3.各個(gè)匯聚到一起的簇計(jì)算各自的平均值,將新的平均值作為新的中心點(diǎn);
4.然后重復(fù)2、3兩步,直到中心點(diǎn)的移動(dòng)范圍小于閾值或達(dá)到循環(huán)最大次數(shù)。
距離公式
歐式距離也叫歐幾里得距離,也是最廣泛使用的距離計(jì)算公式,指n維空間中兩點(diǎn)間的直線距離
曼哈頓距離指同一坐標(biāo)系下兩點(diǎn)差的絕對(duì)值之和
多說一個(gè),余弦距離指空間中原點(diǎn)與兩點(diǎn)連線所夾角度的大小
分析
那到底k-means、knn能不能用曼哈頓計(jì)算呢,如第一張圖片所示,這是別人的答案,表示曼哈頓具有維度限制,真的是這樣嗎,我認(rèn)為并不是這樣的,大家都知道曼哈頓距離可以計(jì)算二維空間兩點(diǎn)距離,那么嘗試在三維空間進(jìn)行計(jì)算,由此可以推廣到高維空間,如下手畫圖所示:
一個(gè)2x2x2的立方體,坐落在三維坐標(biāo)軸上,點(diǎn)A(2,2,0),點(diǎn)C(0,0,2),求AC的曼哈頓距離,根據(jù)曼哈頓公式計(jì)算得:
|0-2|+|0-2|+|2-0|=6,顯而易見,實(shí)際距離也是6,路線有很多條,但結(jié)果都是一樣的。
結(jié)論
綜上所述,曼哈頓距離適合k-means,只是各種距離算法可能需要在不同業(yè)務(wù)場(chǎng)景或數(shù)據(jù)下選擇使用。
總結(jié)
以上是生活随笔為你收集整理的为什么不可以使用哈曼顿距离_K-means真的不能使用曼哈顿距离吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python支持中文路径_打开pytho
- 下一篇: 2016年cypher资源_2021-2