过拟合与欠拟合
非线性模型曲线可以无限升次,可能带来过拟合,也有可能曲线次数数过低导致欠拟合
过拟合
欠拟合
一般来说,过拟合更多一点
学习曲线
模型越复杂(曲线次数越高),预测越准确,模型复杂程度和预测准确度关系即学习曲线
横轴为模型复杂程度(曲线次数),纵轴为误差率(越低越好)
欠拟合与最佳的区别主要在准确度上
测试数据集与交叉验证
为解决过拟合问题,引入测试数据集和交叉验证方法。网格搜索中即运用了交叉验证方法
测试数据集![](https://i-blog.csdnimg.cn/blog_migrate/d9c8d83280b8204dbdf7e179e50f92e9.png)
缺点:有可能过拟合测试数据集
实现:test_size=0.4即测试数据集占总数据40%
交叉验证
思想:k个模型参数均值做为最终结果
缺点:计算量过大。但能保证模型可靠性
实现:默认分成三份交叉验证,得到每次预测的准确度,cv(可调分成份数)
通过交叉验证得到最佳参数:即K,P
网格搜索也用了交叉验证方法;GridSearchCV中的cv即代表交叉验证,cv(交叉验证分成份数)
网格搜索:穷举搜索。在所有候选的参数选择中,通过循环遍历,尝试每一种可能性
k-dolds交叉验证
原始训练集均分为K组,让每一个子集都做一次验证集,其余的K-1个子集作为训练集。这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标
留一法
一共m个样本分m份,每个样本单独作为验证集,其余的m-1个样本作为训练集一个模型,共m个模型
偏差(Variance)与方差(Bias)
高偏差:太散 高方差:太不准
高度依赖数据准确度的
数据可能没模型
调参时,对KNN:K越小(判断性质的点越少),方差越大;对多项式回归:模型越复杂偏差越大
偏差方差调整通常矛盾。降低偏差会提高方差,降低方差会提高偏差
一般机器学习中,问题都是高方差。解决方法如下
模型正则化
模型正则化即限制参数大小,使得曲线不会太陡峭
岭回归
管道聚合岭回归:Rige即岭回归方法(degree:曲线次数;alpha:θ的平方和的系数)
degree越大曲线越陡;alpha越小曲线越陡峭
θ的平方和的系数为0.0001情况
θ的平方和的系数为1情况
θ的平方和的系数为100情况
LASSO回归
比较Ridge和LASSO
LASSO倾向于使得一部分θ为0,故更容易出直线
原因:梯度下降中的求导,二次求导变一次。一次求导变符号函数
Lp范数
L0正则项:NP难问题,一般用L1取代
弹性网:结合L1和L2,引入新的超参数r;
结合岭回归和LASSO回归(批量下降和随机下降), 规避了岭回归特征数多计算量大的缺点(可以特征选择)和 LASSO急于将一些特征化为零带来的错误