机器学习算法的效果评估和优化方法


当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以做什么?

1.获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可考虑先采用下面的几种方法。

2.尝试减少特征的数量

3.尝试获得更多的特征

4.尝试增加多项式特征

5.尝试减少归一化程度λ

6.尝试增加归一化程度λ

我们不应该随机选择上面的某种方法来改进我们的算法,而是运用一些机器学习诊断法来帮助我们知道上面哪些方法对我们的算法是有效的。通常会从以下几个角度入手,差不一定是数据集越大效果越好。

 一. 算法的性能评估:

a.      评估假设函数是否过按拟合?

对h(x)作图是一种方法,通常特征量多的时候,作图基本不可能。

把数据分为训练集和测试集7/3分;

 机器学习算法的效果评估和优化方法_第1张图片

b.      模型选择和交叉验证集

假如要在多个不同的二项式模型之间选择,需要引入交叉验证集来辅助选择模型。即训练集/交叉验证集/测试集为6/2/2分。

模型选择的方法为:

1.使用训练集训练出10个模型

2.用10个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)

3.选取代价函数值最小的模型

4.用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值)

  机器学习算法的效果评估和优化方法_第2张图片

c.      诊断偏差和方差

机器学习算法的效果评估和优化方法_第3张图片

对于训练集,当d较小时,模型拟合程度更低,误差较大;随着d的增长,拟合程度提高,误差减小。

对于交叉验证集,当d较小时,模型拟合程度低,误差较大;但是随着d的增长,误差呈现先减小后增大的趋势,转折点是我们的模型开始过拟合训练数据集的时候。

如果我们的交叉验证集误差较大,我们如何判断是方差还是偏差呢?

训练集误差和交叉验证集误差近似时:偏差/欠拟合

交叉验证集误差远大于训练集误差时:方差/过拟合

d.      归一化和偏差/方差

回归中为了防止过拟合,引入了lambda。但它的值过大或过小,对结果也会有一定影响。

我们选择一系列的想要测试的λ值,通常是0-10 之间的呈现2倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12个)。

选择λ的方法为:

1.使用训练集训练出12个不同程度归一化的模型

2.用12模型分别对交叉验证集计算的出交叉验证误差

3.选择得出交叉验证误差最小的模型

4.运用步骤3中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与λ的值绘制在一张图表上:

 机器学习算法的效果评估和优化方法_第4张图片

l  当λ较小时,训练集误差较小(过拟合)而交叉验证集误差较大

l  随着λ的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加

e.      学习曲线

学习曲线是学习算法的一个很好的合理检验(sanity check)。学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。

高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助。

高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果。

机器学习算法的效果评估和优化方法_第5张图片

二. 总结:

针对本文开头列的几种方法,可以在分析确定发球高偏差不是高方差后再针对性地入手优化。本描述对神经网络也同样适用。

  1. 尝试获得更多的特征——解决高偏差
  2. 尝试增加多项式特征——解决高偏差
  3. 尝试减少归一化程度λ——解决高偏差
  4. 获得更多的训练实例——解决高方差
  5. 尝试减少特征的数量——解决高方差
  6. 尝试增加归一化程度λ——解决高方差


你可能感兴趣的:(机器学习,机器学习,算法,优化,偏差,方差)