机器学习自学笔记 2018-09-18

结构化机器学习项目

第一周

1.3满足和优化指标

你在评估一个算法效果的好坏时,你会有一个优化指标和满足指标,你需要在评估时先看看有没有达到满足指标的最低限度,在达到后再看优化指标是不是更好,这就类似于:先成人,再成才。

1.4构建训练,开发,测试集的原则

首先明确,我们做开发集测试集都是为了让目标达到设定的那个靶心,就好比给大家一个木制的原材料去目标做一个老虎雕塑,流程成熟之后,你说我们测试集用更硬一点的材料试试 这就很可能造成跟本造不来:效果极差的现象。所以我们在构建开发数据集时就要通同时把“较软的”和“较硬的”材料混合在一起训练,这样跑出的算法才是可以适应各个情况的算法,避免了之后不断返工的问题。所以开发和测试集都必须来自同一分布。

1.5开发集和测试集的大小问题

在过去,数据集的大小较小的时候,我们可能会采用6/2/2的比例去分配训练集,开发集和测试集,但现在数据量已经非常的大,我们只需要一定数据量的测试集去得到系统的置信度,比如10000,100000,这是定数量而不定比率,所以有时占整个数据集的1%就够了,取决你的具体问题。

1.6什么时候开始改变开发,测试集的指标

当你的算法在开发和测试集上表现良好,但在你实际应用程序你所关注的地方表现不好,这时候你就应该修改指标,或者你的开发测试集。

1.7为什么我们要和人的表现做比较

一个机器学习的算法,如果他的表现比人的表现差,我们就可以通过跟人做比较,从我们自己的角度思考:为人做的更好了?这是很容易想通的,而且我们可以通过:1.花钱请人帮你做更多标记过的数据集 2.你的算法不如人,那就让人看看你算法处理的例子,看看错误处在哪里,并尝试了解为什么人能做对,算法却是错的。3.更好地分析方差和 偏差。下一节会讲。

1.8可避免偏差:你的误差和贝叶斯误差的差值

假设你做了一个狗的分类器,它在训练集上的误差明显高于人的话,说明你的的神经网络拟合的不够,偏差过大,你应该采用更深层的神经网络,或者让它训练地更久一些。如果是你的训练集效果不错,而开发集和训练集二者的误相差过大,说明你的神经网络过拟合了,方差过大,你可以试试正则化的方法去减少方差或者给它更多的数据集。人在一个方面的误差通常跟贝叶斯误差相差不多,如果你训练集误差跟这个误差相差不多,那么我们就可以认为可这个二者之间的差值:可避免误差不大,没有太多提升空间了,如果不小,你就应该回头好好看看误差在哪里,该用什么方法解决了。

1.9 理解人的表现

对于一种非专业性事件,人类的偏差基本一致,就不用考虑太多,拿那个偏差作为贝叶斯偏差就好,但有些事件如应用在医学邻域,专业人士而活非专业人士的判断误差可能会相差很大,取哪个作为你的贝叶斯偏差对算出来的贝叶斯偏差影响很大,得不到专业人士的偏差数据,这也是局限机器学习的的原因之一。

1.10超越人的表现

同上提到的限制机器学习的问题,人类在自然识别上的表现往往更擅长,但由于有足够多的数据,机器学习在单一监督学习问题上很多已经超过了人类。

1.11改善你的模型:策略总结

1.首先你要搞清楚你目标,不要在做了很久之后在改这个目标

2.选择好你的训练,开发,测试集,三者要来自同一分布

3.确定好你的贝叶斯误差,这有助于你在得到一定成果后观察出自己可比避免偏差:是误差过大,还是方差过大。

4.偏差较大其实是常见的事,所以你在设计这个系统的时候就要发挥正交化思想,给自己设计两个“旋钮”一个可以调整偏差,一个可以调整方差,而且调整互不干扰。

5.偏差和方差过大之后的解决方案老师都给过了,如图。

你可能感兴趣的:(机器学习自学笔记 2018-09-18)