[深度之眼机器学习训练营第四期]机器学习系统设计

工作流程

这节课以垃圾邮件分类为例,介绍了机器学习系统的整个设计和实现流程。给定电子邮件数据集,我们可以为每个邮件构造一个向量。每个向量包含10000到50000个元素,每个元素代表一个单词,这些元素都是数据集中出现频率最高的单词。如果在电子邮件中找到一个单词,则将箱梁中相应的元素设为1,否则设为0。一旦我们准备好所有的向量,就可以进行模型训练,然后使用它来判断电子邮件是否为垃圾邮件。

为了提高分类准确率,一般有以下方法:

  • 收集大量数据
  • 设计复杂的特征
  • 使用不同的算法处理数据

错误分析

面对一个机器学习问题,推荐的处理流程是:

  • 实现一个简单的机器学习算法,并在验证集上进行测试
  • 画出学习曲线,观察增大数据量、添加特征等操作是否可以提升模型在验证集上的性能
  • 检查验证集中预测错误的实例,并尝试找出导致大多数错误的原因

处理非均衡分布的数据集

对于很多现实中的问题,样本标签的分布可能是不均衡的。以癌症预测为例,患癌症的人可能占数据集中的1%,不患癌症的人可能有99%。如果我们的分类器将所有的人都预测为不患癌症,那么这个分类器的准确率就是99%,但是这显然不是一个好的分类器。为了处理这种不均衡分类问题,我们引入如下所示的混淆矩阵:

Confusion Matrix Actual Values
1 0
Predict Values 1 True Positive False Positive
0 False Negative True Negative

混淆矩阵中,True Positive表示真正例,也就是实际为正例且被算法预测为正例的样本;True Negative表示真负例,即实际为负例且被算法预测为负例的样本;False Positive表示假正例,即实际为负例而被算法预测为正例的样本;False Negative表示假正例,即实际为正例而被算法预测为负例的样本。
有了混淆矩阵,我们就可以计算模型的精度(Precision)和召回率(Recall)了:
\[\text{Precision} = \frac{\text{True Positive}}{\text{# Predict Positive}} = \frac{\text{True Positive}}{\text{True Positive}+\text{False Positive}}\]

\[\text{Recall} = \frac{\text{True Positive}}{\text{# Actual Positive}} = \frac{\text{True Positive}}{\text{True Positive}+\text{False Negative}}\]
有了精度和召回率,我们就可以比较好地评价模型的性能了。回想一下癌症分类的例子,尽管将所有样本预测为不患癌症可以获得很高的精度,但是模型的召回率为0。一般而言,一个好的模型,它的精度和召回率都很高。因此,我们可以将精度和召回率合在一起考虑:
\[\text{F}_1\text{ Score} =2\times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}\]

最后,根据混淆矩阵给出准确率的计算方法:

\[ \text{Accuracy} = \frac{\text{True Positive} + \text{True Negative}}{\text{# Total Examples}} = \frac{\text{True Positive} + \text{True Positive}}{\text{True Positive}+\text{False Positive}+\text{False Negative}+\text{True Neagtive}} \]

猜你喜欢

转载自www.cnblogs.com/littleorange/p/12296322.html