机器学习排名算法


10

我有一组元素,我可以根据特征来描述它们。从而:Xñ

X一世{C一世1个C一世2C一世ñ}X一世X

其中是根据特性对元素的(数值)评估。因此,我的元素可以视为维空间中的点。C一世Ĵ一世Ĵñ

根据我的阅读,存在诸如“贝叶斯分类器”之类的算法,可以对我的集合中的任何元素提供“是”或“否”类型的答案,但前提是我确实使用了由一些我的集合中的元素以及算法的预期结果。基于该数据,该算法应该能够采用任何其他元素,而不是训练集的一部分,并根据从训练集中学到的知识提供“是”或“否”的答案。如果您对期望的内容(训练集)有某种想法,但不确定如何产生此结果的特定规则,那么这很好。

我想对数据进行的处理不会得到“是”或“否”类型的答案,但是我想在元素中引入一个排名。其中一些比其他“更好”。就像贝叶斯过滤器一样,我对期望值有一个大致的了解。因此,我可以从元素的子集中生成一个“培训排名”,并将其输入到MLA中。根据该训练,我可以对我的整个作品进行排名。

为此,我看到两种方法:

  1. MLA将为每个元素评分,然后根据该评分对元素进行排名。
  2. MLA可以采用两个元素和并确定其中一个更好(成对比较)。使用该比较操作使用quicksort。X一世XĴ

注意:基于分数,成对函数很容易实现,而基于成对函数,生成分数很简单,因此这只是两个产生相同结果的方法。

是否有MLA可以提供评分功能或成对比较功能的示例?

编辑:为了添加更多上下文:当前,我的项目是根据一种算法进行排名的,该算法通过对进行计算来生成每个项目的得分(实数)。尽管生成的排名非常正确,但是我经常必须修改算法以某种方式对其进行调整,因为我可以清楚地看到一些未按我期望的排名的项目。C一世Ĵ

所以目前我的设计过程是:

  1. 了解什么是完美的排名
  2. 尝试(手动)派生一个算法来对此类项目进行排名
  3. 观察结果
  4. 调整算法

所以我考虑了MLA,因为我的过程的起点就是可以用作训练数据。我可能会以当前的排名开始,根据我的需求交换项目并将其提供。

Answers:


3

许多分类算法已经完全可以满足您的需求,但是通常以二进制(或n阶)判断的形式向用户展示其答案。例如,SVMLight是支持向量机分类算法的实现;人们通常使用它对某些数据集进行二进制判断。然而,在后台发生的是该算法正在为数据分配签名的置信度判断。这些限制在-1.0和1.0之间,是用于对数据进行排名的方法!


2

似乎可以使用回归分析。另外,如果您没有分数,可能需要为训练集中的元素分配分数(实数)。尽管您可以仅使用等级作为目标值,但是如果您仅有少量训练样本,那么这将使您的模型不佳。


0

我认为您对机器学习算法的期望很高。计算机无法自行决定项目1是否优于项目2。机器学习算法可以做的是,如果举几个例子,将某项第1项的评分评为优于第2项,那么它可以学习对各项进行排名[1]。但是,您仍然需要训练数据,在其中提供项目示例,并提供有关训练数据中所有项目的项目1是否大于项目2的信息。

[1] http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html


非常感谢您提供的链接。而且我完全理解,我将需要为算法提供训练集,以便能够对后续项目进行排名。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.