【Deep learning AI】结构化机器学习项目(机器学习策略)

正交化

在我们对算法进行改进时,我们希望我们可以获得一个正交化的“旋钮”对每个不同的特征使用不同的“旋钮”进行调节


假如我们的算法在以下几个情况表现得不太好:

1.对训练集拟合的效果很好

        假如拟合的不好的话,那可能是欠拟合问题。加大神经网络深度或者使用别的梯度下降法

2.对验证集拟合的效果很好

        假如拟合的不好的话,使用正则化或者增大训练样本也许会有帮助

3.对测试集拟合的效果很好

        假如不好,那么增大验证集的样本数也许会有帮助

4.对现实应用效果很好

        假如不好,那就有可能是因为Cost function 不太正确或者是测试集和验证集没挑选好。


单一数字评估指标

当我们对不同的分类器进行评估时,往往会得到很多很多数值。这时候不能很直观地看出来哪个分类器的效果更好,我们需要使用单一数字评估指标。以分类器的召回率和准确率为例:

【Deep learning AI】结构化机器学习项目(机器学习策略)

Precision 和 Recall 的定义如上。

A和B我们不能很好地区分其分类效果,这时候我们就要用到“平均"的概念:F1-score   (harmonic mean)

【Deep learning AI】结构化机器学习项目(机器学习策略)

这样就能很好地区分A,B分类器的优劣了


满足指标和优化指标

分类器通常有许多个指标,类似准确率,召回率,速度等等。我们或许并不想要一个平均值,而是某个指标能够到达最大值,而其他指标能达到忍受范围之内


【Deep learning AI】结构化机器学习项目(机器学习策略)

如上,我们想要选取最高准确率的分类器,但是运行时间不得超过100ms。

准确率就是满足指标,其余的便是优化指标。

我们从N个指标中选出一个指标作为我们的满足指标,其他指标设置一个阈值作为优化指标。


训练集/开发集/测试集


对开发集和测试集的归类务必在同一分布之下,不然会变成(Zip code问题)

【Deep learning AI】结构化机器学习项目(机器学习策略)


什么时候开始改变开发集或者测试集的指标?

第一种情况

假设我们拥有两个分类器A,B


【Deep learning AI】结构化机器学习项目(机器学习策略)

看起来我们的A分类器误差更小,更加适合我们应用。但是假如A分类错误时会把色情图片推送给客户,而B虽然误差较大但不会把色情图片产生错误分类。这时我们就要改变开发集和测试集的指标了。

【Deep learning AI】结构化机器学习项目(机器学习策略)

重新定义Error函数如上。当是色情图片时,w的取值很大,使得Error增加很多。对色情图片的分类进行加权。


第二种情况

当我们的开发集与测试集都是高质量的图片,但当在现实应用中的图片都是低质量的,和开发测试集不是同一个分布之下的时候。我们就要考虑改变开发集与测试集了(eg:猫分类器)



根据人类的表现来和神经网络进行比较

【Deep learning AI】结构化机器学习项目(机器学习策略)