机器学习建模策略
前言
在应用机器学习算法解决问题时,大多数情况下不会第一次使用算法就得到很好的效果,需要逐步进行改进。这时,明白怎样选择一条最合适、最正确的道路是很重要的。这里,有一系列简单的方法能让你事半功倍。
一、利用交叉验证集进行模型选择
对于同一问题,我们可能会有多种方法进行建模,这时我们需要从中选择一种误差小,同时具有普适性的方法,使得该方法不仅能适应训练集数据,还能推广至一般情况。
模型选择方法如下:(比如将数据60%作为训练集,20%作为交叉验证集,20%作为测试集。)
Step 1: 使用训练集训练出待选的多个模型;
Step 2: 用这些模型分别对交叉验证集计算得出交叉验证误差(代价函数的值);
Step 3: 选取代价函数值最小的模型;
Step 4: 用 step 3 中选出的模型对测试集计算得出推广误差(代价函数的值)。
二、判断欠拟合/过拟合并改进
1.欠拟合/过拟合的特征
① 误差大/方差大
欠拟合: 欠拟合时,模型拟合效果差,误差大;
过拟合: 过拟合时,模型拟合效果过于好,方差大。
② 与多项式次幂 d d d 的关系
将训练集和交叉验证集的代价函数误差与多项式的次数
d
d
d 绘制在同一张图表上,对于训练集,当
d
d
d 较小时,模型拟合程度更低,误差较大;随着
d
d
d 的增长,拟合程度提高,误差减小。 对于交叉验证集,当
d
d
d 较小时,模型拟合程度低,误差较大;但是随着
d
d
d 的增长,误差呈现先减小后增大的趋势,转折点是模型训练数据集开始过拟合的时候。
欠拟合: 训练集误差和交叉验证集误差近似时;
过拟合: 交叉验证集误差远大于训练集误差时。
③ 与正则化系数 λ \lambda λ 的关系
同时将训练集和交叉验证集模型的代价函数误差与
λ
\lambda
λ 的值绘制在一张图表上,当
λ
\lambda
λ 较小时,训练集误差较小(过拟合)而交叉验证集误差较大 ;随着
λ
\lambda
λ 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加。
2.用学习曲线判断欠拟合/过拟合
学习曲线是将训练集误差和交叉验证集误差作为训练集样本数量
m
m
m 的函数绘制的图表。当训练较少行数据的时候,训练的模型将能够非常完美地适应较少的训练数据,但是训练出来的模型却不能很好地适应交叉验证集数据或测试集数据。
欠拟合: 随着增加数据到训练集,误差仍然没有太大改观。
过拟合: 当交叉验证集误差远大于训练集误差时,训练集增加更多数据可以提高模型的效果。
3.对应的改进方法
欠拟合改进策略:
① 尝试获得更多的特征;
② 尝试增加多项式特征;
③ 尝试减少正则化程度 λ \lambda λ。过拟合改进策略:
① 获得更多的训练样本;
② 尝试减少特征的数量;
③ 尝试增加正则化程度 λ \lambda λ。
三、误差分析
人工检查交叉验证集中算法产生预测误差的样本,看看这些样本是否有某种系统化的趋势,从而决定优化的方式。
类偏斜的误差度量
类偏斜(skewed classes)问题: 训练集中有非常多的同一种类的样本,只有很少或没有其他类的样本。
例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有0.5%。然而我们通过训练而得到的神经网络算法却有1%的误差。这时,误差的大小是不能视为评判算法效果的依据的。
这时可以使用 查准率(Precision) 和 查全率(Recall) 来评估。
首先,将算法预测的结果分成四种情况:
- 正确肯定(True Positive,TP): 预测为真,实际为真;
- 正确否定(True Negative,TN): 预测为假,实际为假;
- 错误肯定(False Positive,FP): 预测为真,实际为假;
- 错误否定(False Negative,FN): 预测为假,实际为真。
真实值 \ 预测值 | Positive | Negative |
---|---|---|
Positive | TP | FN |
Negative | FP | TN |
查准率(Precision)=TP/(TP+FP)
例如,在所有预测为恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
查全率(Recall)=TP/(TP+FN)
例如,在所有实际上为恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
查准率和查全率之间的权衡
如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),即我们希望更高的查准率,我们可以使用比0.5更大的阀值,如0.7,0.9。这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。 如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比0.5更小的阀值,如0.3。
我们可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同。
计算 F1 值(F1 Score) 可以帮助我们选择这个阀值,计算公式如下,选择使得F1值最高的阀值。
F
1
S
c
o
r
e
:
2
P
R
P
+
R
F1\ Score: 2\frac{PR}{P+R}
F1 Score:2P+RPR
参考内容:吴恩达机器学习笔记第6周