过拟合与欠拟合

1. 过拟合

1.1 过拟合的定义

定义1(摘自周志华机器学习):当学习器把训练样本学的“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这种现象称为过拟合。
定义2:具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。

1.2 过拟合的原因

  1. 训练数据中噪音干扰过大,使得学习器认为部分噪音是特征从而扰乱学习规则。
  2. 建模样本选取有误,例如训练数据太少,抽样方法错误,样本label错误等,导致样本不能代表整体。
  3. 模型不合理,或假设成立的条件与实际不符。
  4. 特征维度/参数太多,导致模型复杂度太高。

1.3 过拟合的解决办法

过拟合无法彻底避免,只能缓解。
从3个角度:
1)数据:

  • 从数据源头获取更多数据
  • 根据当前数据集估计数据分布参数,使用该分布产生更多数据。这个方法一般不用,因为估计参数分布的过程也会带入抽样误差。
  • 数据增强(Data Augmentation):通过一定规则扩充数据。如物体在图像中的位置、姿态、尺度、整体图片明暗度等都不会影响分类结果。我们可以通过图像平移、反转、缩放、切割等手段将数据库成倍扩充。
  • 保留验证集
  • 获取额外数据进行交叉验证

2)模型:

  • 降低模型复杂度:
    a. 对于神经网络:减少网络的层数、神经元个数等均可以限制网络的拟合能力。dropout,在向前传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型的泛化性更强,因为它不会太依赖某些局部的特征。。
    b. 对于决策树:限制树深,剪枝,限制叶节点数量。
    c. 增大分割平面间隔
  • 特征选择、特征降维
  • early stopping
  • 正则化(限制权值weight-decay):将权值的大小作为惩罚项加入到损失函数里。
  • 增加噪声:
    a. 在输入中加噪声
    在这里插入图片描述
    噪声会随着网络传播,按照权值的平方放大,并传播到输出层,会在输出中生成 ∑ i σ i 2 ⋅ w i 2 \sum_i \sigma^2_i \cdot w_i^2 iσi2wi2的干扰项。训练时减小损失函数时也会减小权值,与L2正则化有类似效果。
    b. 在权值上加噪声
    在初始化网络的时候,用0均值的高斯分布作为初始化
    c. 对网络等响应加噪声
    在前向传播的过程中,让某些神经元的输出变为random,从而打乱网络的训练过程,让训练更慢。

3)ensemble:

  • Bagging:从训练集中自助采样,训练多个相互独立的弱学习器,通过一定结合策略形成一个强学习器。
  • Boosting: 初始化训练一个基学习器→根据表现调整样本分布(预测错误的样本在后续收到更多关注)→训练下一个基学习器→多个学习器加权结合。

还有贝叶斯方法(现在还不会)。

2. 欠拟合

2.1 欠拟合的定义

欠拟合是指对训练样本的一般性质尚未学好。在训练集及测试集上的表现都不好。

2.2 欠拟合的原因

1)模型复杂度过低
2)特征量过少

2.3 欠拟合的解决办法

  • 增加特征数;
    当特征不足或者现有特征与样本标签的相关性不强时,模型易出现欠拟合。
    可以通过挖掘上下文特征,ID类特征,组合特征等新的特征,可以取得较好的效果。这属于特征工程相关的内容,如因子分解机,梯度提升决策树,deep_crossing都可以丰富特征。

  • 增加模型复杂度;
    模型简单时其表达能力较差,容易导致欠拟合,因此可以适当地增加模型复杂度,使模型拥有更强的拟合能力。
    如线性模型中添加高次项,神经网络中增加网络层数或神经元个数。尝试非线性模型,比如核SVM 、决策树、DNN等模型。

  • 减小正则化系数。
    正则化是用于防止过拟合的,但是当出现欠拟合时,就有必要针对性地减小正则化系数。

  • Boosting,Boosting 往往会有较小的 Bias。

3. 面试题

3.1 从Bagging和正则化的角度理解Dropout?

Bagging角度:Bagging“综合起来取平均”的策略通常可以有效防止过拟合问题。dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一些隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。
正则化角度:因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。

### 拟合过拟合的定义 拟合是指模型在训练阶段无法很好地捕捉数据中的模式,导致其在训练集测试集上都表现出较高的误差。这种情况通常发生在模型过于简单或者缺乏足够的训练时间时[^1]。具体表现为: - 训练误差高; - 测试误差也高; - 模型可能未充分利用输入特征。 相比之下,过拟合指的是模型在训练过程中过度适应了训练数据的特点,以至于它不仅学会了数据的真实规律,还学到了噪声其他无关的信息。这使得模型在面对新的、未曾见过的数据时性能显著下降[^3]。主要特点包括: - 训练误差低; - 测试误差高; - 对于新样本泛化能力差。 ### 拟合过拟合的区别 两者的根本区别在于它们如何处理训练数据以及由此产生的泛化效果不同。拟合意味着模型没有完全学到训练数据中的有用信息,而过拟合则表示虽然模型能够完美匹配训练数据,但它失去了对外部未知数据的良好预测能力[^4]。 ### 解决方法 针对上述两种情况有不同的解决方案: #### 防止拟合的方法: - 增加模型复杂度:比如增加神经网络层数或节点数。 - 提供更多高质量的训练样例给算法学习。 - 改善特征工程过程来提取更有意义的新特性。 #### 减少过拟合的技术有: - 数据增强(Data Augmentation),通过变换现有数据生成额外的有效实例。 - 正则化(Regularization),向损失函数加入惩罚项以抑制参数过大。 - Dropout技术,在深度学习框架下随机丢弃部分单元防止依赖单一路径。 - 使用交叉验证(Cross Validation)评估模型性能并调整超参直至找到最佳平衡点。 关于头歌平台的第一关练习涉及的内容主要是帮助理解基本概念并通过实践加深印象。完成该环节可以帮助学员直观感受调节某些因素会对最终结果造成的影响从而更好地掌握理论知识的实际运用场景。 ```python from sklearn.model_selection import train_test_split, cross_val_score from sklearn.linear_model import Ridge import numpy as np # 示例代码展示正则化的应用 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ridge_reg = Ridge(alpha=1.0) scores = cross_val_score(ridge_reg, X_train, y_train, cv=5) print(f'Cross-validation scores: {np.mean(scores)}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值