目录
一、机器学习优化与诊断
当设计出来的算法经过训练后始终无法得到预期效果时,通常人们会选择以下优化方法对模型j进行改善:
1. 收集更多的训练样本
2.尝试增加或减少一些数据特征
3.尝试增加一些特征的多项式为新特征
4.如果使用了正则化,增大或减小的值 。等等
但不同的优化方法只能在特定情况下才有效。面对实际问题,诊断出具体情况,来选择合适改进方法就称为机器学习诊断。
二、诊断与优化的工具
2.1损失函数
损失函数在机器学习中有很重要的地位,其主要有两个作用:
1.在训练的过程中,通过对损失函数和训练集数据为算法得出模型的训练误差,由此提供梯度,训练参数θ。
2.在训练完成后,将算法运用在测试集上,运用损失函数可评价模型的泛化误差。
一般而言,常用的损失函数为:
最小均方误差(MSE):
(公式2.2)
二元交叉熵损失函数(binary cross entropy):
(公式6.3)
接下来的讨论中将简称样本的误差为 ,则训练误差与测试误差分别为:
(公式 10.1.1)
(公式 10.1.2)
对误差的分析在诊断法中有很重大的作用,例如由过拟合的讨论中可看出,训练误差与测试误差存在一定的差距。
另外,在分类问题中还可以用误分类的比率来做误差,即对每个实例计算(公式 10.1.3)再求平均数。
(公式 10.1.3)
2.2数据集划分
一般而言,在训练模型时会将样本数据分为训练集和测试集(通常2/8分,或者3/7分),训练集训练模型参数,测试集评价模型。但在实际运用算法时,会有很多算法无法控制的“超参数”,就回归问题举例,假设数据只有一个特征项,则拟合函数具体需要是几次项函数是无法预先估计,也无法通过算法来决定的。
为了解决超参数问题,会在数据集划分时提出“交叉验证集”(Train_validation_Test Sets)的概念。将数据划分为训练集/交叉验证集/测试集(可选比例为6/2/2)。
在具体训练过程为:
1,同时训练多个不同“超参数”所对应的模型,例如选择不同最高次幂的多项式来模型。
......
2,由训练集为每个模型训练出最优参数,通过交叉验证集来选择在交叉验证集上误差最小的模型,该过程可视为对“超参数”的训练。
3,由最终选出来的模型在测试集合上面测试误差来评价其泛化能力。
总结一下: 训练集训练模型参数 θ,交叉验证集选择模型超参数(例如多项式次幂d),测试集用来评价模型泛化能力。
三、具体“病症”
3.1偏差与方差(bias and variance)
在对超参数进行选择的时候,就会遇到之前讨论过的过拟合与欠拟合问题,也叫偏差与方差,其关系如下图:
通过调整不同的超参数,测试其与以及的关系,可以刻画出如下图像10-2,当模型复杂度为a时,以及均较高,于是称为高偏差情况,此时模型欠拟合;当模型复杂度为b时,较高而较低,所以称之为高方差情况,此时模型过拟合。
3.2 正则化与偏差,方差
假设现在已经选定一个较为复杂的模型,通过适当的正则化参数也可得到较好的训练结果。
正则化参数是一个超参数,其合适的值也可以通过验证集来选取,方法与选择多项式的项数的方法类似。可得出图像10-4。
当较小时(如=a),模型复杂度过高,较高而较低,所以称之为高方差情况,此时模型过拟合。当较大时(如=b),以及均较高,于是称为高偏差情况,此时模型欠拟合。
四、诊断法---学习曲线
当已有一个训练模型,希望得到改进时首先应当明确现在是过拟合还是欠拟合,方法就是使用不同的样本数量来对当前模型,画出如图10-5中 有关样本数量与以及的关系图,该关系曲线称之为学习曲线(Learning Curves)。
如图10-5所示,当不断增加样本数量后,与在较高的情况下趋于相同,则说明模型学习能力有限,处于高偏置的情况,也就是欠拟合。
如图10-6所示,当不断增加样本数量后,与之间的差距较大,且依然处于下降的趋势,有上升的趋势,则说明模型还有学习的潜能,处于高方差的情况,也就是过拟合。
五、下一步
当由以上方法诊断出当前模型所属的情况,就可以“对症下药”,具体有:
如果模型欠拟合,则可以采用的措施有: 1, 尝试增加特征数量。2,尝试增长多项式的最高次幂数。3,减少的值。等。
如果模型过拟合,则可以采用的措施有: 1, 尝试减少特征数量。2,尝试减少多项式的最高次幂数。3,增大的值。
4.收集更多数据。等。
运用实例: 如果采用的算法是神经网络,则当模型较为简单时有训练和计算都便捷的优点,但容易欠拟合。如果模型较为复杂,准确率高,但计算量大,易于过拟合。训练神经网络时可以通过划分数据集来调整超参数,例如隐藏层的层数,以及各层的神经元个数。同时在训练的过程中还可以通过正则化来调整各参数值。
六、总结
在需要改进现有模型时,可通过画学习曲线,划分数据集等方式来诊断模型情况,由此制定合适的改进方案。