机器学习中模型训练的拟合问题
机器学习中模型训练的拟合问题
拟合问题简介
拟合问题可以归纳为模型对数据的规律学得好不好,对于学得好的就称为拟合适中,对于学得不好的可以分类两种:过拟合,欠拟合。
拟合就是用模型函数去逼近数据之间的关系,拟合程度反映了模型函数和实际数据的贴合程度。
过拟合问题
过拟合的意思是模型在数据上表现非常好,但是在测试数据上表现很差。通常是原因是在训练集合上拟合太高,以至于学习到了集合上的噪音细节,导致推广到新数据时出现很大的偏差。
过拟合现象说明
下面举例说明,以bigml上的训练实例说明,下面的案例是一个用于预测预定酒店用户,是否会预定后又取消订单的预测模型。
模型数据集如下图。

预测量是reservation_status的值。

准备好数据集后,就可以开始模型训练,这里的模型使用了决策树模型。下图是我按比例8:2的训练和验证的评估分数。

从图中可以看出预测准确性达到了惊人的100%,这一看就不太可能,所以可能出现了过拟合问题,吸收了数据集噪音导致。
再看它的系数与曲线。

这是评估系数,可见准确性只有42%,说明模型的数据集是有问题的,不能达到合适的预测效果。
如何解决过拟合问题
在这个案例中,使用了决策树的模型,打开决策树查看决策分支。

一眼可见问题出在了标记数据上了,这里的reservation_status和is_canceled,实际上都是输出参数标记,而模型训练时却把它识别为输入,从而导致问题,以至于其他参数标记根本就没有参与计算。
对于这种问题,我们把数据集中的is_canceled剔除出训练标记,更新完成后,再重新训练,并评估分数,可以得到如下的结果。

这里的准确度已经比较符合正常情况,准确度来说,相对理想,再看看它的评估参数。

评估系数的准确性也能达到80%以上,这是非常好的结果。
可以在观察一下它的决策树形态,如下图所示。

看起来一切完美,这里成功消除了过拟合问题。
欠拟合问题
欠拟合问题是在训练数据集和测试数据集上都表现不好,因为拟合程度太低,无法从中找到数据的规律。
欠拟合现象说明
仍然用bigml来说明,我找了一份欠拟合的数据,在bigml上制作好数据集,并进行训练模型,仍然使用决策树模型。

评估模型参数的分数如下图。

准确度参数看起来并不是特别低,但是它的Phi系数值只有0.3,这说明预测值和真实值的关联度非常低,这种模型也是有问题的,不能进行预测。
Phi系数的含义
Phi系数表示预测结果和真实情况的关联程度,+1表示完美预测,0表示完全随机,-1表示完全颠倒,系数值一般介于-1至1之间,越接近1越好。
如何解决欠拟合问题
对于欠拟合问题的解决方法通常有多种。第一种是添加或减少数据标记(特征太少的数据集添加特征,特征太多的减少特征),更新数据特征数量,这样模型训练的时候就可以学习到数据规律。第二种方法是更换其他的模型进行尝试,因为不同的模型对于不同的数据集有偏好,例如数据集是简单的线形数据特征,那么它更适合线形回归或逻辑回归这类线形预测模型,如果有很多数据特征,且特征不呈现线形关系,那么决策树就更加适合。第三种方法是如果样本数量太少,可以适当增加样本数量,这样也有助于模型从数据集中学习到规律。
总结
总之在机器学习中,对于数据集中遇到过拟合和欠拟合问题,都是可以模型训练,再评估,看出它的结果。通常过拟合问题都是数据集的标记问题,进行恰当修正都可以解决。欠拟合问题需要进一步观察,再决定是否是模型选择有问题,还是数据集特征不够,或者样本空间太小。