jaccard相似度演算法

2021-10-01 21:59:28 字數 1120 閱讀 3606

jaccard index, 又稱為jaccard相似係數(jaccard similarity coefficient)用於比較有限樣本集之間的相似性與差異性。jaccard系數值越大,樣本相似度越高。

兩個集合a和b交集元素的個數在a、b並集中所佔的比例,稱為這兩個集合的傑卡德係數,用符號 j(a,b) 表示。傑卡德相似係數是衡量兩個集合相似度的一種指標(余弦距離也可以用來衡量兩個集合的相似度)。

python實現:

def jaccard_sim(a, b):

unions = len(set(a).union(set(b)))

intersections = len(set(a).intersection(set(b)))

return intersections / unions

a = ['x', 'y']

b = ['x', 'z', 'v']

print(jaccard_sim(a, b))

傑卡德距離(jaccard distance) 是用來衡量兩個集合差異性的一種指標,它是傑卡德相似係數的補集,被定義為1減去jaccard相似係數。

傑卡德距離用兩個集合中不同元素佔所有元素的比例來衡量兩個集合的區分度。

根據jaccard相似度可知,ab兩個人一共看了五部哈利波特 ,所以並集為5;共同都看過只有1部,交集為1,因此ab相似度為1/5。ac同理。 sim(a,b)=1/5 sim(a,c)=2/4 sim(a,b)但jaccard演算法不適合協同過濾,因為在協同過濾中,評分是乙個很關鍵的參考因素,而jaccard演算法忽略了其中的評分環節。

傑卡德相似度適合用於隱式反饋資料。例如,使用使用者的收藏行為,計算使用者之間的相似度,傑卡德相似度就適合來承擔這個任務。

jaccard相似度 相似度聚類

相似度分析任務 實驗室實習期間,要做乙個基於相似度的句子無監督聚類。所有句子一共有130w個,從一開始讀資料就遇到了一些問題,以此記錄整個流程。一開始很無知的建立了乙個130萬 130萬的矩陣,結果我的小電腦就直接終止了這個程序,還好不是在實驗室的gpu上跑的,於是需要考慮如何有效的構建這樣的矩陣。...

相似度演算法之余弦相似度

余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫 余弦相似性 上圖兩個向量a,b的夾角很小可以說a向量和b向量有很高的的相似性,極端情況下,a和b向量完全重合。如下圖 如上圖二 可以認...

使用余弦相似度演算法計算文字相似度

在求相似度的時候經常會有以下一些方法,1.基於詞向量 2.基於字元的 3.基於概率統計的 4.基於詞嵌入模型的 在求文字相似度的時候經常會使用余弦相似度來求,下面來記錄一下余弦相似度的原理。余弦相似度量 計算個體間的相似度。相似度越小,距離越大。相似度越大,距離越小。假設有3個物品,item1,it...