怎样消除机器学习中的过度拟合?
24 个回答
The problem of multiple comparison is the underlying reason for overfitting
主要内容:
- Overfitting
- 判断和防止overfitting 的方式
————————————————————————————————————
过度拟合的模型往往不能进行一般化推广(generalization)
拟合问题需要在两个方面进行权衡
需要注意的是 如果用来训练的数据和测试的数据是同样的,那么这样的检验是没有意义的,就像 "Table Model" 一样
一般我们会将数据集分为training/testing(holdout) 两个部分
注: 在python中可以这样做
from sklearn.cross_validation import train_test_split
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y)
识别 overfitting 的方式
- Fitting graph(模型误差与模型复杂度的图像)
基于两个模型类型讨论 Overfitting
- Tree induction problem
- 模型的复杂程度与节点的数量相关
2. Numeric model (Mathematical Functions)
- 变量的数量与模型的复杂度相关
- 直观的例子:
二维情况下,两个点可以用一条直线拟合
三维情况下,三个点可以用一个平面拟合
……
- 随着维度的增加,我们可以拟合任意数量的点(模型的参数就会变得很多) 此时很容易过拟合(我们需缩减特征(attributes)数量来防止过拟合)
SVM 与 Logistics Regression 的比较
- 模型敏感性
SVM对个别样本更不敏感(相对逻辑斯蒂模型)
过度拟合的劣势
- 一个完全记忆式的模型是无用的,它不能被一般化
- 当一个模型过度复杂时,它很容易去利用那些看似正确实则无用的(spurious)关系
Overfitting 识别的进一步分析
- 前面提及的fitting graph 是利用Holdout-Evaluation 的方式来判断,这个只是的单次的检验(single test)
- 在此基础上,我们得到 Cross-Validation 用来防止过度拟合
- Cross-Validation 本质上是应用不同split的方式,多次进行Holdout-Evaluation
- Cross-Validation 原理图
Further idea : Buliding a modeling "labortory"
Learning curves (学习曲线)
- 模型一般化表现和训练集数量的图像
Logistics regression 和 decision tree 的学习曲线
- 从图中可以看出,学习曲线初期比较陡,然后,增长速率逐渐放缓,到后期基本平坦了(边际递减)
- 要合理分析当前自己的数据数量对于使用的模型而言处于哪个水平,依据学习曲线来做出是否继续在数据量上做投资的决策
避免 Tree induction 过拟合的方式
1. 在树过于大之前便停止生长
- 每个叶中至少需要多少个数据(threshold)
- 如何判断这个阈值(threshold)是重点【可以考虑用假设检验/P-值】
2 . 等树生长到足够大之后进行修剪
- 修剪枝叶,直到任何改动都会降低正确率
Nest cross-Validation
- 对训练数据集进行再划分,以此来优化模型(例如选择参数,选择特征数量(features))
- Cull the feature set (example: SFS【sequence forward selection】)
★ Regularization (重点)
- 重点是构造一个带惩罚(penalty)的目标函数,并最优化
- 扩展:
- 将二范数惩罚函数与最小二乘法结合在一起就可以得到岭回归
- 将一范数惩罚函数与最小二乘法结合在一起就可以得到lasso方法
1. regularization:L2用的最多,L1也有用的。
2. dropout:一大利器。
3. early stop:结合cross validation使用。
4. cross validation:当数据量较小的时候,应该是用来减轻 overfitting 最好的方式了吧。
5. 当然,尽可能的扩大 training dataset 才是王道。
6. 在训练之前记得 shuffle 一下数据集,一般是每次训练一个 epoch(就是把 training dataset 训练了一遍)后就 shuffle 一次,但是对于较大的数据集可以只 shuffle 一次,虽然这样会使得训练在第二个 epoch 就变得 biased,但是带来的好处可以 overcome 这种缺陷。
更新:
7. data augmentation