斯坦福机器学习课程笔记week6-机器学习算法的应用技巧

来源:互联网 发布:四维星瓷砖软件下载 编辑:程序博客网 时间:2024/05/22 22:50

week 6的主要内容是 机器学习算法在实际应用中的一些技巧。通常,当一个机器学习算法在实际数据中表现很差时,可能的原因以及解决办法包括:

  • 训练数据不够,使用更多的训练数据
  • 特征太多,包含冗余或者噪音特征,可以尝试使用更小的特征集
  • 特征不够,比如都是简单的线性特征,可以尝试多项式特征或者交叉特征等非线性的特征
  • overfitting 过拟合,可以调大regularization term的权重
  • underfitting 欠拟合,调小regularization term的权重

大部分人的做法是随机尝试一些方向,看work不work(当年用 lr做点击率预估时基本就是这样)。按照ng的说法,在做这些事情之前,应该先做下机器学习算法的”诊断”。 诊断本身可能是比较花费时间的,但是诊断可以有助于弄清楚,上述方向那些可能是会work,哪些可能是不会work的。

hypothesis的检验方法

诊断的第一步是看下hypothesis的拟合程度。为了防止过拟合或者欠拟合,可以把训练语料分成两份: train和test。在train上训练处模型,在test上evaluate。 evaluate的指标可以是cost function,也可以是MAE,MSE, 或者0/1 miss classification error等。

检验hypothesis时对训练集的划分

通常的做法是把训练集划分成两份: train和test,选择在test上error最小的那个作为model,但是这样做的问题是有可能选出来的model并不是generalization最好的,而是overfit了test set。 所以n.g的建议是把训练集分成三份: train set, cross validation set以及test set。 选择cross validation error最小的。具体原因是:

  • train set用于确定一个具体的参数值
  • cross validation set用于评估这个参数值的好坏(是否overfit),并且用于对参数值进行调整
  • 最终,test set用来评估模型真正的generalization performance

如果第三步的test error不可接受,太大的话,那么回退到第一步尝试一个不同的模型(更多的数据,更多的特征等)。

bias 和 variance

划分好训练集后,接下来我们可以根据模型的在train set 和 cross validation set上的error来确定模型是否overfitting(high variance)或者underfitting (high bias)。

  • 称作high bias的原因是当regularization 参数很大时,除了bias term之外的其他参数都被正则化弄成接近于0的值,此时bias term的值会比较大
  • 疑问: hign virance 的来历是?

随着模型变得更加复杂/或者正则项变小,train error是逐步下降的,cross validation error是先下降然后上升的,因此:

  • train error和cross validation error都很大的,说明 模型underfitting
  • train error小,cross validation error大的,说明模型overfitting

n.g.介绍了一种挑选合适的regularization term值的方法: 给定一个区间,选择一些呈指数增长的regularization term值,将train error和cross validation error画图表示出来,选择train error和cross validation error都比较低的值

学习曲线

学习曲线是逐步加入训练用例,观察对应的train error和cross validation error,从而诊断模型是high bias或者high variance。

  • high bias的train error(这里的error是指average error)曲线是先递增后趋于平缓,cross validation error曲线先递减后趋于平缓。两者的值比较接近。因为加入更多的数据,由于模型过于简单,还是无法很好地拟合训练数据, train error和cross validation error都比较高
  • high variance的train error, cross validation error曲线的趋势类似,但是train error和cross validation error会存在一个gap。但是这个gap是可以随着更多训练数据的加入而减小的。所以在high variance时加入更多的训练数据是有帮助的

bias/variance的指导作用

  • 训练数据不够,使用更多的训练数据 – high virance
  • 特征太多,包含冗余或者噪音特征,可以尝试使用更小的特征集 – high virance
  • 特征不够,比如都是简单的线性特征,可以尝试多项式特征或者交叉特征等非线性的特征 – high bias
  • overfitting 过拟合,可以调大regularization term的权重 –high virance
  • underfitting 欠拟合,调小regularization term的权重 –high bias
0 0
原创粉丝点击