机器学习——当预测结果误差很大时怎么办等多种问题的解决方案

1、当预测结果误差很大时怎么办?

①过拟合解决办法
  • 可以去增加更多的训练数据
  • 可以尝试简化模型
  • 数据增强人为扩展数据量以增加数据量来解决过拟合
  • 正则化:通过减少每个节点的权重来解决过拟合
  • 正则参数λ:如果有正则项则可以考虑增大正则项参数λ
  • Dropout(随机失活):专门用在神经网络的正规化的方法,叫作Dropout。在训练时,每次随机(如50%概率)忽略隐层的某些节点。流程是每个网络只会见过一个训练数据(每次都是随机的新网络),而不同模型之间权值共享。随机地删除网络中的一般隐藏的神经元,这样可以迫使节点分散权重(使权重降低,然后解决过拟合),然后使模型泛化性更强。
  • early stopping(早停):在训练中计算模型在验证集上的error,当模型在验证集上的表现开始下降的时候,停止训练,这样就能避免继续训练导致过拟合的问题
  • batch normalization
②欠拟合解决办法
  • 可以去尝试使用更复杂的模型
  • 可以增加新特征
  • 正则参数λ:如果有正则项则可以考虑减小正则项参数λ

2、如何评估算法?(以logistics regression为例)

  1. 先将数据集随机的按3/7分,划分为训练集测试集
  2. 通过训练集训练的出使cost function最小的θ
  3. 将得到的θ带入新的cost function,得到 J t e s t ( θ ) = − 1 m t e s t ∑ i = 1 m t e s t y t e s t ( i ) l o g h θ ( x t e s t ( i ) ) + ( 1 − y t e s t ( i ) ) l o g h θ ( x t e s t ( i ) ) J_{test}(\theta)=-\frac{1}{m_{test}}\sum_{i=1}^{m_{test}}y_{test}^{(i)}logh_{\theta}(x_{test}^{(i)})+(1-y_{test}^{(i)})logh_{\theta}(x_{test}^{(i)}) Jtest(θ)=mtest1i=1mtestytest(i)loghθ(xtest(i))+(1ytest(i))loghθ(xtest(i))
  4. 然后计算分类误差率misclassification error,
    e r r ( h θ ( x ) , y ) = { 1 h(x)>=0.5,y=0 or h(x)<=0.5,y=1 0 otherwise err(h_{\theta}(x),y)= \begin{cases} 1& \text{h(x)>=0.5,y=0 or h(x)<=0.5,y=1}\\ 0& \text{otherwise} \end{cases} err(hθ(x),y)={10h(x)>=0.5,y=0 or h(x)<=0.5,y=1otherwise

T e s t E r r o r = 1 m t e s t ∑ i = 1 m t e s t e r r ( h θ ( x ) , y ) TestError=\frac{1}{m_{test}}\sum_{i=1}^{m_{test}}err(h_{\theta}(x),y) TestError=mtest1i=1mtesterr(hθ(x),y)

3、有时会把数据集划分为训练集,交叉验证集和测试集

  • 训练集用来fit出当前最优的θ(此时有多个 h θ ( x ) h_{\theta}(x) hθ(x)
  • 交叉验证集用来得到最优的 h θ ( x ) h_{\theta}(x) hθ(x)
  • 测试集用来测试当前模型 h θ ( x ) h_{\theta}(x) hθ(x)拟合情况
  • 最重要的是要保证验证集测试集是来自同一分布

4、判断当前算法是欠拟合(高偏差)或过拟合(高方差)

  • 训练集 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ),而 J c v ( θ ) ≈ J t r a i n ( θ ) J_{cv}(\theta){\approx}J_{train}(\theta) Jcv(θ)Jtrain(θ)的话,则是欠拟合
  • 训练集 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ),而 J c v ( θ ) > > J t r a i n ( θ ) J_{cv}(\theta){>>}J_{train}(\theta) Jcv(θ)>>Jtrain(θ)的话,则是过拟合
  • 训练集 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ),而 J c v ( θ ) > > J t r a i n ( θ ) J_{cv}(\theta){>>}J_{train}(\theta) Jcv(θ)>>Jtrain(θ)的话,则是过拟合和欠拟合
  • 训练集 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ),而 J c v ( θ ) ≈ J t r a i n ( θ ) J_{cv}(\theta){\approx}J_{train}(\theta) Jcv(θ)Jtrain(θ)的话,则是低偏差和低方差
  • 判断训练集 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)验证集 J c v ( θ ) J_{cv}(\theta) Jcv(θ)高低的前提是基于base error上的,若base error等于10%的话,那 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)=8%也算低 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)
  • 注意 J t e s t ( θ ) J_{test}(\theta) Jtest(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)不一定相同(在正则化时就不同)

