机器学习、数据挖掘-推荐系统问题总结

参考各种资料总结一下,准备面试。更新中~

1、过拟合与欠拟合

过拟合:在训练数据集上表现较好,在测试集上表现较差。

可能的原因:

  1. 参数太多,模型复杂度高。
  2. 样本噪声数据较大,模型学到了噪声数据的特征。
  3. 对于决策树模型,对于决策树的生长没有进行合理的限制和修剪。
  4. 对于神经网络,迭代次数太多(overtraining),拟合数据中的噪声和无代表性的特征。

解决方法:

  1. 降低模型复杂度,使用简单的模型
  2. 增加数据样本
  3. 对于决策树,earlystopping
  4. 正则化,减少参数
  5. 对于神经网络,采用dropout
  6. 采用ensemble,集成模型。Bagging, boosting

欠拟合:在训练集和测试集表现都较差

可能的原因:

  1. 模型太简单
  2. 特征不足,或当前特征不具有代表性
  3. 神经网络,迭代训练次数不够

解决方法

  1. 增加模型复杂度。
  2. 扩展特征。E.g.FM, feature crossing
  3. 减小正则化系数

2、集成学习[1]

思想:基于训练集训练多个若个体学习器(同质或异质),通过一定的结合策略形成强学习器。

  1. Bagging-多个个体学习器无依赖关系,并行学习。

机器学习、数据挖掘-推荐系统问题总结

e.g. random forest. 采样方法:放回采样

  1. Boosting-多个个体学习器有依赖关系,顺序学习。

机器学习、数据挖掘-推荐系统问题总结

e.g 梯度提升树(Gradient Boosting Tree, GBDT), AdaBoost算法,XGBoost

加法模型,学习算法:前向分布算法(后来的弱分类器在不断的学习上一个分类器的输出的结果和真实label之间的残差。)

Adaboost

思想:提高前一轮弱分类错误分类样本的权重,降低正确分类样本的权重

优点:分类精度高

     灵活,可以使用各种回归分类模型作为弱学习器(常用CART树和神经网络)

缺点:对异常样本敏感,样本在迭代中获取更高权重。

GBDT梯度提升树

用加法模拟,多棵决策树来拟合一个目标函数。每一棵决策树拟合的是之前迭代得到的模型的残差。求解时,对目标函数使用一阶泰勒展开,用梯度下降法训练决策树

迭代方式:用损失函数的负梯度(一阶导数)来拟合(代替)本轮损失的近似值(残差)

弱学习器只能是CART树

XGBoost

  1. 用损失函数的负梯度(二阶阶导数)来拟合(代替)残差,可以更为精准的逼近真实的损失函数。
  2. 损失函数加入正则项,减少过拟合

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