机器学习、数据挖掘-推荐系统问题总结
参考各种资料总结一下,准备面试。更新中~
1、过拟合与欠拟合
过拟合:在训练数据集上表现较好,在测试集上表现较差。
可能的原因:
- 参数太多,模型复杂度高。
- 样本噪声数据较大,模型学到了噪声数据的特征。
- 对于决策树模型,对于决策树的生长没有进行合理的限制和修剪。
- 对于神经网络,迭代次数太多(overtraining),拟合数据中的噪声和无代表性的特征。
解决方法:
- 降低模型复杂度,使用简单的模型
- 增加数据样本
- 对于决策树,earlystopping
- 正则化,减少参数
- 对于神经网络,采用dropout
- 采用ensemble,集成模型。Bagging, boosting
欠拟合:在训练集和测试集表现都较差
可能的原因:
- 模型太简单
- 特征不足,或当前特征不具有代表性
- 神经网络,迭代训练次数不够
解决方法
- 增加模型复杂度。
- 扩展特征。E.g.FM, feature crossing
- 减小正则化系数
2、集成学习[1]
思想:基于训练集训练多个若个体学习器(同质或异质),通过一定的结合策略形成强学习器。
- Bagging-多个个体学习器无依赖关系,并行学习。
e.g. random forest. 采样方法:放回采样
- Boosting-多个个体学习器有依赖关系,顺序学习。
e.g 梯度提升树(Gradient Boosting Tree, GBDT), AdaBoost算法,XGBoost
加法模型,学习算法:前向分布算法(后来的弱分类器在不断的学习上一个分类器的输出的结果和真实label之间的残差。)
Adaboost
思想:提高前一轮弱分类错误分类样本的权重,降低正确分类样本的权重
优点:分类精度高
灵活,可以使用各种回归分类模型作为弱学习器(常用CART树和神经网络)
缺点:对异常样本敏感,样本在迭代中获取更高权重。
GBDT梯度提升树
用加法模拟,多棵决策树来拟合一个目标函数。每一棵决策树拟合的是之前迭代得到的模型的残差。求解时,对目标函数使用一阶泰勒展开,用梯度下降法训练决策树
迭代方式:用损失函数的负梯度(一阶导数)来拟合(代替)本轮损失的近似值(残差)
弱学习器只能是CART树
XGBoost
- 用损失函数的负梯度(二阶阶导数)来拟合(代替)残差,可以更为精准的逼近真实的损失函数。
- 损失函数加入正则项,减少过拟合
3、L1正则会减少参数数量而L2正则不会?[2]
使用L2正则项的解不具有稀疏性,参数足够小,“抗扰动能力强”。
使用L1正则项的解具有稀疏性。
|
|
参考资料:
[1]https://www.cnblogs.com/pinard/p/6131423.html
[2]https://www.cnblogs.com/Peyton-Li/p/7607858.html