吴恩达机器学习—机器学习系统的构建

引例——垃圾邮件分类

我们如何将垃圾邮件和普通邮件分开呢,将垃圾邮件标记为1,普通邮件标记为0。我们首先要做的就是定义一下特征x,有了这些特征,我们就可以通过训练分类器,将垃圾邮件识别出来。那么我们又如何选择邮件的特征向量呢?一种方法是我们可以提出一个可能包含100个单词的列表,比如,如果邮件中包含单词deal,buy,discount他可能就是一份垃圾邮件。首先列出这一百个单词,并按照字母顺序排序,检查这些单词是否在邮件中出现,建立一个特征向量x,当某个单词在邮件中出现时,对应的坐标为1,没有出现,则对应为0,这样就形成了一个向量,向量的维度就是单词的个数。

15572624-3da6412938921a2f.png
邮件分类的特征向量选择
15572624-2ae0a4f258108b08.png
改进垃圾邮件分类器的方法

在进行算法改进的时候,一定要尽力想清楚这些解决办法,然后尽力选择合适的方法,而不是随意的决定使用哪种方法。在后面的内容中我们会介绍一些方法,帮助你更好的在众多方法中做出选择。

误差分析:

15572624-d0b408ac361c3771.png
建议方法

在进行机器学习系统涉及的时候,首先应该从建立一个简单的算法开始,而不是具有很多特征的复杂系统,然后再慢慢改进,这样能防止过早优化。在建立模型之后,画出学习曲线,有效的判断模型是高偏差(欠拟合)还是高方差(过拟合),从而通过调整特征个数,改变数据量,改变正则参数等方法进行改进。误差分析也很重要,以邮件分类为例,在出现误差的时候(交叉验证集),要分析错误分类的邮件的共同特征,将这些特征作为特征变量能有效地提高分类器的表现。如下例:

15572624-457d728d02aac9f1.png
手动误差分析

在进行邮件分类错误时,对于验证集中的数据,我们要进行进一步分析。上例表示在邮件分类的时候,错误分类的数量有100,错误率较高,此时,我们可以从两方面分析:一方面区分邮件的类型,如医药公司的邮件,卖假货的邮件,钓鱼邮件等,通过分类,我们可以看出对于那种类型的邮件,分类器的识别能力较差,然后进一步提取这类邮件的共同特征,提高分类器的表现;另一方面,我们可以区分错误分类邮件具有哪些特征,如故意的错误拼写,异常的额邮件来源,异常的标点符号的使用等,我们可以将这些特征加入到分类器特征变量中,提高算法。

        通常不同的算法,其可能遇到的困难是相似的,通过建立一个简单粗暴的算法,你可以很快的找到算法的不足和难以识别的样本,然后将精力集中在他们身上。

        另一种改进算法的技巧就是保证你对算法有一种数值估计的方法,即在改进算法的时候,有一个数值的指标来评估算法执行的效果。

15572624-3302dddc2dfd8f94.png
算法数值评价

如,对于上例,在进行算法改进的时候,是否应该将几个不同格式的单词认作同一个单词?是否需要区分大小写?对于这些问题,可以通过进行两次对比试验,比较两次实验的验证误差,选择验证误差较小的那一种方法。此时,这个验证误差就是一个数值评价指标

进行算法改进的时候,你通常会尝试很过不同的新想法和新算法,在每次进行是的实验的时候,通过单以规则的数值评价指标可以帮助你快速的判断分类效果是够变高,这能够帮你快速的判断新算法的优劣。这些判断都是在交叉验证集上进行的

不对称性分类的误差评估skewed class :

15572624-64c409c01562ce47.png
一个skewed class的例子

假设假设我们要进行一个肿瘤分类算法,评估肿瘤是恶性的还是良性的,我们发现模型的特使误差是1%,即诊断正确的概率是99%。这看起来似乎是一个不错的模型,但是我们发现,在我们的样本中只有0.5%是恶性肿瘤。就算利用上面蓝色的代码,一个普通的非机器学习的算法,我们的成功率也只有0.5%的误差。这种情况出现在正样例和负样例的比例非常接近一个极端情况下的时候,此时称这种分类问题为偏斜类。这种情况下,靠单一数值指标的评估方法可能不太适用。可以采用以一下的评估指标:

Precision/Recall:查准率或召回率

15572624-a4dfd914622f4070.png
查准率与召回率

查准率值的是,在模型分类为正样例的数据中,真正的正样例占多少,这体现出模型分类的准确度,因此,在数值上,查准率=模型正确识别的正例数量/模型识别出总的正例的数量;

召回率值的是,在实际为为正例的数据中,我们准确判别出来的数量,即有多少正样例真的被我们找出来了,因此,在数值上,召回率=模型正确识别为正例的数量/真正的正例数量;

15572624-787a715107a4d0a0.png
查准率与召回率的权衡

对于癌症预测问题,如果你想只有在可信度非常高的情况下才判定患者确实患有癌症,你可以将概率的阈值提高,如提高到0.7或0.9,只有在概率大于0.9的时候才判定为y=1,此时可能会使查准率提高而召回率降低,因为在这种情况下只有概率大于0.9才会判定为癌症患者,测判定为患者的人当中,真正的患者数肯定很多。同时,由于概率阈值提高,会漏掉一部分真正的癌症患者,因此召回率降低。另一方面,如果你想尽量避免错误的负样例出现,即避免漏掉真正的患者,则要把概率阈值降低,这样只要概率稍高,就会被判定为癌症患者,此时召回率会提高,但是查准率会降低,因为判定为正样例的人中,非患者的数量也会提高。因此,在进行模型评估和选择的时候,要根据需要设定合适的阈值


15572624-14aa7a373a733cb9.png
评估指标的选择

由于存在两个数值指标来判断模型的好坏,那如果将这两个指标结合起来呢,一个自然的想法就是进行平均,但这并不是好的方法,因为可能存在算法三所提到的情况。目前常使用的方法是计算F值,F值越大,说明模型效果越好。

在实际实验中,为了对概率阈值进行调整,我们首先根据不同的阈值计算查准率和召回率,然后计算不同阈值下的F-score,最终选择F值最小的阈值。

猜你喜欢

转载自blog.csdn.net/weixin_34018202/article/details/86971609
今日推荐