zoukankan      html  css  js  c++  java
  • 每日一个机器学习算法——机器学习实践

    知道某个算法,和运用一个算法是两码事儿。

    当你训练出数据后,发觉模型有太大误差,怎么办?

    1)获取更多的数据。也许有用吧。

    2)减少特征维度。你可以自己手动选择,也可以利用诸如PCA等数学方法。

    3)获取更多的特征。当然这个方法很耗时,而且不一定有用。

    4)添加多项式特征。你在抓救命稻草么?

    5)构建属于你自己的,新的,更好的特征。有点儿冒险。

    6)调整正则化参数lambuda。

    以上方法的尝试有些碰运气,搞不好就是浪费大把时间。

    machine learning diagonostic. 机器学习诊断。检查正确性,提升效率,节省调试时间。

    一,评估假设

    loss越小,不代表模型越好,有可能出现过拟合的现象。

    正确的方法是:将数据分割为训练集和测试集。利用训练集训练数据,测试集进行测试求出测试集误差(test set error)

    二,模型选择与训练验证测试集

    如何选择正则化参数和多项式次数(模型选择)

    尝试不同的正则化参数和多项式次数,选择在测试集上损失最小的model。这似乎可行,但都是针对测试集计算,无法验证泛化能力。

    解决的方法就是划分出三个集合:训练集,验证集,和测试集。

    利用验证集选择最佳的参数模型,之后再在测试集上计算泛化损失。

    三,模型诊断:bias vs variance

    过拟合和欠拟合的判断方法

    绘制曲线

    当d过小,有可能是欠拟合

    当d过大,有可能是过拟合

    对于欠拟合而言,验证集和训练集的loss均非常大

    对于过拟合而言,训练集的loss很小,而验证集的loss很大。

    四,正则化参数对欠拟合过拟合的平衡

    lambuda很大的话,容易欠拟合,过小则容易过拟合。

    如何选择?

    设置一个正则化参数的选择范围,在验证集上计算每一个值所对应的loss的大小,选择最小的那个。

    五,学习曲线

    high bias:

    Jcv和Jtrain在m很大的情况下,都很高。

    此时,增加样本数将没有效果。因为模型本身出了问题。可能的问题是模型过于简单。

    high variance:

    Jcv和Jtrain之间间隔很大。

    此时,增加训练样本数有可能会有很好的效果。

    六、总结

    1)获取更多样本:解决过拟合。欠拟合则不行。

    2)更小的特征集:同上。

    3)添加其他特征:解决欠拟合

    4)添加多项式:解决欠拟合

    5)减小lambuda: 解决欠拟合

    6)增大Lambuda:解决过拟合

  • 相关阅读:
    Delphi 调用DLL TStream作为参数
    Delphi 退出时注销子窗口应注意的问题
    Excel文件转换成用友实施工具Excel格式
    Delphi Function 返回值忘记默认赋值的一些问题
    vscode 安装golang插件方法
    git merge
    vant ui 双向输入框禁止手机键盘弹出
    回调地狱
    vue 数组对象循环添加一个属性 在页面上动态渲染时更改属性值
    Windows下安装Redis,并设置开机自动启动
  • 原文地址:https://www.cnblogs.com/ShaneZhang/p/3938026.html
Copyright © 2011-2022 走看看