Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

版权声明:本文为博主原创文章,转载请指明转载地址

http://www.cnblogs.com/fydeblog/p/7392408.html

前言

这篇博客主要记录了Andrew Ng课程第6章机器学习系统的设计,Andrew用他的丰富经验讲述了如何有效、耗时少地实现一个机器学习系统,内容包括误差分析,误差度量,查准率和查全率等等

I 首先要做什么

以一个垃圾邮件分类器算法为例,为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量x。 我们可以选择一个由100个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量( 出现为1, 不出现为0),尺寸为100×1。

为了构建这个分类器算法,我们可以做很多事,例如:

1. 收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本 2. 基于邮件的路由信息开发一系列复杂的特征 3. 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理 4. 为探测刻意的拼写错误( 把watch 写成w4tch) 开发复杂的算法 

上面的选项,我们是要每一项去试吗?当然不,这样太花费时间和精力了。Andrew在下面几节向我们介绍了一个系统性的方法,来帮助我们选择一堆方法中最合适的那一个。

II 误差分析

最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量;而是构建一个简单的算法,这样你可以很快地实现它。

一旦做完,你可以画出学习曲线,通过画出学习曲线(第5章提过怎么画),以及检验误差,来找出你的算法是否有高偏差和高方差的问题,或者别的问题,在这样分析之后,再来决定用更多的数据训练,或者加入更多的特征变量是否有用。

原因是刚入机器学习,你并不能提前知道你是否需要复杂的特征变量,或者你是否需要更多的数据,还是别的什么。提前知道你应该做什么,是非常难的,因为你缺少证据,缺少学习曲线。我们必须用证据来领导我们的决策,怎样分配自己的时间来优化算法,而不是仅仅凭直觉,凭直觉得出的东西一般总是错误的。

除了画学习曲线外,还有就是进行误差分析,误差分析的意思是说:当我们在构造垃圾邮件分类器时,看一看交叉验证数据集,然后看一看哪些邮件被算法错误地分类。因此,通过这些被算法错误分类的垃圾邮件与非垃圾邮件,你可以发现某些系统性的规律:什么类型的邮件总是被错误分类。经常地这样做之后,这个过程能启发你构造新的特征变量,或者告诉你:现在这个系统的短处,然后启发你如何去提高它。

构建一个学习算法的推荐方法为: 1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法 2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择 3. 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势

III 类偏斜的误差度量

上面提到了误差分析,以及设定误差度量值的重要性,用一个合适的误差度量值,这有时会对于你的学习算法造成非常微妙的影响,这件重要的事情就是偏斜类(skewed classes)的问题。类偏斜情况表现为我们的训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例。

例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有0.5%。然而我们通过训练而得到的神经网络算法却有1%的误差。这时,误差的大小是不能视为评判算法效果的依据的。

两种度量:查准率(Precision)和查全率(Recall)

查准率(Precision)和查全率(Recall)我们将算法预测的结果分成四种情况: 1. 正确肯定(True Positive  , TP):预测为真,实际为真 2. 正确否定(True Negative , TN):预测为假,实际为假 3. 错误肯定(False Positive, FP):预测为真,实际为假 4. 错误否定(False Negative,FN):预测为假,实际为真

查准率=TP/(TP+FP)  例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。 查全率=TP/(TP+FN)  例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

这样,对于我们刚才那个总是预测病人肿瘤为良性的算法,其查全率是0。

IV 查全率和查准率之间的权衡

继续沿用刚才预测肿瘤性质的例子。假使,我们的算法输出的结果在 0-1 之间,我们使用阀值0.5来预测真和假。

如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),即我们希望更高的查准率,我们可以使用比0.5 更大的阀值,如0.7,0.9。这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。

如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比0.5 更小的阀值,如0.3

一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

我们可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同

一个帮助我们选阈值的方法是计算F1值

其中P是查准率,R是查全率

V 机器学习的数据

这一讲主要讲数据的数目对学习算法的影响

如果训练集比参数的数量还大,甚至是更多,那么这些算法就不太可能会过度拟合。也就是说训练误差有希望接近测试误差。最终可以得到一个低误差和低方差的学习算法。无论你之前是选择哪一种算法,数据量很大时,都趋近相同

"取得成功的人不是拥有最好算法的人,而是拥有最多数据的人"是有道理的

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏目标检测和深度学习

ICLR 2018最佳论文重磅出炉!Adam新算法、球形CNN等受关注

新智元报道 作者:小潘 【新智元导读】今天,ICLR官网公布了ICLR 2018的最佳论文,一共三篇。这些论文在被ICLR接收之后持续得到讨论,包括提出...

40280
来自专栏AI科技大本营的专栏

AI 技术讲座精选:OpenAI 最新成果——利用对抗样本攻击机器学习

对抗样本是指攻击者故意设计以导致机器学习模型出错的输入样本;他们对机器来说就像是视觉幻觉一样。在本篇博文中,我们将向您展示对抗样本在不同介质中的运作原理,也将讨...

375100
来自专栏新智元

ICLR 2018最佳论文重磅出炉!Adam新算法、球形CNN等受关注

---- 新智元报道 作者:小潘 【新智元导读】今天,ICLR官网公布了ICLR 2018的最佳论文,一共三篇。这些论文在被ICLR接收之后持续得到讨论...

37870
来自专栏人工智能

对深度学习的降维攻击—人工智能系统数据流中的安全风险

深度学习在很多领域受到广泛关注。尤其在图形图像领域里,人脸识别和自动驾驶等应用正在逐渐进入我们的生活。深度学习的流行与普及也自然带来了安全方面的考虑。目前对深度...

435100
来自专栏AI研习社

产生和防御对抗样本的新方法 | 分享总结

对抗样本是一类被恶意设计来攻击机器学习模型的样本。它们与真实样本的区别几乎无法用肉眼分辨,但是却会导致模型进行错误的判断。本文就来大家普及一下对抗样本的基础知识...

51580
来自专栏AI科技评论

CVPR 2018 中国论文分享会之 「GAN 与合成」

AI 科技评论按:2018 年 5 月 11 日,由微软亚洲研究院、清华大学媒体与网络技术教育部-微软重点实验室、商汤科技、中国计算机学会计算机视觉专委会、中...

17520
来自专栏大数据文摘

用100元的支票骗到100万:看看对抗性攻击是怎么为非作歹的

18530
来自专栏AI科技评论

机器视觉的阿基里斯之踵,秘密都在谷歌Brain论文中

“从一些方面看,机器视觉比人类视觉更好。但是现在研究人员找到了一类能够轻松‘愚弄’机器视觉的‘对抗性图像’。“——来自arXiv的Emerging Techno...

32260
来自专栏AI科技评论

京东 AI Fashion-Challenge 挑战赛冠军方案详解(风格识别+时尚单品搜索)

AI 科技评论按:随着消费升级时代的来临,中国时尚消费市场正渐渐变得更加个性化、精致化和多样化,服饰的时尚风格对消费动机的影响愈渐加深,而随着 AI 技术的发展...

12620
来自专栏人工智能头条

神经网络太好骗?清华团队如何做到打NIPS攻防赛得3冠军的

今天带来的文章,由同济大学研究生张子豪投稿。介绍了人工智能与信息安全的交叉前沿研究领域:深度学习攻防对抗。

21710

扫码关注云+社区

领取腾讯云代金券