0

我正在从事文本分类的情感分析,我想将 Twitter 中的推文分类为 3 个类别,正面、负面或中性。我有 210 个训练数据,我使用Naive Bayes 作为分类器。我正在使用 PHP 和 MySQL 作为训练数据的数据库来实现。我所做的是按顺序:

  1. 我将基于10 倍交叉验证的训练数据拆分为 189 个训练数据和 21 个测试数据。
  2. 我将我的训练数据插入数据库,所以我的分类器可以根据训练数据进行分类
  3. 然后我使用我的分类器对我的测试数据进行分类。我得到了 21 个预测结果。
  4. 基于10 折交叉验证重复步骤 2 和 3 10 次
  5. 我对分类器的准确率一一评估,所以得到了10个准确率结果。然后我取结果的平均值。

我想知道的是:

  1. 学习过程是什么?什么是输入、过程和输出?
  2. 验证过程是什么?什么是输入、过程和输出?
  3. 测试流程是什么?什么是输入、过程和输出?

我只是想确保我对这 3 个过程(学习、验证和测试)的理解是正确的。

4

1 回答 1

1

在您的示例中,我认为验证和测试之间没有有意义的区别。

  • 学习是在您训练模型时,这意味着您的输出通常是参数,例如回归模型中的系数或神经网络中连接的权重。在您的情况下,输出是给定推文正 P(w|+)、看到给定负 P(w|-) 和给定中性 P 的推文中看到单词 w 的概率的估计概率(w|*)。此外,在给定正面、负面、中性、P(~w|+) 等的情况下,在推文中看不到单词的概率。输入是训练数据,该过程只是通过测量单词出现的频率来估计概率(或不要发生)在您的每个课程中,即只是计数!

  • 在测试中,您可以看到经过训练的模型在您以前从未见过的数据上的表现如何。训练倾向于产生过度拟合训练数据的输出,即系数或概率被“调整”到训练数据中的噪声,所以你需要看看你的模型在它没有训练过的数据上的表现如何。在您的情况下,输入是测试示例,过程应用贝叶斯定理,输出是测试示例的分类(您根据概率最高进行分类)。

我遇到了交叉验证——除了测试——在你不知道要使用什么模型的情况下(或者有额外的“外部”参数来估计在训练中无法完成的情况阶段)。您将数据分成 3 组。

因此,例如,在线性回归中,您可能想要拟合直线模型,即估计pcin y = px + c,或者您可能想要拟合二次模型,即估计pcqin y = px + qx^2 + c。您在这里所做的是将您的数据分成三份。您使用数据的第 1 部分(训练示例)训练直线和二次模型。然后,您可以通过使用数据的第 2 部分(交叉验证示例)来查看哪个模型更好。最后,一旦您选择了模型,您就可以使用数据的第 3 部分(测试集)来确定您的模型有多好。回归是一个很好的例子,因为二次模型总是比直线模型更适合训练数据,所以不能只看训练数据上的错误来决定做什么。

在朴素贝叶斯的情况下,使用交叉验证集探索不同的先验概率可能是有意义的,即 P(+)、P(-)、P(*),然后使用测试集来查看效果如何您已经完成了使用交叉验证选择的先验和使用训练数据估计的条件概率。


作为如何计算条件概率的示例,考虑 4 条推文,这些推文已被人类分类为“+”或“-”

  • T1,-,包含“仇恨”、“愤怒”
  • T2, +, 包含“不要”、“讨厌”
  • T3,+,包含“爱”、“朋友”
  • T4,-,包含“愤怒”

因此,对于 P(hate|-),您将仇恨出现在负面推文中的次数加起来。它出现在 T1 而不是 T4,所以 P(hate|-) = 1/2。对于 P(~hate|-),你做相反的事情,仇恨不会出现在 2 条负面推文中的 1 条中,所以 P(~hate|-) = 1/2。

类似的计算得出 P(anger|-) = 1,P(love|+) = 1/2。

美中不足的是,任何为 0 的概率都会在计算阶段搞砸,所以你不使用零概率,而是使用非常低的数字,比如 1/n 或 1/n^2,其中 n 是训练示例的数量。所以你可以把 P(~anger|-) = 1/4 或 1/16。

(我在这个答案中的计算数学)。

于 2013-07-05T17:48:14.987 回答