第4章 训练模型

第4章 训练模型

写在前面

参考书

《机器学习实战——基于Scikit-Learn和TensorFlow》

工具

python3.5.1,Jupyter Notebook, Pycharm

线性回归算法比较

算法 m很大 是否支持核外 n很大 超参数 是否需要缩放 sklearn
标准方程 0 LinearRegression
批量梯度下降 2 n/a
随机梯度下降 ≥2 SGDRegressor
小批量梯度下降 ≥2 n/a

其中,m是训练实例的数量,n是特征数量。

多项式特征

  • from sklearn.preprocessing import PolynomialFeatures
  • PolynomialFeatures会在给定的多项式阶数下,添加所有的特征组合
  • 例如两个特征a,b,阶数degree=3,PolynomialFeatures不只会添加特征$a2$、$a3$、$b2$、$b3$,还会添加组合$ab$、$a2b$、$ab2$。

偏差/方差权衡

  • 在统计学和机器学习领域,一个重要的理论结果是,模型的泛化误差可以被表示为三个截然不同的误差之和:
    • 偏差:错误的假设(假设数据是线性的)。
    • 方差:对数据的微小变化过度敏感(过拟合)。
    • 不可避免的误差:噪声(通过清理数据来改善噪声)。

线性回归

  • 普通线性回归:from sklearn.linear_model import LinearRegression
  • 岭回归(l2范数正则化):from sklearn.linear_model import Ridge
  • 套索回归(l1范数正则化):from sklearn.linear_model import Lasso
  • 弹性网络(岭回归和套索回归的混合):from sklearn.linear_model import ElasticNet

练习部分摘抄

  • 如果你的训练集里特征的数值大小迥异,什么算法可能会受到影响?受影响程度如何?你应该怎么做?

    如果训练集的特征数值具有非常迥异的尺寸比例,成本函数将呈现为细长的碗状,这导致梯度下降算法将耗费很长时间来收敛。要解决这个问题,需要在训练模型之前先对数据进行缩放。值得注意的是,使用标准方程法,不经过特征缩放也能正常工作。

  • 训练逻辑回归模型时,梯度下降是否会困于局部最小值?

    不会,因为它的成本函数是凸函数。

  • 假设你使用的是批量梯度下降,并且每一轮训练都绘制出其验证误差,如果发现验证误差持续上升,可能发生了什么?你如何解决这个问题?

    可能性之一是学习率太高,算法开始发散所致。如果训练误差也开始上升,那么很明显你要降低学习率了。但是,如果训练误差没有上升,那么模型可能过度拟合训练集,应该立即停止训练。

  • 哪种梯度下降算法能最快达到最优解的附近?那种会收敛?如何使其他算法同样收敛?

    随机梯度下降的训练迭代最快,因为它一次只考虑一个训练实例,所以通常来说,它会最快到达全局最优的附近(或者是批量非常小的小批量梯度下降)。但是,只有批量梯度下降才会经过足够长时间的训练后真正收敛。对于随机梯度下降和小批量梯度下降来说,除非逐渐调低学习率,否则将一直围绕最小值上上下下。


我的CSDN:https://blog.csdn.net/qq_21579045

我的博客园:https://www.cnblogs.com/lyjun/

我的Github:https://github.com/TinyHandsome

纸上得来终觉浅,绝知此事要躬行~

欢迎大家过来OB~

by 李英俊小朋友

原文地址:https://www.cnblogs.com/lyjun/p/11363651.html