机器学习算法评估与优化策略
1 机器学习诊断
1.1 数据集
-
训练集70%-测试集30%
通过训练集让我们的模型学习得出其参数后,对测试集运用该模型。 -
训练集60%-交叉验证集20%-测试集20% ✓ \checkmark ✓
假设我们要在10个不同次数的二项式模型之间进行选择,模型选择的方法为:
- 使用训练集训练出10个模型
- 用10个模型分别对交叉验证集计算得出交叉验证误差
- 选取代价函数值最小的模型
- 用步骤3中选出的模型对测试集计算得出推广误差
- 对于比较大的数据集 (如10000000) ,只需保证交叉验证集和测试集各有10000个样本,其余都作为训练集
1.2 误差
-
对于回归模型,我们可以计算 代价函数 J J J (未正则化);
-
对于分类模型,我们除了可以计算 代价函数 J J J (未正则化) 外,还可以计算测试集 误分类比率.
当分类出现了既不希望出现的错误分类 (如在识别猫的例子中,把porn标记为了猫),那么可以适当修改误差指标,加大对porn的误差惩罚权重:
e r r o r = 1 ∑ ω i ∑ ω i I { y ^ i ≠ y i } , ω i = { 1 x i i s n o t p o r n 10 , x i i s p o r n \begin{aligned} error &= \frac{1}{\sum\omega_{i}}\sum\omega_{i}I\{\hat{y}_{i}\neq y_{i}\}, \\\\ \omega_{i} &= \begin{cases}1 & x_{i}\ is\ not\ porn \\ 10, & x_{i}\ is\ porn \end{cases} \end{aligned} errorωi=∑ωi1∑ωiI{y^i=yi},={110,xi is not pornxi is porn
1.3 诊断偏差、方差问题
高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。
- 训练集误差大,交叉验证集误差和训练集误差近似时:高偏差/欠拟合
- 交叉验证集误差远大于训练集误差时:高方差/过拟合
1.4 利用学习曲线诊断
学习曲线是学习算法的一个很好的合理检验(sanity check)。学习曲线是将训练集误差 J t r a i n J_{train} Jtrain和交叉验证集误差 J c v J_{cv} Jcv作为训练集样本数量 m m m的函数绘制的图表。
-
高偏差:训练集和交叉验证集误差都很高,即使增加更多训练数据也不能提高算法效果。
-
高方差:假设我们使用一个非常高次的多项式模型,并且正则化非常小,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
2 策略
-
解决高偏差/欠拟合/模型过于简单:
尝试增加多项式特征、尝试获得更多的特征、尝试减少正则化程度 λ \lambda λ
-
解决高方差/过拟合/模型过于复杂:
获得更多的训练样本、尝试减少特征的数量、尝试增加正则化程度 λ \lambda λ
神经网络的方差和偏差:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小。使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。
对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数,为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络。
3 查全率和查准率 (Precision/Recall)
查全率、查准率

f1:查全率、查准率的调和平均
2
f
1
=
1
P
r
e
c
i
s
i
o
n
+
1
R
e
c
a
l
l
\frac{2}{f1} = \frac{1}{Precision}+\frac{1}{Recall}
f12=Precision1+Recall1
本文探讨了机器学习算法的评估和优化策略,包括数据集划分、误差分析、诊断偏差和方差问题以及学习曲线的应用。针对高偏差和高方差,提出了相应的解决方案,并讨论了查全率和查准率在评估中的作用。

2934

被折叠的 条评论
为什么被折叠?



