zoukankan      html  css  js  c++  java
  • 第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 李英俊小朋友

  • 相关阅读:
    centos7&redhat7修改密码
    memcached安裝部署文檔
    cronolog安装部署文檔
    ftp安裝部署文檔
    cacti安裝部署文檔
    php安裝部署文檔
    MYSQL-5.5安装部署文档
    MySQL5.1安裝部署文檔
    nginx進階
    IO进程疏漏
  • 原文地址:https://www.cnblogs.com/lyjun/p/11363651.html
Copyright © 2011-2022 走看看