一.首先要做什么

今天讨论机器学习系统的设计。将谈及在设计复杂的机器学习系统时,你将遇到的主要问题。同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议
本周以一个垃圾邮件分类器算法为例进行讨论。​
为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量xxx。我们可以选择一个由100个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量(出现为1,不出现为0),尺寸为100×1。

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

在上面这些选项中,非常难决定应该在哪一项上花费时间和精力,作出明智的选择,比随着感觉走要更好。我们将在随后的课程中讲误差分析,以及怎样用一个更加系统性的方法,从一堆不同的方法中,选取合适的那一个。
1.误差分析
如果你准备研究机器学习的东西,或者构造机器学习应用程序,基本工作流程步骤如下

构建一个学习算法的推荐方法为:​

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

以我们的垃圾邮件过滤器为例
误差分析要做的既是检验交叉验证集中我们的算法产生错误预测的所有邮件,看:是否能将这些邮件按照类分组。例如医药品垃圾邮件,仿冒品垃圾邮件或者密码窃取邮件等。然后看分类器对哪一组邮件的预测误差最大,并着手优化
怎样改进分类器?
例如,发现是否缺少某些特征,记下这些特征出现的次数。
例如记录下错误拼写出现了多少次,异常的邮件路由情况出现了多少次等等,然后从出现次数最多的情况开始着手优化。

误差分析并不总能帮助我们判断应该采取怎样的行动。有时我们需要尝试不同的模型,然后进行比较,在模型比较时,用数值来判断哪一个模型更好更有效,通常我们是看交叉验证集的误差

例如:
在我们的垃圾邮件分类器例子中,对于“我们是否应该将discount/discounts/discounted/discounting处理成同一个词?”如果这样做可以改善我们算法,我们会采用一些截词软件

误差分析不能帮助我们做出这类判断,我们只能尝试采用和不采用截词软件这两种不同方案,然后根据交叉验证集检验的结果所得到的错误率数值来判断哪一种更好。

二.不对称性分类的误差评估( 类偏斜的误差度量)

在进行误差分析时,设定误差度量值就是设定某个实数来评估你的学习算法,并衡量它的表现,有了算法的评估和误差度量值。有一件重要的事情要注意,就是使用一个合适的误差度量值,这里我们要注意偏斜类(skewed classes)的问题
举例:
我们用算法来预测癌症是否是恶性的,在我们的训练集中,只有0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有0.5%。然而我们通过训练而得到的神经网络算法却有1%的误差。这时,误差的大小是不能视为评判算法效果的依据的

查准率Precision)和查全率Recall
我们将算法预测的结果分成四种情况
1.正确肯定True Positive,TP):预测为真,实际为真​
2.正确否定True Negative,TN):预测为假,实际为假
​3.错误肯定False Positive,FP):预测为真,实际为假​
4.错误否定False Negative,FN):预测为假,实际为真​
则:查准率=TP/(TP+FP)。例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。​
查全率=TP/(TP+FN)。例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

三.查准率和查全率之间的权衡

我们将学习怎样将查准率和召回率作为算法评估度量值的更有效的方式

帮助选择阀值的方法
F1score(Fscore):2PRP+RF_1 score(F score): \frac{2PR}{P+R}F1​score(Fscore):P+R2PR​
越高越好

四.机器学习的数据

在这里我们讨论机器学习系统设计中重要的一个方面,即用来训练的数据多少,在之前,曾说不要盲目地开始,而是花大量的时间来收集大量的数据,因为数据有时是唯一能实际起到作用的。但事实证明,在一定条件下,得到大量的数据并在某种类型的学习算法中进行训练,可以是一种有效的方法来获得一个具有良好性能的学习算法。而这种情况往往出现在这些条件对于你的问题都成立。

大量数据有帮助的情况:
假设特征值有足够的信息来预测yyy值,假设我们使用一种需要大量参数的学习算法
【1】它们有很多参数,因而可以拟合非常复杂的函数,我们将把这些算法想象成低偏差算法
【2】当我们使用了很大很大的训练集,尽管参数很多,但是训练集比参数的数量还大,甚至是更多,那么这些算法就不太可能会过度拟合。

