吴恩达机器学习课笔记week 6

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/asasasaababab/article/details/81706420

  其实这节课主要还是再将ML Strategy,但是我觉得有几个点很好,总结在这里:

评价模型时:

  1. 首先有一个对Hypothesis的评价指标,错误率啊,正确率啊,等等。
  2. 然后肯定也得有train/val/test数据集了。这里是小数据集划分方法60/20/20这种。
  3. 然后就是训练和cross validation了。
  4. 诊断bias vs viarance 这个已经说过很多次了。
    截个图吧:
    这里写图片描述

learning curve

然后有一个关于learning curve的问题,之前没有说到,这个还是很有意思的。
也就是训练错误率和测试错误率关于数据集大小的函数:
这里写图片描述
在bias比较大的情况下,其实增加数据是不会得到什么增益的。
这里写图片描述
但是对于Variance比较大的情况,多收集数据就有意义了。

然后几个多项式的改进方法:

收集数据: Fixes high variance
特征少一点: Fixes high variance
特征多点: Fixes high bias
使用高阶特征: Fixes high bias
减少λ: Fixes high bias
增加 λ: Fixes high variance.

这些都很easy了。
对于神经网络,可以按照参数多少来判断,越多就越可能过拟合。

最后一个是train error和val error在不同的正则化参数 λ 下的表现:
这里写图片描述

Error Analysis

  Error Analysis已经是老生常谈了,依旧是分析train error, val error,然后从val set里边取出来一些数据,进行数据分析,分析出来错误的原因及趋势。

Skewed Classes

  另外一个是样本不平衡问题,这里就涉及到accuracy,precision/recall的概念了。在另一篇博文里边有更加明确的信息和过程。这里一个示例我觉得挺好的,总结如下:假如一个数据集里边有99.5%是健康人,0.5%是癌症病人。那么假如我 y = 1 y = 0 的准确率都是是99.2%,总体也是99.2%,看上去可能已经很不错了。但是假如我说:干脆,所有人都没有癌症,也就是 y 0 那么这样准确率就可以99.5%了,但是这样的分类器好吗?显然我们直观上觉得不太好。但是从准确率上确实还不错啊。所以准确率对于这个skewed classes表现就会很不好。所以要用precision/recall来表征。但是这就是两个参数了。如果我们用算术平均值的话,就会有如下的情况:
这里写图片描述
  显然算法1看上去比较好。但是算法3的算术平均数最大。所以算术平均数会放大那些比较占优的参数,而忽略掉比较劣势的参数。所以用F1 score,调和平均数,这样假如有一个方面很差,那么一下就把劣势放大了。这样可以把劣势更明显的表达出来。这个上边提及的之前的博文也多写过。

数据集大小的作用

  之前的一个研究表明:
这里写图片描述
数据集足够大时,其实各个算法都差不多。这是2001年的时候的结论。这个研究影响太大,以至于大家都觉得谁数据多谁就赢了。
  但是有一个先决条件,就是模型足够的复杂,以及数据的feature足够多才行。这个足够多,有一个粗略的判别条件,就是作为一个人,能不能根据这些个feature,来得到一个比较好的结果。比方说房价预测,假如只给一个房屋的大小,那么即使最优秀的房屋经纪人也没法给出一个比较好的预测。这种情况下机器学习通常也没法给一个很好的结果。
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/asasasaababab/article/details/81706420