机器学习黄金法则
1. 不要为了得到自己想要的结果而去修改测试集
2. 收集到的数据不能影响到检验的假设
3. 收集更多数据,直到获得所需的显着性水平
4. 尝试不同的方法来衡量性能,选择看起来最好的方法
5. 查看测试数据后选择不同类型的模型/假设
6. 如果要修改假设,则需要在新数据上进行测试
7. 或者至少在报告结果时意识到并诚实地说明这个问题
IID
通常来说,训练错误与测试错误没有太大关联,训练数据也可能与测试数据是毫无关联的,例如对抗学习,会在训练阶段进行数据扰乱,得到错误模型。
为了让我们的学习有效,我们需要一个前提或假设:训练数据和测试数据需要在某种程度上有关联,最常见的假设是独立同分布(IID)。
训练数据/测试数据是独立同分布的需要满足:
1. 所有数据都来自一个分布
2. 样本是独立的,顺序不影响他们之间的关系(无序)
在机器学习中,IID仅涉及样本,与特征无关
Fundamental Trade-Off
假设 E_train 是训练集误差, E_test 是测试集误差.
如果E_approx = E_test − E_train很小, 那么E_test可以近似为E_train。
对于E_approx(过拟合量):
1. 如果样本容量n很大,E_approx 会较小(如果n很小,拟合出来的模型很可能只适用于这一小部分数据,导致模型过拟合)
2. 模型越复杂,E_approx会越大
所以E_approx 可以用来衡量训练误差有多接近测试误差。
对于一些简单模型(单层决策树),E_approx会比较小(对训练误差不敏感),但是训练误差可能会很大。(模型不好的时候训练误差和测试误差都大,大家都一样烂,区别也就不大了)
但是模型很复杂的话,E_approx对训练误差很敏感,训练误差会比较小,但是由于模型过拟合,测试误差可能很大, 所以E_approx也会很大
一个例子:
假设E_best是所有模型中不可减少的error,那么有:
variance: 我们的模型对训练模型有多敏感
bias:我们可以把误差降到多低
noise:所有模型的测试误差可以有多低
Bias-Variance Decomposition
bias: 由于模型错误导致的误差
variance: 由于模型对训练集的敏感度造成的误差
noise: 也就是之前的E_best(没法消除的最小误差)
以上两种分解方式,都是为了衡量不同因素对测试误差的影响,毕竟在机器学习中,我们最终的目标还是为了降低训练误差。并且从这两种分解都可以得到:
第一幅图是过于简单的模型,E_train / bias 会很大,但是E_approx / variance会很小
第三幅图是过于复杂的模型,E_train / bias 很小,E_approx / variance 很大
第二幅图相比之下都很适中
验证误差
建立模型过程中,确定模型是第一步,因此还需要一个集合帮助我们确定模型,有一种方法就是,取一部分训练数据来模拟测试误差,根据训练集建立不同模型,根据验证集选择模型。在IID假设中,验证误差是训练误差的无偏估计(毕竟验证误差跟咱建立模型也没关系,模型还是在训练集的数据基础上建立的)。所以实际情况中,我们可以根据验证误差的大小去决定一些超参数。
超参数
参数是对某一个模型的规定(例如决策树某个分支的点的数值是多少),超参数可以用来控制一个模型集合的复杂度(比如树的深度)。一旦超参数被确定,我们可以开始在符合条件的模型里面重新训练所有数据,得到最终模型。
Optimization Bias
过拟合的另一个说法是最优偏差。
当我们尝试的模型越来越多的时候,可能会不断得到越来越好的模型,假如我们随机选择一个模型,有0.5的概率这是一个好模型,有0.5的概率这是一个不好的模型,但是如果有好多个备选模型,我们从中选出最好的,那么我们得到的模型成绩一定比随机出来的大越来越多,当我们尝试次数够多的时候,我们选择的模型与随机出来的模型之间的差距会越来越大(也就是bias)。
一旦我们开始使用验证集误差去优化模型的时候,验证误差不再是测试误差的无偏估计,此时模型会根据验证误差去调整参数,此时验证集的bias会比训练集还要小。当验证集很小时,随着验证集样本数(在可控范围内)增加,最优偏差会减小。
Classififier Evaluation Metrics
混淆矩阵:
对于该矩阵:Accuracy = (TP + TN)/All
![\left (1+\beta^2 \right ) \frac{precision*recall}{\left ( \beta ^2*precision \right )+recall}](https://i-blog.csdnimg.cn/blog_migrate/301383c37c5f6a44f7ec5e4eb1a91bee.gif)
ROC曲线
横坐标为假阳性率(FPR):真实结果为negative的样本中被分类器归为positive的样本比例
纵坐标为真阳性率(TPR):真实结果为positive的样本中被分类器归为positive的样本比例
ROC曲线以下的图形面积(AUC: Area Under Curve, also AUROC)是对模型准确率的衡量
模型选择
假如我们有两个模型,M1和M2, 使用交叉验证获得相应的误差,那么结果也有可能是巧合,此时应该使用统计学分析两个模型的结果是否有统计学意义,如果没有,那么他们之间的差距很有可能是意外发生的。
最好的机器学习模型
有一种衡量标准是泛化误差:模型对未知数据的预测能力