k近邻推荐用到的各种距离
1 kkk-近鄰?fù)扑]原理
2 各種距離
2.1 歐幾里得距離
d12=(x1?x2)2+(y1?y2)2d_{12} = \sqrt{(x_{1} - x_{2})^2 + (y_{1} - y_{2})^2}d12?=(x1??x2?)2+(y1??y2?)2?
缺點(diǎn):歐式距離是一種常用的距離度量,但它并不是尺度不變的,這意味著所計(jì)算的距離可能會(huì)根據(jù)特征的單位發(fā)生傾斜。通常,在使用歐式距離度量之前,需要對(duì)數(shù)據(jù)進(jìn)行歸一化處理。
此外,隨著數(shù)據(jù)維數(shù)的增加,歐氏距離的作用也就越小。這與維數(shù)災(zāi)難(curse of dimensionality)有關(guān)。
用例:當(dāng)數(shù)據(jù)的維度比較低,歐式距離的效果非常好。如果在低維數(shù)據(jù)上使用歐式距離,則如 kkk-NN 和 HDBSCAN 之類(lèi)的方法可達(dá)到開(kāi)箱即用的效果。
2.2 曼哈頓距離
在曼哈頓街區(qū)要從一個(gè)十字路口開(kāi)車(chē)到另一個(gè)十字路口,駕駛距離顯然不是兩點(diǎn)間的直線距離。這個(gè)實(shí)際駕駛距離就是曼哈頓距離。 曼哈頓距離也稱(chēng)為“城市街區(qū)距離”(City Block distance)。
d12=∣x1?x2∣+∣y1?y2∣d_{12} = \left|x_{1} - x_{2}\right| + \left|y_{1} - y_{2}\right|d12?=∣x1??x2?∣+∣y1??y2?∣
缺點(diǎn):盡管曼哈頓距離在高維數(shù)據(jù)中可以工作,但它比歐式距離直觀性差。此外,由于它可能不是最短路徑,有可能比歐氏距離給出一個(gè)更高的距離值。
用例:當(dāng)數(shù)據(jù)集具有離散或二進(jìn)制屬性時(shí),曼哈頓距離似乎工作得很好,因?yàn)樗紤]了在這些屬性值中實(shí)際可以采用的路徑。以歐式距離為例,它會(huì)在兩個(gè)向量之間形成一條直線,但實(shí)際上這是不可能的。
2.3 切比雪夫距離 (Chebyshev Distance)
切比雪夫距離定義為兩個(gè)向量在任意坐標(biāo)維度上的最大差值。換句話說(shuō),它就是沿著一個(gè)軸的最大距離。切比雪夫距離通常被稱(chēng)為棋盤(pán)距離,因?yàn)閲?guó)際象棋的國(guó)王從一個(gè)方格到另一個(gè)方格的最小步數(shù)等于切比雪夫距離。
d12=max?(∣x1?x2∣,∣y1?y2∣)d_{12} = \max(\left|x_{1} - x_{2}\right|, \left|y_{1} - y_{2}\right|)d12?=max(∣x1??x2?∣,∣y1??y2?∣)
缺點(diǎn):切比雪夫距離通常用于特定的用例,這使得它很難像歐氏距離或余弦相似度那樣作為通用的距離度量。因此,在確定適合用例時(shí)才使用它。
用例:切比雪夫距離用于提取從一個(gè)方塊移動(dòng)到另一個(gè)方塊所需的最小移動(dòng)次數(shù)。此外,在允許無(wú)限制八向移動(dòng)的游戲中,這可能是有用的方法。在實(shí)踐中,切比雪夫距離經(jīng)常用于倉(cāng)庫(kù)物流,因?yàn)樗浅n?lèi)似于起重機(jī)移動(dòng)一個(gè)物體的時(shí)間。
2.4 余弦距離
d12=x1x2+y1y2x12+y12x22+y22d_{12} = \frac{x_{1}x_{2} + y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}d12?=x12?+y12??x22?+y22??x1?x2?+y1?y2??
缺點(diǎn):余弦相似度的一個(gè)主要缺點(diǎn)是沒(méi)有考慮向量的大小,而只考慮它們的方向。以推薦系統(tǒng)為例,余弦相似度就沒(méi)有考慮到不同用戶之間評(píng)分尺度的差異。
用例:當(dāng)我們對(duì)高維數(shù)據(jù)向量的大小不關(guān)注時(shí),可以使用余弦相似度。對(duì)于文本分析,當(dāng)數(shù)據(jù)以單詞計(jì)數(shù)表示時(shí),經(jīng)常使用此度量。例如,當(dāng)一個(gè)單詞在一個(gè)文檔中比另一個(gè)單詞更頻繁出現(xiàn)時(shí),這并不一定意味著文檔與該單詞更相關(guān)。可能是文件長(zhǎng)度不均勻或者計(jì)數(shù)的重要性不太重要。我們最好使用忽略幅度的余弦相似度。
2.5 閔氏距離(Minkowski)
d12=[(x1?x2)p+(y1?y2)p]1pd_{12} =[(x_1 - x_2) ^p+ (y_1 - y_2)^p]^{\frac{1}{p}}d12?=[(x1??x2?)p+(y1??y2?)p]p1?
最有趣的一點(diǎn)是,我們可以使用參數(shù) ppp 來(lái)操縱距離度量,使其與其他度量非常相似。常見(jiàn)的 ppp 值有:
- p=1p=1p=1:曼哈頓距離
- p=2p=2p=2:歐氏距離
- p=∞p=\inftyp=∞:切比雪夫距離
缺點(diǎn):閔氏距離與它們所代表的距離度量有相同的缺點(diǎn),因此,對(duì)曼哈頓距離、歐幾里得距離和切比雪夫距離等度量標(biāo)準(zhǔn)有個(gè)好的理解非常重要。此外,參數(shù)ppp 的使用可能很麻煩,因?yàn)楦鶕?jù)用例,查找正確的 ppp 值在計(jì)算上效率低。
用例:ppp的積極一面是可迭代,并找到最適合用例的距離度量。它允許在距離度量上有很大的靈活性,如果你非常熟悉 ppp和許多距離度量,將會(huì)獲益多多。
2.6 雅卡爾指數(shù)(Jaccard Index)
雅卡爾指數(shù)(交并比)是用于比較樣本集相似性與多樣性的統(tǒng)計(jì)量。雅卡爾系數(shù)能夠量度有限樣本集合的相似度,其定義為兩個(gè)集合交集大小與并集大小之間的比例。
dAB=1?∣A∩B∣∣A∪B∣d_{AB} =1 - \frac{|A \cap B|}{|A \cup B|}dAB?=1?∣A∪B∣∣A∩B∣?
缺點(diǎn):雅卡爾指數(shù)的一個(gè)主要缺點(diǎn)是它受數(shù)據(jù)大小的影響很大。大數(shù)據(jù)集對(duì)指數(shù)有很大影響,因?yàn)樗梢燥@著增加并集,同時(shí)保持交集相似。
用例:雅卡爾指數(shù)通常用于使用二進(jìn)制或二進(jìn)制數(shù)據(jù)的應(yīng)用程序中。當(dāng)你有一個(gè)深度學(xué)習(xí)模型來(lái)預(yù)測(cè)圖像分割時(shí),比如一輛汽車(chē),雅卡爾指數(shù)可以用來(lái)計(jì)算給定真實(shí)標(biāo)簽的預(yù)測(cè)分割的準(zhǔn)確度。
類(lèi)似地,它可以用于文本相似性分析,以測(cè)量文檔之間有多少詞語(yǔ)重疊。因此,它可以用來(lái)比較模式集合。
2.7 漢明距離(Hamming Distance)
漢明距離是兩個(gè)向量之間不同值的個(gè)數(shù)。它通常用于比較兩個(gè)相同長(zhǎng)度的二進(jìn)制字符串。它還可以用于字符串,通過(guò)計(jì)算不同字符的數(shù)量來(lái)比較它們之間的相似程度。
缺點(diǎn):當(dāng)兩個(gè)向量長(zhǎng)度不相等時(shí),漢明距離使用起來(lái)很麻煩。當(dāng)幅度是重要指標(biāo)時(shí),建議不要使用此距離指標(biāo)。
用例:典型的用例包括數(shù)據(jù)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)傳輸時(shí)的錯(cuò)誤糾正 / 檢測(cè)。它可以用來(lái)確定二進(jìn)制字中失真的數(shù)目,作為估計(jì)誤差的一種方法。此外,你還可以使用漢明距離來(lái)度量分類(lèi)變量之間的距離。
2.8 半正矢(Haversine)
半正矢距離是指球面上的兩點(diǎn)在給定經(jīng)緯度條件下的距離。它與歐幾里得距離非常相似,因?yàn)樗梢杂?jì)算兩點(diǎn)之間的最短連線。主要區(qū)別在于半正矢距離不可能有直線,因?yàn)檫@里的假設(shè)是兩個(gè)點(diǎn)都在一個(gè)球面上。
d=2rarcsin??(sin?2(φ2?φ12)+cos?(φ1)cos?(φ2)sin?2(λ2?λ12))d=2 \operatorname{r\arcsin}\left(\sqrt{\sin ^{2}\left(\frac{\varphi_{2}-\varphi_{1}}{2}\right)+\cos \left(\varphi_{1}\right) \cos \left(\varphi_{2}\right) \sin ^{2}\left(\frac{\lambda_{2}-\lambda_{1}}{2}\right)}\right)d=2rarcsin(sin2(2φ2??φ1??)+cos(φ1?)cos(φ2?)sin2(2λ2??λ1??)?)
符號(hào)說(shuō)明:
ddd:兩點(diǎn)之間的距離;
rrr:球的半徑;
φ1,φ2\varphi_1,\varphi_2φ1?,φ2?:點(diǎn)1和點(diǎn)2的緯度,以弧度制度量;
λ1,λ2\lambda_1, \lambda_2λ1?,λ2?:點(diǎn)1和點(diǎn)2的經(jīng)度,以弧度制度量。
缺點(diǎn):這種距離測(cè)量的一個(gè)缺點(diǎn)是,假定這些點(diǎn)位于一個(gè)球體上。實(shí)際上,這種情況很少出現(xiàn),例如,地球不是完美的圓形,在某些情況下可能使計(jì)算變得困難。相反,如果假定是橢球,使用 Vincenty 距離比較好。
用例:半正矢距離通常用于導(dǎo)航。例如,你可以使用它來(lái)計(jì)算兩個(gè)國(guó)家之間的飛行距離。請(qǐng)注意,如果距離本身不那么大,則不太適合。
2.9 S?rensen-Dice 系數(shù)
S?rensen-Dice 系數(shù)與雅卡爾指數(shù)非常相似,都是度量樣本集的相似性和多樣性。盡管它們的計(jì)算方法相似,但是 S?rensen-Dice 系數(shù)更直觀一些,因?yàn)樗梢员灰暈閮蓚€(gè)集合之間重疊的百分比,這個(gè)值在 0 到 1 之間:
D(A,B)=2∣A∩B∣∣A∣+∣B∣D(A, B)=\frac{2|A \cap B|}{|A|+|B|}D(A,B)=∣A∣+∣B∣2∣A∩B∣?
缺點(diǎn):正如雅卡爾指數(shù),S?rensen-Dice 系數(shù)也夸大了很少或沒(méi)有真值的集合的重要性,因此,它可以控制多集合的平均得分,還可以控制多組平均得分并按相關(guān)集合的大小成反比地加權(quán)每個(gè)項(xiàng)目,而不是平等對(duì)待它們。
用例:用例與雅卡爾指數(shù)相似,它通常用于圖像分割任務(wù)或文本相似性分析。
2.10 M-Distance
Mei Zheng, Fan Min, Heng-Ru Zhang, Wen-Bin Chen, Fast recommendations with the M-distance, IEEE Access 4 (2016) 1464–1468.
2.11 MCFV
Heng-Ru Zhang, Fan Min, Zhi-Heng Zhang, Song Wang, Efficient collaborative filtering recommendations with multi-channel feature vectors. International Journal of Machine Learning & Cybernetics. (2019)1165–1172.
2.12 三角距離Triangle
Triangle?(ij,iq)=Triangle?(OA→,OB→)=1?∣AB∣∣OA∣+∣OB∣Triangle?(ij,iq)=1?∑u∈Cij,iq(ru,j?ru,q)2∑u∈Ci,i,qru,j2+∑u∈Ci,i,qru,q2\operatorname{Triangle}\left(i_{j}, i_{q}\right)=\operatorname{Triangle}(\overrightarrow{O A}, \overrightarrow{O B})=1-\frac{|A B|}{|O A|+|O B|} \\ \operatorname{Triangle}\left(i_{j}, i_{q}\right)=1-\frac{\sqrt{\sum_{u \in C_{i j, i_{q}}}\left(r_{u, j}-r_{u, q}\right)^{2}}}{\sqrt{\sum_{u \in C_{i, i, q}} r_{u, j}^{2}}+\sqrt{\sum_{u \in C_{i, i, q}} r_{u, q}^{2}}} Triangle(ij?,iq?)=Triangle(OA,OB)=1?∣OA∣+∣OB∣∣AB∣?Triangle(ij?,iq?)=1?∑u∈Ci,i,q??ru,j2??+∑u∈Ci,i,q??ru,q2??∑u∈Cij,iq???(ru,j??ru,q?)2??
where OA→\overrightarrow{O A}OA is the rating vector of iji_{j}ij?, OB→\overrightarrow{O B}OB is the rating vector of iqi_{q}iq?.
Triangle considers both the length of vectors and the angle between them, so it is more reasonable than the angle based Cosine measure. For example, given the two vectors A = (5, 5, 5) and B = (1, 1, 1), the Cosine similarity is 1, which is contrary to common sense. In contrast, the Triangle similarity between them is 0.33, more in line with expectations.
三角距離既考慮了向量的長(zhǎng)度,也考慮了它們之間的夾角,因此比基于角度的余弦測(cè)度更合理。 例如,給定兩個(gè)向量 A = (5, 5, 5) 和 B = (1, 1, 1),則余弦相似度為 1,這與常識(shí)相反。 相比之下,它們之間的三角形相似度為0.33,更符合預(yù)期。
Shuang-Bo Sun, Zhi-Heng Zhang, Xin-Ling Dong, Heng-Ru Zhang, Tong-Jun Li, Lin Zhang, Fan Min, Integrating Triangle and Jaccard similarities for recommendation, PLOS ONE 12 (8) (2017) 1–16.
總結(jié)
以上是生活随笔為你收集整理的k近邻推荐用到的各种距离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python读取json格式的超参数
- 下一篇: 巴克沙里手稿——历史性的突破可能比内容本