序数分类包和算法

时间:2010-08-16 16:25:53

标签: machine-learning classification

我正在尝试制作一个分类器,为项目 i 选择评级(1-5)。对于每个项目i,我有一个向量 x ,包含大约40个与 i 相关的不同数量。我对每件商品都有金标准等级。根据 x 的某些功能,我想训练一个分类器,给我一个与金标准非常接近的等级1-5。

我在分类器上看到的大部分信息只涉及二元决策,而我有一个评级决定。是否有常见的技术或代码库来处理这类问题?

4 个答案:

答案 0 :(得分:10)

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

R (至少)有几个针对序数回归的包。其中一个实际上被称为Ordinal,但我没有使用它。我使用R中的 Design 包进行序数回归,我当然可以推荐它。 Design 包含一整套功能,用于通过序数逻辑模型进行序数回归问题的解决方案,诊断,测试和结果表示。这两个包都可以从CRAN获得。使用设计包的序数回归问题step-by-step solution出现在加州大学洛杉矶分校统计网站上。

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

答案 1 :(得分:7)

您是否尝试过使用Weka?开箱即用supports binary, numerical, and nominal attributes,后两者可能适合您的目的。

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

如果您不需要预先制定的方法,那么这些引用(除doug's note about the Yahoo SVM paper之外)可能有用:

答案 2 :(得分:3)

dough has raised都有效的问题。让我再添一个。您没有说明如何衡量分类与“黄金标准”之间的协议。您必须尽快制定该问题的答案,因为这将对您的下一步产生巨大影响。根据我的经验,任何(好的,不是任何,最多)优化任务中最有问题的部分是得分函数。试着问问自己是否所有错误都相同?错误地将“3”分类为“4”与将“4”分类为“3”具有相同的影响吗?那么“1”对比“5”。可能错误地遗漏一个案件会产生灾难性的后果(错过艾滋病毒诊断,激活飞机上的飞行员弹射)

衡量分类分类器之间协议的最简单方法是Cohen's Kappa。以下链接herehereherehere

中介绍了更复杂的方法

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

答案 3 :(得分:1)

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

相关问题