zoukankan      html  css  js  c++  java
  • 机器学习(3)- 学习建议<误差出现如何解决?>

    根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。

    1 学习建议

    误差太大,如何改进?

    • 使用更多的训练样本→解决高方差
    • 选用更少的特征→解决高方差
    • 选取更多的特征→解决高偏差
    • 增加多项式特征→解决高偏差
    • 减小(lambda)→解决高偏差
    • 增大(lambda)→解决高方差

    评估机器学习算法的性能

    对数据进行“洗牌”,然后再分成训练集和测试集。通常用70%的数据作为训练集,用剩下30%的数据作为测试集。

    1. 对训练集进行学习,得到参数( heta)

    2. 计算测试误差(不加入正则项):对于线性回归,可以用之前的代价函数;对于逻辑回归,除了之前的代价函数,还有一种称为0/1错误分类的方法

      [err(h_ heta(x),y)=left{ egin{aligned} 1 && if h_ heta(x) ge 0.5,y=0 \ && or h_ heta(x) lt 0.5,y=1 \ 0 && otherwise end{aligned} ight. ]

      [Test error = frac{1}{m_{test}}sum_{i=1}^{m_{test}}err(h_ heta(x_{test}^{(i)}),y_{test}^{(i)}) ]

    模型选择

    使用测试集选择次幂(d),因此需要验证集→可参考交叉验证

    使用60%的数据作为训练集,使用20%的数据作为交叉验证集,使用20%的数据作为测试集

    1. 对训练集进行学习,得到参数( heta^{(i)}),即多个模型
    2. 用验证集计算验证误差(不加入正则项),得到参数(d),即选择模型
    3. 计算测试误差(不加入正则项),即对模型进行测试

    机器学习诊断法(偏差or方差?)

    (d)大,则高方差;(d)小,则高偏差

    偏差:训练误差和验证误差都很大

    方差:训练误差小,但是验证误差大,即验证误差远大于训练误差

    正则化和偏差、方差

    (lambda)大,则高偏差;(lambda)小,则高方差

    选取一系列可能尝试的(lambda)值:0,0.01,0.02,0.04,...,20

    1. 训练出12个(lambda)值正则化的模型
    2. 计算验证误差,得到(lambda)
    3. 计算测试误差

    绘制学习曲线

    用来判断学习算法中的问题

    高偏差时,随着训练集数量增加,验证误差不会明显下降,基本变平,此时使用更多的训练样本无用

    高方差时,随着训练集数量增加,验证误差一直增大,训练误差一直减小,此时使用更多的训练样本有用

  • 相关阅读:
    MVC部署到IIS 出现未能加载文件或程序集“System.Web.Http.WebHost.....
    web在线聊天框滚动条自动在底部
    IE 浏览器下英文 微软雅黑 不起作用
    U3D MonoBehaviour.InvokeRepeating 和 MonoBehaviour.Invoke
    U3D 中关于相同的怪物不发生碰撞 或者是想让一些物体发生碰撞 又不想让一些物体发生碰撞
    U3D 2D中给精灵添加刚体后 发现精灵会倒 ..
    Axure教程 | 轻量级的后台原型框架
    Axure:侧导航收缩与展开
    SQLSERVER数据库调优
    MySQL用GROUP BY分组取字段最大值或最新一条
  • 原文地址:https://www.cnblogs.com/angelica-duhurica/p/10948753.html
Copyright © 2011-2022 走看看