整理的关键点
欠拟合:模型过于简单,不能很好的描述数据的趋势,导致在训练集误差也很大
1、添加特征量,可能选取的特征不能完全的表示数据的趋势
2、添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强
3、减小惩罚项,减少L1,L2正则化参数
所谓的过拟合就是模型在训练集误差较小,而在测试集却出现较大误差,可能是模型过于复杂导致的
1、可以多增加训练集样本量 # 增加训练量可以避免过拟合
2、提前终止模型
3、重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据
4、加入惩罚项,L1,L2正则化
5、神经网络中的Dropout(按照一定的概率将某些隐藏层暂时从网络中丢弃)
6、决策树中根据信息增益或者信息增益比的剪枝操作
关于正则化:
L0范数是指向量中非0的元素的个数
主要是L1和L2范数:
L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”
既然L0可以实现稀疏,为什么不用L0,而要用L1呢?
个人理解一是因为L0范数很难优化求解(NP难问题)二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解
L2范数是指向量各元素的平方和然后求平方根
可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0
L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?
一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀)
不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力
L1在图像上是正方形,L2是圆,看表达式就可以发现
总之就是L1将很多变为0,选取少部分特征,而L2将很多趋近于0,但不是0,所以L1是离散化,L2是连续
L1在江湖上人称Lasso,L2人称Ridge
Lasso方法下解出的参数常常具有稀疏的特征,即很多特征对应的参数会为零,这就使得特征选择成为可能
Lasso就是常用的特征降维的方法,PCA,LDA(下次整理下)
参考: https://blog.csdn.net/zouxy09/article/details/24971995