Cousera - Machine Learning - 课程笔记 - Week 6

2018年9月版本

Week 6

学习算法评估 Evaluating

可以尝试的事情

  • 获取更多的训练实例(解决高方差)
  • 尝试更小的特征集(解决高方差)
  • 尝试获取额外的特征(解决高偏差)
  • 添加多项式特征(解决高偏差,即另一种形式的增加特征)
  • 减小λ的值(解决高偏差)
  • 增大λ的值(解决高方差)
  • 机器学习诊断法:一种可以让我们了解一种学习算法中起作用和不起作用的内容,同时引导我们如何最有效地提高性能的测试方法
  • 机器学习诊断法可能会花很多时间,但是确实一种高效利用时间的方法

评估一个假设函数

  • 将数据集分割成两个部分:训练集和测试集(一般为7:3)

  • 训练-测试过程:

    • 从训练数据集学习参数θ
    • 计算测试集误差 J t e s t ( θ ) J_{test}(\theta) Jtest(θ)
    • 可以考虑另外一种测试指标,称为误分类率(0/1错分率)
      • e r r ( h θ ( x ) , y ) err(h_{\theta}(x),y) err(hθ(x),y)在给定阈值下,错分类结果为1,正确分类结果为0
      • 测试误差为 1 m t e s t ∑ i = 1 m t e s t e r r ( h θ ( x t e s t ( i ) ) , y t e s t ( i ) ) \frac{1}{m_{test}}\sum\limits_{i=1}{m_{test}}err(h_{\theta}(x_{test}^{(i)}),y_{test}^{(i)}) mtest1i=1mtesterr(hθ(xtest(i)),ytest(i))

模型选择

  • 过拟合:一旦各个参数对某一数据集(测试集)实现了拟合,在这个数据集上测量得到的参数误差要比实际泛化误差要低很多
  • 模型选择过程中,基于测试集的最佳模型选择可能并不是一个公平的评估过程
  • 数据集划分成三个部分:训练集、交叉验证集和测试集(6:2:2)
    • 训练误差 J t r a i n ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{train}(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2
    • 交叉验证误差 J c v ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x c v ( i ) ) − y c v ( i ) ) 2 J_{cv}(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}(h_{\theta}(x_{cv}^{(i)})-y_{cv}^{(i)})^2 Jcv(θ)=2m1i=1m(hθ(xcv(i))ycv(i))2
    • 测试误差 J t e s t ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x t e s t ( i ) ) − y t e s t ( i ) ) 2 J_{test}(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}(h_{\theta}(x_{test}^{(i)})-y_{test}^{(i)})^2 Jtest(θ)=2m1i=1m(hθ(xtest(i))ytest(i))2
    • 使用训练集训练模型,验证集选择最佳模型,并使用测试集测试模型的最终性能

偏差与方差 Bias vs. Variance

判断偏差和方差

  • 欠拟合,高偏差

  • 过拟合,高方差

  • 注意两侧的交叉验证误差极高的部分

    • 左侧是高偏差问题,需要一个更高次的多项式进一步拟合(欠拟合)
    • 右侧是高偏差问题,多项式次数过高,出现过拟合
  • 高偏差问题,训练集误差和交叉验证集误差都非常高(误差值基本相当)

  • 高方差问题,训练集误差很低,但交叉验证集误差却远大于前者

正则化

  • 当正则化系数过大时,每个参数都非常小(接近于0),会出现欠拟合的情况
  • 当正则化系数过小时,多项式次数过高,会出现过拟合的情况
  • 使用模型选择法选择合适的正则化系数:
    1. 对于不同的正则化系数,分别训练参数
    2. 针对不同的训练参数计算交叉验证误差
    3. 根据这些误差值选择最合适的参数下的正则化系数
    4. 使用测试集进行性能评定

学习曲线 Learning Curves

  • 获取训练集误差和交叉验证集误差

  • 绘制m-error曲线(m即样本总数)

  • 对于高偏差情形,获取更多的数据并没有更多帮助

  • 对于高方差情形,获取更多的数据会有些许帮助

神经网络与过拟合

  • 对于小神经网络,由于参数很少,很容易欠拟合

  • 对于大神经网络,由于参数过多,更容易过拟合,可以使用正则化解决

实践:实现一个垃圾邮件分类器 Spam Classifier

推荐思路

  • 从一个简单的算法开始,快速的实现,然后进行测试来进行评估
  • 画出学习曲线来确定是需要更多的数据还是更多的特征
  • 错误分析:手动检查被算法错误分类的实例,查看是否存在一些系统性的错分类趋势
  • 数值评估有助于快速地评定算法的误差的变化趋势,以做出进一步决策

偏斜数据的错误指标 Error Metrics

  • 错误指标:设定某个实数用于评估学习算法,量化模型表现

  • 偏斜类(skewed classes):一组数据集中正例和反例的数据比例完全不对等

  • 对于偏斜类,使用分类准确度评判模型性能并不准确

  • 精确率/召回率(precision/recall):

    • 真阳性(True Positive):模型判定为阳性且该样本确为阳性
    • 真阴性(True Negative):模型判定为阴性且该样本确为阴性
    • 假阳性(False Positive):模型判定为阳性但该样本为阴性
    • 假阴性(False Negative):模型判定为阴性但该样本为阳性
    • 精确率:系统认为为真的样本中,有多少确实为真。 P = T r u e P o s i 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 P=\frac{True Positive}{True Positive + False Positive} P=TruePositive+FalsePositiveTruePositive
    • 召回率:样本中为真的个体中,有多少被系统认为为真。 R = T r u e P o s i 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 R=\frac{True Positive}{True Positive + False Negative} R=TruePositive+FalseNegativeTruePositive
    • 常用于情况假设:y为1的数据占比非常少
    • 只有高精确率和高召回率的模型才是好模型

P和R的相对平衡 Trade Off

  • 一般地,预测y为1,当函数值大于某个阈值时
  • 当阈值较大时,会出现精确率较高(预测一个就是一个),但是会有很低的召回率(很多的阳性样本没有被认为是阳性的)
  • 当阈值较小时,会出现召回率较高(能预测一个是一个),但是会出现很低的准确率(很多隐形样本会被错认)
  • F 1 F_1 F1值( F F F值): F = 2 P R P + R F=2\frac{PR}{P+R} F=2P+RPR,用于综合评估P和R,如果需要F较大,P和R都应当尽可能接近1

机器学习中的数据 Data Sets

  • 在保证特征能够提供足够信息进行预测的前提下,我们可以通过扩增数据集来丰富一个拥有很多参数的模型,这样我们就能够得到一个低偏差(参数很多,拟合得好),同时低方差(大量数据避免过拟合)的优秀模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值