集合の類似度

集合の類似度について

タグ jaccard dice simpson 集合の類似度


概要

  • 2つの集合\(X\), \(Y\)の類似度を測る指標
  • jaccard, dice, simpsonなどがある

定義

jaccard

\[\frac{|X\cap Y|}{|X\cup Y|}\]

dice

\[\frac{2|X\cap Y|}{|X|+|Y|}\]

simpson

\[\frac{|X\cap Y|}{\min(|X|,|Y|)}\]

各種指標のゆるさ、厳しさ

シミュレーションを行うと、simpson > dice > jaccardの順でゆるい

data = []
for i in range(10000):
    X = set(random.sample(string.ascii_lowercase, random.randint(10, 15)))
    Y = set(random.sample(string.ascii_lowercase, random.randint(10, 15)))
    jaccard = len(X & Y) / len(X | Y)
    simpson = len(X & Y) / min(len(X), len(Y))
    dice = 2*len(X & Y) / (len(X) + len(Y))
    data.append( (jaccard, simpson, dice) )
df = pd.DataFrame(data)
df.columns = ["jaccard", "simpson", "dice"]
df

google colab

参考