我正在为文本分类做情绪分析,我想把推特上的推文分类为3类,积极的、消极的或中立的。我有210个训练数据,我使用朴素贝叶斯作为分类器。我正在实现使用PHP和MySQL作为我的数据库来训练数据。我所做的是按顺序进行的:
我想知道的是:
我只想确保我对这三个过程(学习、验证和测试)的理解是正确的。
发布于 2013-07-05 17:48:14
在您的示例中,我认为验证和测试之间没有有意义的区别。
我遇到了cross-validation --除了测试--在一些情况下,您不知道使用什么模型(或者有额外的、“外在的”参数来估计在培训阶段无法完成的参数)。将数据分成3组。
因此,例如,在线性回归中,您可能想要拟合一个直线模型,即估计p和c在y = px + c中,或者您可能想要拟合一个二次模型,即在y = px + qx^2 + c中估计p、c和q。你在这里所做的就是把你的数据分成三个。使用数据的第1部分(训练示例)训练直线和二次模型。然后,通过使用数据的第2部分(交叉验证示例),您可以看到哪个模型更好。最后,一旦选择了模型,就可以使用数据的第3部分(测试集)来确定模型有多好。回归是一个很好的例子,因为二次模型总是比直线模型更适合训练数据,所以不能只看训练数据上的误差来决定该做什么。
在朴素Bayes的情况下,使用交叉验证集探索不同的先验概率,即P(+)、P(-)、P(*),然后使用测试集来查看使用交叉验证选择的先验和使用训练数据估计的条件概率的效果。
作为计算条件概率的一个例子,考虑4条被人类归类为"+“或"-”的tweet。
所以对于P(恨),你把仇恨出现在负面推文中的次数加起来。它出现在T1中,而不是在T4中,所以P(恨)= 1/2。对于P(~恨),相反,仇恨不会出现在2条负面推文中的1/2中,所以P(~恨)=1/2。
类似的计算结果是:P(Anger)= 1,P(love|+) = 1/2。
实际情况是,任何概率,即0,都会在计算阶段把事情搞砸,所以你不用使用零概率,而是使用一个非常低的数字,比如1/n或1/n^2,其中n是训练示例的数目。所以,你可以把P(~)= 1/4或1/16。
(我在answer中输入的计算的数学)。
https://stackoverflow.com/questions/17490361
复制相似问题