15

我正在尝试创建一个分类器,为项目i选择评级 (1-5) 。对于每个项目 i,我有一个向量x ,其中包含与i相关的大约 40 个不同数量。我对每个项目也有一个黄金标准评级。基于x的某些功能,我想训练一个分类器给我一个与黄金标准非常匹配的 1-5 评级。

我在分类器上看到的大多数信息都只处理二元决策,而我有一个评级决策。是否有通用技术或代码库来处理此类问题?

4

5 回答 5

10

我同意你的观点,其中响应变量为序数尺度的 ML 问题需要特殊处理——“机器模式”(即返回类标签)似乎不够,因为类标签忽略了标签之间的关系(“1st , 第二, 第三"); 同样,“回归模式”(即,将序数标签视为浮点数,{1, 2, 3}),因为它忽略了响应变量之间的度量距离(例如,3 - 2 != 1)。

R有(至少)几个针对序数回归的包。其中之一实际上称为Ordinal,但我没有使用它。我已经使用 R 中的设计包进行序数回归,我当然可以推荐它。设计包含一整套功能,用于通过序数逻辑模型解决、诊断、测试和结果呈现序数回归问题。这两个包都可以从CRAN获得)使用设计包的序数回归问题的逐步解决方案在 UCLA Stats 站点上提供。

另外,我最近看了雅虎的一个小组使用支持向量机进行序数分类的论文。我没有尝试应用他们的技术。

于 2010-08-16T19:34:48.807 回答
8

你试过使用Weka吗?它支持开箱即用的 二进制、数字和名义属性,后两者可能足以满足您的目的。

此外,看起来可用的分类器之一是称为OrdinalClassClassifier.java的元分类器,这是这项研究的结果:

如果您不需要预先制作的方法,那么这些参考资料(除了doug 关于 Yahoo SVM 论文的注释之外)可能会有用:

于 2010-08-17T15:15:13.997 回答
3

面团提出的问题都是有效的。让我再加一个。你没有说你想如何衡量分类和“黄金标准”之间的一致性。您必须尽快制定该问题的答案,因为这将对您的下一步产生巨大影响。以我的经验,任何(好的,不是任何,大多数)优化任务中最有问题的部分是得分函数。试着问自己是否所有的错误都相等?将“3”错误分类为“4”是否与将“4”分类为“3”具有相同的影响?那么“1”与“5”呢?错误地漏掉一个病例会造成灾难性的后果(错过艾滋病毒诊断,在飞机上激活飞行员弹射)

衡量分类分类器之间一致性的最简单方法是Cohen 的 Kappa。更复杂的方法在以下链接中描述herehereherehere

话虽如此,有时选择“有效”的解决方案而不是“正确的”解决方案更快,更容易。如果我是你,我会选择一个机器学习库(R,Weka,我个人喜欢Orange),看看我能得到什么。只有当你没有相当好的结果时,才寻找更复杂的解决方案

于 2010-08-23T07:58:54.150 回答
1

如果对花哨的统计数据不感兴趣,那么在训练数据足够大的情况下,具有 3 或 5 个输出节点的单隐藏层反向传播神经网络可能会解决问题。大多数 NN 分类器试图最小化并不总是需要的均方误差。前面提到的支持向量机是一个不错的选择。FANN 是一个很好的反向传播 NN 库,它还有一些工具可以帮助训练网络。

于 2010-08-23T08:45:22.560 回答
1

R中有两个包可能有助于驯服序数数据

  1. ordinalForestCRAN上
  2. rpartScoreCRAN上
于 2021-11-22T21:24:21.820 回答