我与一些提供答案的人有不同的看法——即,您需要进一步说明问题。抽象级别大约是正确的。进一步的规范将使问题更容易,但解决方案的用处不大。
几年前,我在ProgrammableWeb上看到了一张图片——它将雅虎上的搜索结果与谷歌上相同搜索的结果进行了比较。有很多信息需要传达:一些结果在两组中,一些在一组中,共同的结果将在各自引擎的结果中具有不同的位置,必须以某种方式显示。
我喜欢这个图形,并在 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) 两个数据点之间的相似程度与连接它们的线的角度成正比——如果它们相等,则为 90 度,随着差异的增加,角度减小;这非常直观;(iii) 一个数据集中的点不存在于第二个数据集中的情况很容易显示——一个点将出现在两条线上的一条上,但没有一条线将它连接到另一条线上的点。
该模型适用于比较搜索结果,因为每个搜索结果都有一个“分数”(其索引或结果列表中的顺序)。对于其他类型的数据,您可能必须为每个数据点分配一个分数——我想可能是一个相似性指标(从某种意义上说,这实际上是搜索结果的顺序,与列表顶部的距离)