吴恩达机器学习 9.机器学习系统设计相关推荐

  1. 马斯克称自己不喜欢做CEO,更想做技术和设计;吴恩达的《机器学习》课程即将关闭注册|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  2. 马斯克称自己不喜欢做CEO,更想做技术和设计;吴恩达的《机器学习》课程即将关闭注册|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  3. 3-2 Coursera吴恩达《构建机器学习项目》 第二周课程笔记-机器学习策略(2)

    上节课3-1 Coursera吴恩达<构建机器学习项目> 第一周课程笔记-机器学习策略(1)我们主要介绍了一些优化机器学习的策略和方法,包括正交化.评估指标.数据集的划分.贝叶斯错误率和可 ...

  4. 有人把吴恩达老师的机器学习和深度学习做成了中文版

    近年来 AI 越来越火,吴恩达是被公认的人工智能(AI)和机器学习领域国际最权威的学者,他一直致力于普及.宣传.推广 AI 教育,包括最前沿.最火爆的 AI 基础课程.深度学习课程等等.惠及全球超过 ...

  5. 第06周:吴恩达 Andrew Ng 机器学习

    10 应用机器学习的建议 10.1 决定下一步做什么 依旧用房价预测的例子,假设我们使用已经正则化的线性回归的模型得到了参数,并将参数带入预测函数来预测一组新的房价,但是结果误差很大,那么为了解决问题 ...

  6. 吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)

    AI有道 不可错过的AI技术公众号 关注 重要通知 本公众号原名"红色石头的机器学习之路"已经改名为"AI有道",请大家留意并继续关注本公众号!谢谢! 1 Wh ...

  7. 吴恩达老师的机器学习和深度学习课程笔记打印版

    注意:下载笔记.视频.代码:请点击"阅读原文" 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在github上,下载后可以打印. 公布了深度学习笔记的word和ma ...

  8. [资源分享] 吴恩达最新《机器学习训练秘籍》中文版可以免费下载了

    本文大约 600 字, 阅读大约需要 2 分钟 吴恩达老师在上个月底宣布终于完成了他最新的书籍<Machine Learning Yearning>的最后几个章节: 而最近这本书也有了免费 ...

  9. 吴恩达斯坦福大学机器学习 CS229 课程学习笔记(一)

    说到机器学习总绕不过几个鼎鼎大名的人物,他们都创造了不少的机器学习资料,斯坦福吴恩达Andrew Ng的公开课CS229:Google李飞飞的CS231.周志华的.李航的<统计学习方法>. ...

  10. 吴恩达ML WEEK7 机器学习

    吴恩达机器学习 第七周 0 总结 1 应用机器学习的建议 1.1 决定下一步做什么 1.2 评估一个假设 1.3 模型选择和交叉验证集 1.4 诊断偏差(bais)和方差(variance) 1.5 ...

最新文章

  1. 年度最理性 AI 分析文章:预测 AI 未来,大部分人陷入了 7 大误区
  2. 第四课 CSS核心知识点
  3. 成功解决pyinstaller打包scipy是报模块dll缺失和failed to import any qt binding的问题
  4. Nginx 反向代理、动静分离、负载均衡及配置实例
  5. 句柄操作窗体_winform让窗体一直显示在桌面上以及FindWindow
  6. Node.js 框架设计及企业 Node.js 基础建设相关讨论
  7. 计算机巧用剪纸做画册教案,大班绘画剪纸制作的教案总结
  8. 《论可计算数及其在判定上的应用》简单理解
  9. sql server经典sql
  10. HDU2034 人见人爱A-B【水题】
  11. hibernate 的session一级缓存
  12. Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个submit
  13. Arduino 开发 — Arduino 函数库
  14. ftp 报错 227 Entering Passive Mode (192,168,169,141,213,232)
  15. 计算机怎么发音乐,有哪些方法可以把歌曲发送到远方的朋友的手机上?
  16. 机器学习实战—逻辑回归—信用卡欺诈检测
  17. 使用 AutoHotKey 配合Win10分屏功能
  18. JavaScript知识点复习总结
  19. 4、OOA 面向对象分析
  20. php mssql 字符串截断,SQLServer 自动截断字符串

热门文章

  1. uiautomatorviewer 查看元素新思路
  2. 模式三工厂——开花结果
  3. WinForm------TreeList修改节点图标和按钮样式
  4. Silverlight 4.0 Accordion 解决ScrollViewer 的问题
  5. 15.3D效果,盒阴影和滤镜
  6. centos6.5远程桌面连接(VNC\SPice)
  7. Asp.Net高级知识回顾_HttpModule及应用程序生命周期_1
  8. 20155307 2016-2017-2 《Java程序设计》第4周学习总结
  9. (IOS)Swift Music 程序分析
  10. linux中字体的安装以及Terminal字体重叠问题解决