集合の類似度について
概要
- 2つの集合X, Yの類似度を測る指標
jaccard
,dice
,simpson
などがある
定義
jaccard
|X∩Y||X∪Y|dice
2|X∩Y||X|+|Y|simpson
|X∩Y|min各種指標のゆるさ、厳しさ
シミュレーションを行うと、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