国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

8種相似度度量方式的原理及實現

lewif / 3695人閱讀

摘要:實現參考鏈接計算各類距離關于機器學習距離的理解機器學習中的相似性度量如何通俗易懂地理解皮爾遜相關系數數學應用

8種相似度度量方式的原理及實現 歐氏距離(Euclidean Distance)
歐氏距離(也稱歐幾里得度量)指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)

計算公式

$$dist(A,B)=sqrt{sum_{i=1}^n(A_i-B_i)^2}$$

試用場景

在數據完整(無維度數據缺失)的情況下, 維度間的衡量單位是一致的, 否則需要標準化處理

python實現
import numpy as np


vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])

d = np.linalg.norm(vec1-vec2, ord=2)
# 或者
d = np.sqrt(np.sum(np.square(vec1-vec2)))

曼哈頓距離(Manhattan Distance)
在歐幾里得空間的固定直角坐標系上兩點所形成的線段對軸產生的投影的距離總和

計算公式

$$dist(A,B)=sum_{i=1}^n|A_i-B_i|$$

試用場景

在數據完整(無維度數據缺失)的情況下, 需要將空間劃分成網格, 然后以網格為單位來進行度量, 允許4個方向

python實現
import numpy as np

vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
 
d = np.linalg.norm(vec1-vec2, ord=1)
# 或者
d = np.sum(np.abs(vec1-vec2))

切比雪夫距離(Chebyshev Distance)
切比雪夫距離(Chebyshev distance)是向量空間中的一種度量,二個點之間的距離定義為其各座標數值差的最大值

計算公式

$$dist(A,B)=max_i|A_i-B_i|$$
or
$$dist(A,B)=lim_{p→infty}(sum_{i=1}^n|A_i-B_i|^p)^{frac{1}{p}}$$

試用場景

需要將空間劃分成網格, 然后以網格為單位來進行度量, 允許8個方向

python實現
import numpy as np

vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])

d = np.linalg.norm(vec1-vec2, ord=np.inf)
# 或者
d = np.abs(vec1-vec2).max()

閔可夫斯基距離(Minkowski Distance)
歐氏空間中的一種測度,被看做是歐氏距離和曼哈頓距離的一種推廣

計算公式

$$dist(A,B)=sqrt[p]{sum_{i=1}^n|A_i-B_i|^p}$$

試用場景

當 $p=1$ 時,就是曼哈頓距離

當 $p=2$ 時,就是歐氏距離

當 $p→∞$ 時,就是切比雪夫距離

python實現
import numpy as np

vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])

"""
ord=1: 一范數
ord=2: 二范數
ord=np.inf: 無窮范數
"""
d = np.linalg.norm(vec1-vec2, ord=arg)

漢明距離(Hamming Distance)
在信息論中,兩個等長字符串之間的漢明距離(Hamming distance)是兩個字符串對應位置的不同字符的個數

計算公式

$$dist(A,B)=sum_{i=0}^n{A[i]igoplus B[i]}$$

試用場景

信息編碼(為了增強容錯性,應使得編碼間的最小漢明距離盡可能大)

python實現
import numpy as np

vec1 = np.array([1, 1, 0, 1, 0, 1, 0, 0, 1])
vec2 = np.array([0, 1, 1, 0, 0, 0, 1, 1, 1])

d = len(np.nonzero(vec1-vec2)[0])
# 或者
d = np.shape(np.nonzero(vec1-vec2)[0])[0]

余弦相似度(Cosine Similarity)
余弦相似度,又稱為余弦相似性,是通過計算兩個向量的夾角余弦值來評估他們的相似度

計算公式

$$cos( heta)=cfrac{Acdot B}{|A||B|}$$
or
$$cos( heta)=cfrac{sum_{i=1}^nA_iB_i}{sqrt{sum_{i=1}^nA_i^2}sqrt{sum_{i=1}^nB_i^2}}$$

試用場景

衡量兩個向量方向的差異

python實現
import numpy as np

vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])

d = np.dot(vec1,vec2)/(np.linalg.norm(vec1)*(np.linalg.norm(vec2)))

皮爾森相關系數(Pearson Correlation Coefficient)
用于度量兩個變量之間的相關程度

計算公式

$$P(A,B)=cfrac{sum_{i=1}^n(A_i-overline A)(B_i-overline B)}{sqrt{sum_{i=1}^n(A_i-overline A)^2sum_{i=1}^n(B_i-overline B)^2}}$$

試用場景

反映兩個變量是正相關還是負相關

python實現
import numpy as np

vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])

p = np.corrcoef(vec1, vec2)

杰卡德相似系數(Jaccard Similarity Coefficient)及杰卡德距離(Jaccard Distance)
用于比較有限樣本集之間的相似性與差異性

杰卡德相似系數計算公式

$$J(A,B)=cfrac{|Aigcap B|}{|Aigcup B|}$$

杰卡德距離計算公式

$$J_delta(A,B)=1-J(A,B)=cfrac{|Aigcup B|-|Aigcap B|}{|Aigcup B|}$$

試用場景

比較文本相似度,用于文本查重與去重;

計算對象間距離,用于數據聚類或衡量兩個集合的區分度等。

python實現
import numpy as np
import scipy.spatial.distance as dist

vec1 = np.array([1, 1, 0, 1, 0, 1, 0, 0, 1])
vec2 = np.array([0, 1, 1, 0, 0, 0, 1, 1, 1])

d = dist.pdist(np.array([vec1, vec2]), "jaccard")


參考鏈接

Python Numpy計算各類距離

關于機器學習距離的理解

機器學習中的相似性度量

如何通俗易懂地理解皮爾遜相關系數

GeoGebra 數學應用

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43885.html

相關文章

  • 推薦系統01--余弦相似

    摘要:在近鄰推薦中,最常用的相似度是余弦相似度。這就是由于余弦相似度被向量長度歸一化后的結果。用余弦相似度計算出來,兩個用戶的相似度達到。余弦相似度適用于評分數據,杰卡德相似度適合用于隱式反饋數據。 今天,我們來聊聊協同過濾中的相似度計算方法有哪些。相似度的本質推薦系統中,推薦算法分為兩個門派,一個是機器學習派,另一個就是相似度門派。機器學習派是后起之秀,而相似度派則是泰山北斗,以致撐起來推...

    cncoder 評論0 收藏0

發表評論

0條評論

lewif

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<