机器学习算法评估与优化策略
1 机器学习诊断
1.1 数据集
- 使用训练集训练出10个模型
- 用10个模型分别对交叉验证集计算得出交叉验证误差
- 选取代价函数值最小的模型
- 用步骤3中选出的模型对测试集计算得出推广误差
1.2 误差
-
对于线性回归模型,我们利用计算**代价函数J (未正则化) **
-
对于逻辑回归模型,我们除了可以计算代价函数J (未正则化)外,还可以计算测试集误分类比率。
代价函数J (未正则化)
Jtrain(θ)Jcv(θ)Jtest(θ)=−mtrain1i=1∑mtrain{yiloghθ(xi)+(1−yi)log(1−hθ(xi))}=−mcv1i=1∑mcv{yiloghθ(xi)+(1−yi)log(1−hθ(xi))}=−mtest1i=1∑mtest{yiloghθ(xi)+(1−yi)log(1−hθ(xi))}
误分类比率
error(hθ(x),y)errortrain(θ)errorcv(θ)errortest(θ)={1,0,∣hθ(x)−y∣>0.5∣hθ(x)−y∣≤0.5=mtrain1i=1∑mtrainerror(hθ(xi),yi)=mcv1i=1∑mcverror(hθ(xi),yi)=mtest1i=1∑mtesterror(hθ(xi),yi)
1.3 诊断偏差、方差问题
高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。
- 训练集误差大,交叉验证集误差和训练集误差近似时:高偏差/欠拟合
- 交叉验证集误差远大于训练集误差时:高方差/过拟合
1.4 利用学习曲线诊断
学习曲线是学习算法的一个很好的合理检验(sanity check)。学习曲线是将训练集误差Jtrain和交叉验证集误差Jcv作为训练集样本数量m的函数绘制的图表。
2 策略
神经网络的方差和偏差:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小。使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。
对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数,为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络。
3 查全率和查准率 (Precision/Recall)
查全率、查准率

f1:查全率、查准率的调和平均
f12=Precision1+Recall1