机器学习算法排名

机器算法验证 机器学习 算法 排行 特征工程
2022-03-09 02:13:57

我有一组元素,我可以根据特征对其进行描述。因此:Xn

xi:{ci1,ci2,,cin}xiX

其中是根据特征的(数值)评估所以我的元素可以看作是维空间中的点。cijijn

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

我想对我的数据做的不是得到“是”或“否”类型的答案,而是我想在元素中引入一个排名。他们中的一些人比其他人“更好”。就像贝叶斯过滤器一样,我对我的期望有一个大致的了解。因此,我可以从我的部分元素中生成一个“训练排名”,并将其输入 MLA。基于该培训,它将能够对我的整个集合进行排名。

为了做到这一点,我看到了两种方法:

  1. MLA 会给每个元素打一个分数,然后根据分数对元素进行排名。
  2. MLA 将能够采用两个元素并确定哪个更好(成对比较)。使用该比较操作使用快速排序。xixj

注意:基于分数,成对函数实现起来很简单,基于成对函数,生成分数也很简单,所以这只是产生相同结果的两种方法。

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

编辑:为了添加更多上下文:目前我的项目是根据一种算法进行排名的,该算法通过对进行计算来生成每个项目的分数(实数) 。虽然生成的排名非常正确,但我经常不得不修改算法以某种方式对其进行调整,因为我可以清楚地看到一些项目没有按照我的预期进行排名。cij

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

  1. 了解什么是完美排名
  2. 尝试(手动)推导出一种算法,对这样的项目进行排名
  3. 观察结果
  4. 调整算法

所以我考虑了 MLA,因为我的流程的起点是可以用作训练数据的内容。我可能会从获取当前排名开始,根据我的需要交换项目并喂它。

3个回答

许多分类算法已经完全符合您的要求,但通常以二元(或 n 路)判断的形式向用户提供答案。例如,SVMLight是支持向量机分类算法的一种实现;人们通常使用它来对某些数据集进行二元判断。然而,在幕后发生的是算法正在为数据分配有符号的置信度判断。这些限制在 -1.0 和 1.0 之间,是您应该用来对数据进行排名的!

看来您可以使用回归分析此外,如果没有,您可能需要为训练集中的元素分配分数(实数)。虽然你可以只使用排名作为目标值,但如果你只有一小部分训练样本,它会让你得到一个糟糕的模型。

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

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