私は、回答者の一部とは異なる見解を持っています。つまり、問題をさらに特定する必要があるということです。抽象化レベルはほぼ正しいです。詳細な仕様は問題をより簡単にしますが、解決策はあまり役に立ちません。
数年前、ProgrammableWebでグラフィックを見ました。これは、Yahoo での検索結果と Google での同じ検索結果を比較したものです。伝えるべき情報はたくさんあります。両方のセットにある結果もあれば、1 つのセットにある結果もあり、共通の結果はそれぞれのエンジンの結果で異なる位置にあるため、何らかの方法で表示する必要があります。
グラフィックが気に入り、Matplotlib (Python 科学プロット ライブラリ) で再実装しました。以下は、いくつかのランダムポイントと、それを生成するために使用したpythonコードを使用した例です。
from matplotlib import pyplot as PLT
xvals = NP.array([(2,3), (5,7), (8,6), (1.5,1.8), (3.0,3.8), (5.3,5.2),
(3.7,4.1), (2.9, 3.7), (8.4, 6.1), (7.1, 6.4)])
yvals = NP.tile( NP.array([5,3]), [10,1] )
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x, y, "-", lw=3, color='b')
ax1.plot(x, y2, "-", lw=3, color='b')
for a, b in zip(xvals, yvals) : ax1.plot(a,b,'-o',ms=8,mfc='orange', color='g')
PLT.axis("off")
PLT.show()
このモデルにはいくつかの興味深い機能があります。(i) 実際には、類似度を集計するのではなく、アイテムごとに (ドットを結ぶ垂直方向の線) 「類似度」を扱います。(ii) 2 つのデータ ポイント間の類似度は、それらを結ぶ線の角度に比例します。それらが等しい場合は 90 度であり、差が大きくなるにつれて角度が減少します。これは非常に直感的です。(iii) 1 つのデータ セットのポイントが 2 番目のデータ セットに存在しない場合は、簡単に表示できます。ポイントは 2 本の線の一方に表示されますが、それをもう一方の線のポイントに接続する線はありません。
このモデルは、検索結果を比較するのに適しています。これは、各検索結果に「スコア」(そのインデックス、または結果リスト内の順序) があるためです。他のタイプのデータの場合は、各データ ポイントにスコアを割り当てる必要がある場合があります。これは、類似度の指標であると考えられます (ある意味では、それが実際の検索結果の順序であり、リストの先頭からの距離です)。