情感分类中的缺失值

我正在尝试使用Python的sklearn包构建一个情感分析引擎。问题在于分析烂番茄影评,这是在Kaggle竞赛中的一个项目

https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews

情感可以有五种可能的值

我使用了以下分类器

  1. 多项式朴素贝叶斯
  2. 逻辑回归
  3. 随机梯度下降

由于这些都是适合二元分类的线性分类器,我需要采取以下步骤

  1. 将训练集和测试集分成五个部分,每个部分对应一种情感。假设情感的可能值为a、b、c、d、e。那么在我的数据的第一部分中,我将拥有所有评论,但标记为情感’a’的评论将被标记为正面,其余所有评论将被标记为负面。同样,我为其他情感值创建其他部分。

  2. 清理所有五个部分的数据

  3. 创建一个管道,并将所有测试集部分依次输入到我的分类器中。我将为每个部分存储一个结果。因此,分类第一部分的结果是partOneRes,依此类推。在partOneRes中标记为正面的任何内容都属于情感’a’。其他部分也是如此处理。

  4. 最后,我希望将所有五个部分的结果结合起来。我会查看partOneRes。任何标记为正面的内容将被更改为情感’a’。我将对所有其他部分进行类似的处理。然后我只需合并结果。

  5. 理想情况下,我不会有重叠或重复的情况。但我确实有少量的重复,这是可以接受的。我可以添加一些逻辑来处理这个问题。

  6. 我将对所有三个分类器执行此操作,最后我想找出哪个分类器给我带来的结果最佳。

我的问题是,我可以看到许多评论我的分类器无法归入任何类别!为什么会这样?这是否因为数据集的规模较小?


回答:

重申一下,问题在于你训练的五个二元模型并非相互排斥的。有几种可能。首先,你对五种情感的分类是否完全准确,或者是否有一些已知的分类错误?

你需要一个既相互排斥又完全覆盖的数据集。你的方法暗示了这一点,但几乎不能保证这一结果。你可以考虑一个集成解决方案,这样可以保证这一点。多类支持向量机就是这样一种方法,但可能不适用于你的情况。

如果类别不是100%准确,你很容易让所有五个分类器拒绝一个特定的观察。这表明你的分类算法需要调整,或者数据本身并不像你希望的那样适合分类。

你还可以检查你是否适当地清理了数据;一些错误可能会严重影响类别边界。

我怀疑发生的情况是小边界效应:每个类别在与其他四个类别的组合进行比较时,“拉近”其边界,留下了最终集合之间的未被认领的区域。

你有办法在训练后检查分类参数吗?如果有,你能可视化选定的五个边界吗?如果你发现病态的间隙,是否有可以调整的训练参数,比如给训练组一个更大的epsilon?

希望这些对你有帮助。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注