Coursera机器学习课程(Andrew Ng)学习笔记(第六周)


  • cid:41:privileges:topics:read

    Applying Machine Learning
    前五周的课程cover了线性/逻辑回归,神经网络。本周Andrew Ng为我们梳理了一下应用机器学习的大致流程、可能遇到的问题及解决办法。应用机器学习算法的一个重要内容是模型选择(model selection)。本周的内容基本围绕这个主题展开。

    应用机器学习的第一步是对数据进行分段,使用一部分数据训练算法,另一部分数据来检验结果。一个最自然的想法是将已有的数据划分为训练数据集和测试数据集,各自分别占70%和30%。对于确定模型的算法,这样的划分是可行的。然而如果模型还没有确定,我们则需要另一种划分方式来解决模型选择问题(model selection)。具体而言,60%的数据用于训练,20%的数据用于交叉验证(cross validation),20%的数据用于最后的测试。关键的区别在于多出的交叉验证集。交叉验证集被用于模型选择,避免将测试数据用于模型选择而导致overfitting。

    划分好数据后,我们需要进行模型选择(决定使用哪些feature,以及正则参数λ的值)。在这个过程中,我们需要应对两种error:偏差(Bias)和方差(Variance),分别对应于underfitting和overfitting。将多项式次数,算法在训练数据上的误差和交叉验证数据画在坐标系中:
    0_1468604099737_upload-1b01aea1-5099-42fc-b906-d7f5d6bcfe0a
    不难发现规律:

    • 一个Bias(underfitting)的模型:在训练集上的误差非常高,并且在交叉验证集上的误差和训练集误差相近。
    • 一个Variance(overfitting)的模型: 在训练集上的误差较低,而在交叉验证集上的误差远大于训练集上的误差。

    这个规律可以帮助我们判断模型所处的状态。
    除了feature的个数外,正则参数也需要被确定。具体做法为,选定λ范围,逐个测试λ在交叉验证集上的误差,选取误差最小的λ值。

    学习曲线(laerning curve)是一个帮助诊断算法状态的工具。以训练数据的数量作为x轴,error作为y轴,画上算法在训练数据和交叉验证数据集上的误差。
    对于高偏差的模型:

    增加更多数据不大可能改善性能
    对于高方差的模型:
    0_1468604171025_upload-c2ad13f2-78ce-4439-9da8-a0024e02a37e
    增加更多数据有可能改善性能

    总结一下对模型采取各种操作预期带到的效果:

    • 获取更多训练数据:解决高方差问题
    • 减少feature个数:解决高方差问题
    • 增加feature个数:解决高偏差问题
    • 增加多项式feature:解决高偏差问题
    • 减小λ:解决高偏差问题
    • 增大λ:解决高方差问题

    Andrew也给出了对机器学习流程的建议:

    • 从简单的算法开始,快速实现并测试
    • 画出学习曲线(Learning Curve),以此决定如何改进(是否需要更多数据, 是否需要更多feature, etc.).
    • 手动检查被算法错误分类的数据,观察错误是否有规律可循

登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待