首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习、验证和测试分类器

学习、验证和测试分类器
EN

Stack Overflow用户
提问于 2013-07-05 13:44:13
回答 1查看 692关注 0票数 0

我正在为文本分类做情绪分析,我想把推特上的推文分类为3类,积极的、消极的或中立的。我有210个训练数据,我使用朴素贝叶斯作为分类器。我正在实现使用PHP和MySQL作为我的数据库来训练数据。我所做的是按顺序进行的:

  1. 我将基于10倍交叉验证的训练数据分成189个训练数据和21个测试数据。
  2. 我将训练数据插入到数据库中,这样我的分类器就可以根据训练数据进行分类。
  3. 然后使用分类器对测试数据进行分类。我得到了21个预测结果。
  4. 基于 10倍交叉验证重复步骤2和步骤3 10次
  5. 对分类器的精度进行了逐个评价,得到了10个精度结果。然后我取结果的平均值。

我想知道的是:

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-05 17:48:14

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

  • 学习是当您训练该模型时,这意味着您的输出通常是参数,例如回归模型中的系数或神经网络中连接的权重。在您的情况下,输出估计的概率为:给定tweet正P(w|+)的tweet中出现单词w的概率,看到给定负P(w-)的单词w的概率,以及看到给定中性P的单词w(w=**)的概率。此外,在给定的推文中看不到单词的概率是肯定的、消极的、中性的、P(~w|+)等。输入是训练数据,这个过程只是通过测量单词在每个班级中发生(或不发生)的频率来估算概率,即仅仅是计数!
  • 测试中,您可以看到您受过训练的模型在以前从未见过的数据上做得有多好。培训往往产生超出训练数据的输出,即系数或概率被“调优”到训练数据中的噪声,所以你需要看看你的模型对它没有训练过的数据做得有多好。在您的示例中,输入是测试示例,过程是应用Bayes定理,输出是测试示例的分类(您根据哪个概率最高进行分类)。

我遇到了cross-validation --除了测试--在一些情况下,您不知道使用什么模型(或者有额外的、“外在的”参数来估计在培训阶段无法完成的参数)。将数据分成3组。

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

在朴素Bayes的情况下,使用交叉验证集探索不同的先验概率,即P(+)、P(-)、P(*),然后使用测试集来查看使用交叉验证选择的先验和使用训练数据估计的条件概率的效果。

作为计算条件概率的一个例子,考虑4条被人类归类为"+“或"-”的tweet。

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

所以对于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中输入的计算的数学)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17490361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档