5、学习曲线

一般使用 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)来绘制学习曲线

  • 若当前模型处于欠拟合,那么增加数据量不会改变它的状态
    在这里插入图片描述
  • 而对过拟合来说,增加数据量则是有效
    在这里插入图片描述

6、如何选择神经网络的结构

  • 可以选择 “小”的神经网络:一层hidden layer,少量的hidden units或者一个hidden unit,它的特点是计算量小,易发生欠拟合
  • 当然也可以用 “大”的神经网络:一层包含多个hidden units的hidden layer,或多层的hidden layers,每层节点数相同,它的特点是计算量大,易发生过拟合,不过过拟合可以通过正则化来解决,当然了hidden layer的层数可以通过把数据划分为训练集、交叉验证集和测试集来解决这个问题
    在这里插入图片描述

7、如何系统的进行模型的训练

  • 先使用一个可以让你快速运行的简单的模型,而不是一个非常复杂的模型。然后交叉验证数据
  • 绘出学习曲线,来判断是欠拟合或过拟合并分别对症下药
  • 误差分析:它是一种手动的去检查算法所出现的失误的过程。即手动的检查模型预测失败的数据,观察这些数据有什么模式,通过这样它会告诉你如何去改进我们的算法。一般在交叉验证集上进行误差分析
  • 不确定那些方式是否有用时,可以算出不同方式的误差度量值,然后通过该值判断哪种方式更好(控制变量法)
    1. 查准率-Precision:是指在所有预测为1的样本中预测正确的比率
    2. 查全率-Recall:是指在所有真正为1的样本中预测正确的比率
    3. 若一个算法的调和平均数高则该算法性能就比较好 F 1 s c o r e = 2 P R P + R F_1 score=\frac{2PR}{P+R} F1score=P+R2PR

本文只用于个人学习与记录

### 机器学习中的误差模型 #### 误差模型的概念 在机器学习领域,误差模型指的是用来描述预测与真实之间差异的统计模型。这种差异通常被称为误差或残差。误差可以分为两类:偏差(Bias)和方差(Variance)。偏差衡量的是模型预测平均与目标变量实际之间的差距;而方差则表示当训练数据集发生变化,模型预测结果的变化程度。 为了更好地理解和处理这些误差,在建立任何类型的监督学习算法之前,了解并分析其潜在的误差源至关重要。这不仅有助于评估现有系统的性能表现,还可以指导如何改进模型结构以及调整参数设置以达到更优的效果[^1]。 #### 误差模型的应用场景 ##### 调整超参数优化 通过对不同配置下的模型进行交叉验证测试,并记录每次实验所产生的各类误差指标(如均方根误差RMSE、绝对平均误差MAE等),可以帮助研究者找到最佳组合方式使得最终得到的解决方案既具有良好的拟合度又具备足够的鲁棒性。 ##### 特征工程 基于已知的数据分布特性设计新的特征向量能够有效降低某些特定形式的噪声干扰所带来的负面影响。例如,在图像识别任务中引入边缘检测算子作为额外输入信息往往可以使卷积神经网络更容易捕捉到物体轮廓特征,进而提升分类精度。 ##### 集成方法的选择依据 像随机森林这样的集成学习技术之所以能在众多应用场景下取得优异成绩,很大程度上得益于内部机制巧妙地平衡了个体成员间的多样性与一致性关系——即通过增加单棵决策树的数量来减小总体估计过程中的波动范围,同借助投票表决等方式确保输出结论的一致性和可靠性[^2]。 ```python from sklearn.metrics import mean_squared_error, mean_absolute_error def evaluate_model_performance(y_true, y_pred): mse = mean_squared_error(y_true, y_pred) mae = mean_absolute_error(y_true, y_pred) print(f'Mean Squared Error: {mse}') print(f'Mean Absolute Error: {mae}') # 假设y_true 和 y_pred 是真实的标签列表和对应的预测列表 evaluate_model_performance([3, -0.5, 2], [2.5, 0.0, 2]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值