Andrew Ng带我漫步机器学习 - 第六周 机器学习应用指南

数据集处理

问题描述

面对途中问题,随机尝试列举的解决方案并不合适,我们需要一套高效的评估方案来寻找到关键问题所在,对症下药,解决问题

训练集与测试集

评估机器学习算法的首要且必要步骤步骤就是将数据分割为训练集(training set)和测试集(test set)

  1. 7:3(不一定)分割输入集为训练集和测试集
  2. 对训练集,运行梯度下降,获得代价函数收敛到全局最小值的 θ \theta θ
  3. 对测试集,计算代价函数,其值即为测试集误差
  4. 对于分类问题(比如逻辑回归)我们还需要对测试集误差进行分类误差分析,如下图
    逻辑回归
    根据以上步骤获得的线性回归问题的代价函数值/分类问题(逻辑回归)的分类误差值即为我们的评估标准

多项式与交叉验证集

训练集可以帮我们寻找合适的 θ \theta θ,那么对于多项式假设方程,如何寻找合适的多项式次幂呢

  1. 6:2:2(不一定)分割训练集,交叉验证集和验证集
  2. 使用训练集,计算所有多项式次幂d的 θ \theta θ
  3. 使用交叉验证集,获得不同d对应的代价函数值,取最低值为多项式假设方程的次幂
  4. 使用验证集,计算d次幂假设方程的评估分数(即代价函数值)

虽然说一般而言升高d,误差会下降,但是为了避免过拟合,使用交叉验证集可以获得合适的d

方差与偏置

多项式

不考虑正则化参数影响的情况下,多项式次幂d是影响高方差和高偏置的主要因素
方差与偏置

高偏置(d小):

  • 欠拟合
  • J t r a i n ( Θ ) J_{train}(\Theta) Jtrain(Θ)大, J C V ( Θ ) J_{CV}(\Theta) JCV(Θ)大, J t r a i n ( Θ ) ≈ J C V ( Θ ) J_{train}(\Theta) \approx J_{CV}(\Theta) Jtrain(Θ)JCV(Θ)

高方差(d大):

  • 过拟合
  • J t r a i n ( Θ ) J_{train}(\Theta) Jtrain(Θ)低, J C V ( Θ ) J_{CV}(\Theta) JCV(Θ)远大于 J t r a i n ( Θ ) J_{train}(\Theta) Jtrain(Θ)

正则化

引入正则化后,正则化参数lambda也成为了影响方差与偏置的重要因素
正则化
寻找合适的正则化参数 λ \lambda λ需要以下几步:

  1. 设置参数集(不唯一):λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24})
  2. 注意模型中还有其他的参数集,如d
  3. 遍历所有 λ \lambda λ,对每个lambda计算出所有模型的 Θ \Theta Θ
  4. 在不进行正则化的情况下,计算出所有 θ \theta θ交叉验证集得到的误差(线性或分类)
  5. 选择误差 J C V ( Θ ) J_{CV}(\Theta) JCV(Θ)最小的那一组参数模型,带入验证集,此时你是否满意你的参数?

学习曲线

训练集的训练样本数量重要吗?当然!随着训练样本数量的增加,测试集和训练集误差会有不同的曲线,但是都会逐渐趋于平稳,为什么它们的变化趋势不同?

高偏置:
高偏置

  • 样本数量小: J t r a i n ( Θ ) J_{train}(\Theta) Jtrain(Θ)低, J C V ( Θ ) J_{CV}(\Theta) JCV(Θ)
  • 样本数量大: J t r a i n ( Θ ) ≈ J C V ( Θ ) J_{train}(\Theta) \approx J_{CV}(\Theta) Jtrain(Θ)JCV(Θ),且都高
  • 如果模型高偏置,那么增加样本数量没有太多帮助

高方差:
高方差

  • 样本数量小: J t r a i n ( Θ ) J_{train}(\Theta) Jtrain(Θ)低, J C V ( Θ ) J_{CV}(\Theta) JCV(Θ)
  • 样本数量大: J t r a i n ( Θ ) < J C V ( Θ ) J_{train}(\Theta) < J_{CV}(\Theta) Jtrain(Θ)<JCV(Θ) J t r a i n ( Θ ) J_{train}(\Theta) Jtrain(Θ)逐渐增加, J C V ( Θ ) J_{CV}(\Theta) JCV(Θ)逐渐减小,两者差距较大
  • 高方差模型增加样本量对模型准确度有所帮助

