本文共 3005 字,大约阅读时间需要 10 分钟。
3- 分类-分析情感
讨论分类,普遍研究。
餐厅点评
今天是个好日子,我想要在一家日本餐厅预定一个座位
从评价到主题情感。
将餐厅的所有评价拆分成句子。
核心构造分类模块。
把所有的评价分解成句子 -> 选择包含"sushi"的句子(我关心的)
-> 句子情感分类器 -> 平均预测(整个餐馆的评价) 以及 最正面的评价。该分类器获取输入值x。放进我们的分类模型,输出我们的y(预测的类)
输入x(网页),输出y
输入x:邮件内容文本,发送者,ip。 输出y 非垃圾和垃圾邮件。
输入x: 图像像素. 输出y: 预测对象(这是一条什么样的狗)
卡耐基梅隆大学的教授 实现了一种令人惊异的新技术。
通过frmi的技术获得你大脑的影像,扫描你的大脑。预估你正在阅读的文字。
最简单的阈值分类器:统计句子中正面/负面的词语个数。看正面和负面的谁多,情感就是谁。
正面单词两个大于负面单词所以是正向情感。
我们如何得到正面 / 负面词语的列表。
词语的情感程度不同:
单独的单词是不够的:
1.2 问题我们可以通过学习分类器解决。 3问题我们可以通过更多的特征解决。
输入: x
对于句子进行评分。评分大于0时正向情感,小于0时负面情感。
这叫做线性分类器,这是因为输出是输入的加权和
理解决策边界,我们假设只有两个非零权重的词语。
可以通过这两个词语&权重 计算出句子的分数。
横轴为awesome数量,纵轴为awful数量。每一个点代表一条句子。
上图可以看到评分大于0小于0的点被一条线分割开。
在线上的点我们无法决定它是正类还是负类。这条线的方程就是score函数等于0的这条线线性决策边界,将正类与负类分开。
非零权重越多,则决策边界的维数越高,会从直线到平面,直到更复杂空间。
训练分类器 = 学习权重
训练集训练学习分类器,学习每一个词语的权重。
通过这些词语权重给测试集的句子进行打分。用来评估分类效果。
将不带最后输出结果的测试样本交给分类器,使其预测出他得到的结果。
然后与测试样本原本真实的分类进行对比。将测试集中的每一个数据都这么来一遍,统计出错误个数与正确个数。
误差测试了错误的比率 。
误差率是分类器分类错误的数量 / 测试集样本数量。
通常,测量精度是正确率:
分类器是否优于随机猜测。
对于二元分类:
我们构建的分类器的目标就是高于50%
对于k类分类,精度是1/k
在最差的情况下,分类器至少要比随机猜测好,否则分类器就没有意义。
但是实际上看起来分类的不错是否是有意义的。
90%精度的分类器足够好吗?这取决于具体的问题
多数预测,多数类预测。比如将每一封邮件都看成是垃圾邮件。
那么我的精度高达90%。在这类别不平衡的情况下有很好的性能。所以在实践中我们一定要对报告出的精度问题进行深度研究。
最重要的是:我的应用需要多少精度。
- 对于用户体验,它足够好么? - 如果分类错误,会有什么影响。False positive, false negative 和混淆矩阵
错误的种类:
真实标签与预测标签之间的关系。
排列组合我们会出现两种正确情况,和两种错误情况。
False negative, 这封信实际是个垃圾邮件negative,但是被我们归类进了邮件列表(归类错误 False)。 - 气愤 | 疾病没有被医治
False positive, 这封信实际是个正常邮件positive, 但是被我们归类进了垃圾箱(归类错误 False)。 - 邮件丢失 | 医疗浪费
如上图是我们假设有100个测试样本最终得出的混淆矩阵。
我们的分类正确率 (50+35)/100
顺着对角线我们可以看到我们预测对了60个健康人,12个感冒人,8个流感人。
精度 为 0.8
对于健康的人我们预测错了10个。我们更容易把健康的人和普通感冒的人搞混,不容易和流感搞混。
模型需要多少数据?
理论结果通常对于需要的数据定义一个界限。
- 对于实际应用来说,这个界限通常太松了。- 但是可以作为一个指导。
在实践中:
- 越复杂的模型需要更多的数据 - 经验分析可以作为指导。学习曲线将我们数据的多少与我们的误差率(测试集)联系到了一起。
训练数据越多那么我们的测试误差将会越低。
模型偏差。不可能变为0.
一般情况下: 越复杂的模型偏差越小。
更小的偏差 -> 会更准确,但是需要更多的数据学习。
单词对模型仍然存在偏差,但是会比单词模型偏差小。
到现在,我们已经输出了预测 (正负情感)
但是对于我们的预测,有多少确信度?
分类器常常不止给出结果是正是负,还要给出对于这个结果的信息有多大。
比如第一个句子正面评价的程度要高于第二个句子。
很多分类器提供了置信等级
输入句子x输出这个句子为正为负的概率。
如上图给定句子1为正的概率为0.99 | 给定句子2为正的概率为0.55
输入x单词计数,w单词的权重。计算出y冒。我们的输出结果。正面情绪大于0.负面情绪小于0。评估预测结果,并让模型根据评估结果进行参数的修正。
分类准确率的提高。循环不断的更新权重。
我们学到了:
见ipython notebook 构建商品评价情感分类器
转载地址:http://qidgo.baihongyu.com/