根据各种标准选择一个项目的理论是什么?



我需要解决一个问题,其中项目a 必须与数千个其他项目进行比较,并找出哪些项目与项目a最相似。

我想根据它们与项目a 的相似程度为每个项目分配权重。各种标准将决定最终的权重。例如,如果item1.someProperty == otherItem.someProperty,那么我增加5个权重,如果item1.anotherProperty == otherItem.anotherProperty,那么我只增加1个权重,因为somePropertyanotherProperty更重要。

我描述这些的原因是,我想知道是否有任何理论可以帮助我创建这个系统。特别是,如何选择每个标准的权重,如何计算项目的最终权重,以及如何构建所有这些。

有谁知道有什么理论可以帮助吗?或者也许有更好的方法来做我想做的事?

您可以将属性视为维度,并从中组成距离。如果属性之间存在相关性,您也可以将其考虑在内(谷歌马氏距离)。

但是基本上它会转到

 float distance(a, b) {
    return w1 * ABS(a.x - b.x)
         + w2 * ABS(a.y - b.y)
           ...
    ;
 } 

你可以不把这些项相加,而是把它们的平方相加(以惩罚大的差异),任何事情都可以。

顺便说一句,对于标称数据,你可以使用一些基于熵的差异度量。

这至少在表面上与信息检索(IR)的向量空间模型(VSM)相似。这通常是基于词袋的,但也可以适用于其他数据表示。

你所描述的权重对应于VSM IR中所谓的"场增强"。

但也可参见最近邻搜索

你可以读任何与机器学习相关的书,比如这本。算法KNN (K近邻)解决你的问题。你必须为你的问题定义一个距离度量,然后比较这些距离。

最新更新