出现过拟合的原因:
a) 在进行数据挖掘或者机器学习模型建立的时候,假设数据满足独立同分布。即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型。即使用已经产生的数据去训练,然后使用该模型去拟合未来的数据。但是一般独立同分布的假设往往不成立,即数据的分布可能会发生变化。
b) 在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(overfitting)。
c) 模型建立的太复杂
如何防止过拟合:
a) 正则化(Regularization):最常见方法便是:正则化,即在对模型的目标函数(objective function)或代价函数(cost function)加上正则项。
b) 数据集扩增(Data augmentation):在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(overfitting)。
c) early stopping、Dropout等
如何判断是否过拟合:
随着模型训练的进行,模型的复杂度会增加,此时模型在训练数据集上的训练误差会逐渐减小,但是在模型的复杂度达到一定程度时,模型在验证集上的误差反而随着模型的复杂度增加而增大。此时便发生了过拟合,即模型的复杂度升高,但是该模型在除训练集之外的数据集上却不work。
训练数据不够怎么处理:
我们在使用训练数据训练模型,通过这个模型对将来的数据进行拟合,而在这之间有一个假设便是,训练数据与将来的数据是独立同分布的。即使用当前的训练数据来对将来的数据进行估计与模拟,而更多的数据往往估计与模拟地更准确。因此,更多的数据有时候更优秀。数据机扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:
a) 从数据源头采集更多数据
b) 复制原有数据并加上随机噪声
c) 重采样
d) 根据当前数据集估计数据分布参数,使用该分布产生更多数据等
e) 对训练数据进行左右对称以及平移变换
f) 对像素进行PCA变换,增加主成分,构造新样本