目录
1 确定执行的优先级
我们仍旧以之前垃圾邮件分类为例子进行分析,垃圾邮件分类问题是一个监督学习的例子,为了解决这个问题,我们首先要解决的问题是,如何确定问题的特征,如何表示邮件的特征向量x,因为只有通过特征向量和标签我们才能训练一个分类器。
我们可以选择一个包含一百个单词的向量,要注意的是这里的向量只表示某个单词的存在与否,却不表示出现次数。然后我们要做的事就是优化我们的分类器,换而言之,如何使其拥有高精确度和低错误率?
首先我们可以通过收集大量数据来使算法更精确,另外还可以通过使用更复杂的特征变量,更加关注邮件正文部分的内容,来构建更为复杂的特征,通过设计更复杂的算法,检测单词中故意出现的拼写错误。
2 误差分析
纵然我们提出了很多看起来很有效的方法,但是我们无法得知对于具体的问题哪个是有效的,为了解决这个问题,产生了误差分析方法。
1,从一个简单快速的算法开始,先实现这个算法并用交叉验证集测试它。
2,绘制学习曲线,以决定是增加更多数据,还是添加更多的滕峥。
3,最后人工分析误差,判断这些误差大多集中在什么地方。
还是以垃圾邮件分类问题为例,首先我们要对错位分类的邮件进行分析,分类。这样可以发现是什么原因导致的错误。然后思考有什么特征能够保证算法做到正确分类。
通常情况下当我们判断那个模型更好时,我们会采用交叉验证集误差而非测试集。
3 不对称性分类的误差评估
我们来假设这样一个极端场景,一个训练集内有100个样本,95个是负向类,5个是正向类,这时如果一个算法直接返回0,这时它的准确率会达到95%,甚至高于我们使用机器学习算法时,这种情况我们称之为偏斜类,即一个类中的样本数与另一个类的数据相比多很多,通过总是预测y=0或y=1算法可能表现非常好。
这种情况下使用分类误差或者分类精确度会造成一些问题,为了避免这种问题,我们提出了一种新的评估方法,我们称这种度量值为查准率和召回率。
4 精确率和召回率的权衡
我们之前提到过一个判断癌症的机器学习例子,很明显我们希望在非常确信的情况下,才会判断一位患者得了癌症,另外我们同样希望避免遗漏有癌症的人,这种情况下我们就需要权衡查准率和召回率。我们提出了一种评估度量值,通过计算告诉我们哪种算法在查准率和召回率权衡方面具有更高的优越性:
我们使用F1值,也就是两者的调和平均值来判断,与算术平均值的优越之处在于,调和平均值可以惩罚极端情况。
5 机器学习数据
通过不同算法不同数据量下的表现可以得到这样一个结论,获得足够多的数据量是很重要的,换而言之特征x具有足够的信息来预测,同时使用一种需要大量参数的学习算法,同样可以使训练误差接近测试误差。