评估总结

线性及逻辑回归

  • 增加训练集样本:修复高方差
  • 减少特征量:修复高方差
  • 增加特征量:修复高偏置
  • 增加多项式:修复高偏置
  • 减少lambda:修复高偏置
  • 增加lambda:修复高方差

神经网络

  • 神经网络特征量越少,越倾向于欠拟合,计算成本少
  • 神经网络特征量越多,越倾向于过拟合,计算成本高
  • 可以使用交叉验证集来训练不同层数的神经网络模型,选择最好的那个,怎么做呢???

模型复杂度

  • 低阶多项式低复杂度,倾向于高偏置低方差
  • 高阶多项式高复杂度,倾向于低偏置高方差
  • 选择合适复杂度的假设方程,即低偏置低方差

应用实战-垃圾邮件过滤器

垃圾邮件

我们主要可以从以下几个方面处理我们的模型

  • 数据收集:收集更多的训练样本
  • 特征开发:对特征量进行筛选,组合,删除等处理
  • 处理输入集:对数据集进行处理,去空,筛查邮件文字的
    至于算法,够牛逼的当然也可以设计自己的模型

    那么我们应该在哪方面优先投入更多方面呢?

开发流程

推荐的开发流程如下:

  1. 先迅速实现一个能够完成预期目标的简单算法,从而快速找到问题最大,最值得改进的方面
  2. 使用交叉验证集验证
  3. 绘制学习曲线,判断是否需要更多数据
  4. 人为检测交叉验证集中的误差项,观察错误的类别和趋势
    开发流程

For example, assume that we have 500 emails and our algorithm misclassifies a 100 of them. We could manually analyze the 100 emails and categorize them based on what type of emails they are. We could then try to come up with new cues and features that would help us classify these 100 emails correctly. Hence, if most of our misclassified emails are those which try to steal passwords, then we could find some features that are particular to those emails and add them to our model. We could also see how classifying each word according to its root changes our error rate

错误分析

将错误分析单独从开发流程中提取出来,其重要性可见一般

数字评估

数字评估一般是建立在人为识别的基础上的。当我们认为通过观察能找到合适的数据集时,必须还要经过严谨的数字评估(误差值)来验证我们的判断,这些数字我们称为误差测度(error metrcs)
错误分析

人为检测基础上进行错误分析是很重要的,比如邮件包括一些隐藏因素,如大小写,多词同义等,需要我们取分析,判断,测试,最后做出决定,优化我们的算法

偏斜类

偏斜类是指数据中的某一类偏差很大,主要为占比极小的情况,这种情况下,看似完美的模型也会造成不理想的预测结果,下图以癌症诊断为例:
偏斜类

可见偏斜类会给我们带来不小的困难,我们需要其它的误差测度来衡量

正确率和召回率

概念尽在图中
正确及召回

  • 准确率: T r u e p o s t i v e T r u e p o s i t i v e + F a l s e p o s i t i v e \dfrac{True_{postive}}{True_{positive}+False_{positive}} Truepositive+FalsepositiveTruepostive
  • 召回率: T r u e p o s t i v e T r u e p o s i t i v e + F a l s e n e g a t i v e \dfrac{True_{postive}}{True_{positive}+False_{negative}} Truepositive+FalsenegativeTruepostive

准确率和召回率都是越高越好吗?

F1分数

高准确率和高召回率不是越高越好,事实上,它们存在着较大的区别乃至矛盾,语言形容比较抽象,上图
区别

我们通过F1分数来衡量正确率和召回率之间的关系反应的综合准确度考量,使用平均值时远远不够的

F1

F1分数越高越好

使用大数据

如果我们的模型选择和特征量处理时合理的,那么数据集的大小到底对我们的预测有什么影响?
大数据

It’s not who has the best algorithm that wins. It’s who has the most data.

合理使用大数据

多训练参数的算法+非常大的数据集=低方差低偏置模型

难怪人人都在大数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值