斯坦福机器学习课程笔记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
- 斯坦福机器学习课程笔记week6-机器学习算法的应用技巧
- (斯坦福机器学习课程笔记)EM算法
- Andrew Ng机器学习课程笔记--week6
- 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning
- (斯坦福机器学习课程笔记)正则化和机器学习应用的建议
- (斯坦福机器学习课程笔记)牛顿法算法学习
- 斯坦福机器学习课程
- 斯坦福机器学习在线课程笔记
- 斯坦福机器学习课程笔记(第五讲)
- 斯坦福NG机器学习课程:Dimensionality_reduction笔记
- 斯坦福机器学习课程笔记1
- Coursera机器学习 Week6 笔记
- 斯坦福机器学习课程目录
- Andrew NG 机器学习 笔记-week6-应用机器学习的建议 ( Advice for Applying Machine Learning)
- Andrew Ng机器学习笔记week6 机器学习的应用与设计
- 【机器学习-斯坦福】学习笔记1 - 机器学习的动机与应用
- 【机器学习-斯坦福】学习笔记1 - 机器学习的动机与应用
- 斯坦福机器学习公开课学习笔记(1)—机器学习的动机与应用
- HDU 1054 Strategic Game(二分图最小覆盖集)
- android ViewPager 不带滑动效果切换item
- 【POJ 3461】Oulipo 中文题意&题解&代码(C++)
- 从头认识Spring-2.4 基于java的标准注解装配-@Inject(2)-通过set方法或者其他方法注入
- 160cracked-2
- 斯坦福机器学习课程笔记week6-机器学习算法的应用技巧
- 写CUDA必备sublime text插件:CUDA Snippets
- 1.3 linux系统安装tomcat
- Java基础-Map容器的并发访问控制
- WF4.0与多线程
- hdu acm 1532 Drainage Ditches
- Android杂谈之获取sdcard信息
- 从头认识Spring-2.4 基于java的标准注解装配-@Inject(3)-通过构造器方法注入
- JDBC简单实用总结