Jaccard類似度(ジャカード類似度)— 集合の重なりを0〜1で測る指標
Jaccard類似度とは「共通要素の数 ÷ 全ユニーク要素の数」で求まる、二つの集合間の一致度を表す指標である。0(完全不一致)から1(完全一致)の範囲を取り、要素の順序は一切問わない。
計算式
計算式は J(A, B) = |A ∩ B| ÷ |A ∪ B| と表される。分子は両集合が共有する要素数であり、分母は両集合を合わせた全ユニーク要素数である。例えば A={apple, mandarin, banana}、B={apple, banana, grape} とすると、共通要素は apple と banana の2つ、全体のユニーク要素は4つとなるため、J = 2÷4 = 0.50 となる。
なぜ重要か
Jaccard類似度は「順位」ではなく「集合としての一致」を測るため、順序変動の影響を受けない。ラインナップ(=含まれる要素の顔ぶれ)が同じであれば、ランキングが入れ替わってもスコアは維持される。
AI検索評価での活用例
AI検索エンジンの評価指標のうち、⑦引用重複率は、複数のAI検索エンジン間でどれだけ同じドメインが共有されているかをJaccard類似度で計測する。⑩引用一貫性は、週をまたいで同じドメインが引用され続けるかどうかを追跡する、再テスト信頼性(=同じ条件で測り直しても結果が安定しているかを示す指標)の代理として用いられる。
弱点とバリアント(派生指標)
Jaccard類似度は集合サイズの非対称に弱い。例えば |A|=100、|B|=10 で、Bの要素がすべてAに含まれていたとしても、Jは0.10にとどまってしまう。この弱点を補うため、より小さい方の集合サイズで割るOverlap coefficient(オーバーラップ係数)は、サイズ差が大きい比較に適している。また、引用頻度の重みを加味した拡張版であるWeighted Jaccard(重み付きジャカード、Ioffe 2010)という手法もある。テキストの類似度を測る場面では、シングリング(=テキストをn-gram断片に分割する前処理)とJaccard類似度を組み合わせる手法も古典的によく使われる。
順序を問わず「二つの集合がどれだけ一致するか」をシンプルに測りたい時は、Jaccard類似度を使うとよい。
出典・参考
関連ノート
- Concurrency vs parallelism — structure vs simultaneous execution
- Identifiers, file extensions, and what a .mjs file really is
- Line endings LF / CR / CRLF — the types, their differences, and what Git's warning means
- Tech trees and DAGs — from a game's crafting chart to the true nature of dependencies
- What an OS is — the layer between your apps and the hardware