结构化机器学习项目
第一周
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.偏差和方差过大之后的解决方案老师都给过了,如图。
网友评论