Machine learning 如何利用标签概率进行文本分类?

Machine learning 如何利用标签概率进行文本分类?,machine-learning,classification,mahout,text-mining,Machine Learning,Classification,Mahout,Text Mining,为了学术目的,我试图解决一个文本分类问题。我需要将推文分类为“云”、“冷”、“干”、“热”、“湿”、“飓风”、“冰”、“雨”、“雪”、“风暴”、“风”和“其他”等标签。训练数据中的每条tweet都有针对所有标签的概率。说出这样的信息:“我已经知道这将是一个艰难的得分日。现在和昨天下午一样多风。”21%的几率是炎热的,79%的几率是大风。我研究过分类问题,它可以预测风、热或其他。但在这个问题中,每个训练数据都有针对所有标签的概率。我以前使用过mahout NaiveBayes分类器,它为给定的文本

为了学术目的,我试图解决一个文本分类问题。我需要将推文分类为“云”、“冷”、“干”、“热”、“湿”、“飓风”、“冰”、“雨”、“雪”、“风暴”、“风”和“其他”等标签。训练数据中的每条tweet都有针对所有标签的概率。说出这样的信息:“我已经知道这将是一个艰难的得分日。现在和昨天下午一样多风。”21%的几率是炎热的,79%的几率是大风。我研究过分类问题,它可以预测风、热或其他。但在这个问题中,每个训练数据都有针对所有标签的概率。我以前使用过mahout NaiveBayes分类器,它为给定的文本使用特定的标签来构建模型。如何将各种标签的这些输入概率转换为任何分类器的输入?

在概率设置中,这些概率反映了训练实例的类标签的不确定性。这会影响分类器中的参数学习

有一种自然的方法可以将其结合起来:例如,在NaiveBayes中,当估计模型中的参数时,不是每个单词都得到文档所属类的一个计数,而是得到概率计数。因此,属于某个类的概率很高的文档对该类的参数贡献更大。这种情况与使用EM学习多项式混合模型时完全相同,在EM中,您拥有的概率与实例的成员/指标变量相同

或者,如果您的分类器是一个具有softmax输出的神经网络,而不是目标输出是一个具有单个[1]和大量零的向量,则目标输出将成为您提供的概率向量


不幸的是,我不知道有任何标准实现允许您将这些想法结合起来。

在概率设置中,这些概率反映了您的培训实例的类标签的不确定性。这会影响分类器中的参数学习

有一种自然的方法可以将其结合起来:例如,在NaiveBayes中,当估计模型中的参数时,不是每个单词都得到文档所属类的一个计数,而是得到概率计数。因此,属于某个类的概率很高的文档对该类的参数贡献更大。这种情况与使用EM学习多项式混合模型时完全相同,在EM中,您拥有的概率与实例的成员/指标变量相同

或者,如果您的分类器是一个具有softmax输出的神经网络,而不是目标输出是一个具有单个[1]和大量零的向量,则目标输出将成为您提供的概率向量


不幸的是,我不知道有哪种标准实现可以让您将这些想法结合起来。

如果您想要现成的解决方案,您可以使用支持多类分类和实例权重的学习者。假设你有
k
类,它们的概率
p_1,…,p_k
。对于每个输入实例,使用标签
1,…,k
创建具有相同特征的
k
新训练实例,并分别分配权重
p_1,…,p_k


是支持实例权重的多类分类的学习者。

如果您想要现成的解决方案,可以使用支持多类分类和实例权重的学习者。假设你有
k
类,它们的概率
p_1,…,p_k
。对于每个输入实例,使用标签
1,…,k
创建具有相同特征的
k
新训练实例,并分别分配权重
p_1,…,p_k


是一个支持实例权重的多类分类的学习者。

因此我理解:您的数据包括tweet和一个概率向量,表示每个tweet属于多个标签(“热”、“冷”等)的可能性,您的目的是预测那些看不见的tweet的概率?嗨,迈克,谢谢你的回复。你完全正确。我需要预测新推的概率。好的,酷。你如何评估预测器的性能?嗨,迈克。可以接受最小偏差(比如1%或2%)。例如,在测试数据中,有10%的几率变热,如果模型预测有9%或11%的几率变热,这应该是好的。将要为此写入自定义代码。在性能方面没有限制。我希望预测结果的偏差最小。不要这样评估——使用预测分布和正确分布之间的KL偏差。在学习理论中,这被称为交叉熵损失。它具有你想要的特性(接近不会给你带来太多的惩罚),但它很平滑,并且可以在你开始使用它时进行优化。因此我理解:你的数据包括推特和一个概率向量,表示每条推特属于多个标签(“热”、“冷”等)的可能性你的目的是预测那些看不见的推特的概率吗?嗨,迈克,谢谢你的回复。你完全正确。我需要预测新推的概率。好的,酷。你如何评估预测器的性能?嗨,迈克。可以接受最小偏差(比如1%或2%)。例如,在测试数据中,有10%的几率变热,如果模型预测有9%或11%的几率变热,这应该是好的。将要为此写入自定义代码。在性能方面没有限制。我想让它在预测结果中的偏差最小的情况下工作。不要这样评估——使用预测结果之间的KL偏差