社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习知识点汇总-机器学习基础(14)

深度学习模型优化 • 4 年前 • 264 次点击  

2.14 欠拟合与过拟合

欠拟合:顾名思义,就是没有拟合好,要么没有很好的收敛,要么模型容量太小,无法收敛到一个满意的解。
过拟合:顾名思义,就是拟合过头了,记住了训练集的样本,对于验证集和测试集的效果很差。

图1 欠拟合与过拟合
  • 模型欠拟合:在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;
  • 模型过拟合:在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
  • 模型正常:在训练集以及测试集上,同时具有相对较低的偏差以及方差。
图2 欠拟合与过拟合
  • 模型欠拟合:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
  • 模型过拟合:模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
  • 模型正常:模型复杂程度控制在点B处为最优。(其实可以对应early-stop)
图3 欠拟合与过拟合
  • 模型欠拟合:模型在点C处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
  • 模型过拟合:模型在点A处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。 它通常发生在模型过于复杂的情况下,如参数过多等,会使得模型的预测性能变弱,并且增加数据的波动性。虽然模型在训练时的效果可以表现的很完美,基本上记住了数据的全部特点,但这种模型在未知数据的表现能力会大减折扣,因为简单的模型泛化能力通常都是很弱的。
  • 模型正常:模型复杂程度控制在点B处为最优。

那么面对欠拟合和过拟合,应该怎么做呢?

欠拟合:

  • 添加其他特征项。
    组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。
  • 添加多项式特征。
    例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
  • 可以增加模型的复杂程度。
  • 减小正则化系数。
    正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

过拟合:

  • 重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据。
  • 增加训练样本数量。
  • 降低模型复杂程度。
  • 增大正则项系数(与欠拟合相反)。
  • 采用dropout方法,dropout方法,通俗的讲就是在训练的时候让神经元以一定的概率不工作。
  • early stopping。
  • 减少迭代次数。
  • 增大学习率。
  • 添加噪声数据。
  • 树结构中,可以对树进行剪枝。
  • 减少特征项。

欠拟合和过拟合这些方法,需要根据实际问题,实际模型,进行选择。(这个就和经验有关系了)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33297
 
264 次点击