调试一个算法
假设你实现了一个用来预测房价的线性回归算法,你的目的是最小化代价函数
[Jleft( heta ight) = frac{1}{{2m}}left[ {sumlimits_{i = 1}^m {{{left( {{h_ heta }left( {{x^{left( i ight)}}} ight) - {y^{left( i ight)}}} ight)}^2}} + lambda sumlimits_{j = 1}^n { heta _j^2} } ight]]
然而,当你用新的数据去测试你的hθ(x)时,你发现你的预测结果误差很大以至于无法接受,你接下来该怎么办?
以下有几种方案
- 获取跟多训练样本---->解决“high variance”
- 选择减少特征---->解决“high variance”
- 选择增加特征---->解决“high bias”
- 增加多项式特征(x12, x22, x1x2, etc.)---->解决“high bias”
- 增加λ---->解决“high variance”
- 减小λ---->解决“high bias”
人们往往花费很多的时间去做自己认为对的方法改善算法的结果,其实有一些简单的方法就可以确定问题出在哪里
机器学习诊断(Machine learning diagnostic)
Diagnostic: A test that you can run to gain insight what is/isn't working a learning algorithm, and gain guidance as to how best to improve ites performance.
Diagnostics can take time to implement, but doing so can be a very good use of your time.
诊断:你可以运行并从内部知道一个学习算法为什么可以/不可以正常工作,并获得有关如何最好地提高它的性能的指导。
诊断可能需要一段时间才能实现,但这样做可以很好地利用你的时间。