序数分类包和算法

Posted

技术标签:

【中文标题】序数分类包和算法【英文标题】:Ordinal classification packages and algorithms 【发布时间】:2011-03-30 12:55:09 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

仅供参考的设计包似乎不在 CRAN atm 中。【参考方案2】:

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

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

Eibe Frank 和 Mark Hall,A simple approach to ordinal classification. 在第 12 届欧洲机器学习会议论文集上,2001 年,第 145-156 页。

如果您不需要预制方法,那么这些参考资料(除了doug's note about the Yahoo SVM paper)可能会有用:

W Chu 和 Z Ghahramani,Gaussian processes for ordinal regression. 机器学习研究杂志,2006 年。 Wei Chu 和 S. Sathiya Keerthi,New approaches to support vector ordinal regression. 在第 22 届机器学习国际会议论文集上,2005 年,145-152。

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

    ordinalForestCRAN rpartScore CRAN

【讨论】:

以上是关于序数分类包和算法的主要内容,如果未能解决你的问题,请参考以下文章

我想用使用 BERT 隐藏状态的分类算法进行分析

TCP 组包和拆包算法

雷德算法实现到位序

基于QT的TCP传输拆包和组包算法

pytorch中序数多分类的损失函数

年龄的神经网络序数分类