集合の類似度について
概要
- 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