吴恩达机器学习 9.机器学习系统设计

一.首先要做什么

今天讨论机器学习系统的设计。将谈及在设计复杂的机器学习系统时,你将遇到的主要问题。同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议
本周以一个垃圾邮件分类器算法为例进行讨论。​
为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量 x x x。我们可以选择一个由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)。例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

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

我们将学习怎样将查准率和召回率作为算法评估度量值的更有效的方式
在这里插入图片描述
帮助选择阀值的方法
F 1 s c o r e ( F s c o r e ) : 2 P R P + R F_1 score(F score): \frac{2PR}{P+R} F1score(Fscore):P+R2PR
越高越好

四.机器学习的数据

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值