吴恩达机器学习 Machine Learning Week_6学习笔记
Machine Learning Week_6
Diagnosing Bisa vs. Variance
正则化参数 的值选择不当可能造成underfit与overfit的
解决方法:
1)采用不同的 n 个 对trainging set训练,得到 n 组模型。
2)用 n 个模型计算cross validation set的误差。
3)选出使得cross validation set误差最小的值及对应模型。
4)利用选出的模型计算test set,进而计算出预测误差,同时可将cross validation set与trainging set误差的值与值画在一张图表上,可以更直观的看出的合适取值。
Attention:计算cross validation set与trainging set的误差函数不考虑值,只在训练trainging set时代入。
Learning curve
学习曲线( learning curve)是将训练集误差和交叉验证集误差作为训练集实例数量(????)的函数绘制的图表。我们可以利用此曲线来识别high bias/variance。
正常情况:
训练集误差和交叉验证集误差随着训练集实例数量的增加逐渐减小且相近。
high bias
训练集实例数量的增大并不会减少训练集误差和交叉验证集误差,且两者误差相差不大。
high variance
训练集误差随着训练集实例数量的增大减少,同时交叉验证集误差也有减小,可以看出,对于high variance类问题,可以通过增大训练集实例的数量解决。
Deciding What to Do Next Revisited
根据对应的high bias/variance问题,我们可以选择接下来的优化方向:
Machine Learning System Design
构建学习算法的步骤通常为:
- 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法。
- 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择。
- 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势。
Error Metrics for Skewed Classes
对于某些特殊训练集,例如训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例,我们之前构造的误差诊断函数可能不再使用。这时我们需要构造新的误差函数。
例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有 0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有 0.5%。然而我们通过训练而得到的神经网络算法却有 1%的误差。这时,误差的大小是不能视为评判算法效果的依据的。
同时,我们可以选择不同的阈值来控制上述两个指标各自的重要程度。
为了得到最优阈值,我们可以选择取值不同的阈值,计算对应情况下的查准率和查全率,进而计算该种条件下的F值:
选取F值最大的阈值,作为最优阈值。