机器学习算法评估与优化策略

机器学习算法评估与优化策略

1 机器学习诊断

1.1 数据集

  • 训练集70%-测试集30%
    通过训练集让我们的模型学习得出其参数后,对测试集运用该模型。

  • 训练集60%-交叉验证集20%-测试集20% \checkmark
    假设我们要在10个不同次数的二项式模型之间进行选择,模型选择的方法为:

  1. 使用训练集训练出10个模型
  2. 用10个模型分别对交叉验证集计算得出交叉验证误差
  3. 选取代价函数值最小的模型
  4. 用步骤3中选出的模型对测试集计算得出推广误差

1.2 误差

  1. 对于线性回归模型,我们利用计算**代价函数JJ (未正则化) **

  2. 对于逻辑回归模型,我们除了可以计算代价函数JJ (未正则化)外,还可以计算测试集误分类比率

    代价函数JJ (未正则化)
    Jtrain(θ)=1mtraini=1mtrain{yiloghθ(xi)+(1yi)log(1hθ(xi))}Jcv(θ)=1mcvi=1mcv{yiloghθ(xi)+(1yi)log(1hθ(xi))}Jtest(θ)=1mtesti=1mtest{yiloghθ(xi)+(1yi)log(1hθ(xi))} \begin{aligned} J_{train}(\theta) &= -\frac{1}{m_{train}}\sum_{i=1}^{m_{train}}\left\{y_{i}\log h_{\theta}(x_{i})+(1-y_{i})\log(1-h_{\theta}(x_{i}))\right\} \\ J_{cv}(\theta) &= -\frac{1}{m_{cv}}\sum_{i=1}^{m_{cv}}\left\{y_{i}\log h_{\theta}(x_{i})+(1-y_{i})\log(1-h_{\theta}(x_{i}))\right\} \\ J_{test}(\theta) &= -\frac{1}{m_{test}}\sum_{i=1}^{m_{test}}\left\{y_{i}\log h_{\theta}(x_{i})+(1-y_{i})\log(1-h_{\theta}(x_{i}))\right\} \\ \end{aligned}

    误分类比率
    error(hθ(x),y)={1,hθ(x)y>0.50,hθ(x)y0.5errortrain(θ)=1mtraini=1mtrainerror(hθ(xi),yi)errorcv(θ)=1mcvi=1mcverror(hθ(xi),yi)errortest(θ)=1mtesti=1mtesterror(hθ(xi),yi) \begin{aligned} error(h_{\theta}(x),y) &= \begin{cases} 1, & \mid{h_{\theta}(x)-y}\mid > 0.5 \\ 0, & \mid{h_{\theta}(x)-y}\mid \leq 0.5 \end{cases} \\ \\ error_{train}(\theta) &= \frac{1}{m_{train}}\sum_{i=1}^{m_{train}}error(h_{\theta}(x_{i}),y_{i}) \\ error_{cv}(\theta) &= \frac{1}{m_{cv}}\sum_{i=1}^{m_{cv}}error(h_{\theta}(x_{i}),y_{i}) \\ error_{test}(\theta) &= \frac{1}{m_{test}}\sum_{i=1}^{m_{test}}error(h_{\theta}(x_{i}),y_{i}) \end{aligned}

1.3 诊断偏差、方差问题

高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。

  • 训练集误差大,交叉验证集误差和训练集误差近似时:高偏差/欠拟合
  • 交叉验证集误差远大于训练集误差时:高方差/过拟合

1.4 利用学习曲线诊断

学习曲线是学习算法的一个很好的合理检验sanity check)。学习曲线是将训练集误差JtrainJ_{train}和交叉验证集误差JcvJ_{cv}作为训练集样本数量mm的函数绘制的图表。

  • 高偏差:训练集和交叉验证集误差都很高,即使增加更多训练数据也不能提高算法效果。

  • 高方差:假设我们使用一个非常高次的多项式模型,并且正则化非常小,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。

2 策略

  • 解决高偏差/欠拟合/模型过于简单:

    尝试增加多项式特征、尝试获得更多的特征、尝试减少正则化程度λ\lambda

  • 解决高方差/过拟合/模型过于复杂:

    获得更多的训练样本、尝试减少特征的数量、尝试增加正则化程度λ\lambda

神经网络的方差和偏差:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小。使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。
对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数,为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络。

3 查全率和查准率 (Precision/Recall)

查全率、查准率
机器学习算法评估与优化策略
f1:查全率、查准率的调和平均
2f1=1Precision+1Recall \frac{2}{f1} = \frac{1}{Precision}+\frac{1}{Recall}