当前位置: 首页 > news >正文

机器学习笔记【Week6】

一、模型结果下一步

  • 训练模型得到结果后,常面临:模型性能不理想,下一步如何改进?

  • 通过对训练误差和验证误差的观察,判断是高偏差(欠拟合)还是高方差(过拟合)。

  • 一般步骤:

    • 计算训练误差和验证误差,不包含正则项。

    • 判断两者的大小和差距。

    • 根据判断选择策略:

      情况训练误差验证误差结论改进方向
      欠拟合(高偏差)模型能力不足增加特征,减小正则化
      过拟合(高方差)泛化能力差增加训练数据,增加正则化

二、评估假设的误差

  • 训练误差计算:在训练集上的平均平方误差(MSE),不含正则化项。

J train ( θ ) = 1 2 m train ∑ i = 1 m train ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{\text{train}}(\theta) = \frac{1}{2 m_{\text{train}}} \sum_{i=1}^{m_{\text{train}}} \left(h_\theta(x^{(i)}) - y^{(i)}\right)^2 Jtrain(θ)=2mtrain1i=1mtrain(hθ(x(i))y(i))2

  • 验证误差计算:在验证集上的平均平方误差(MSE),同样不含正则化项。

J cv ( θ ) = 1 2 m cv ∑ i = 1 m cv ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{\text{cv}}(\theta) = \frac{1}{2 m_{\text{cv}}} \sum_{i=1}^{m_{\text{cv}}} \left(h_\theta(x^{(i)}) - y^{(i)}\right)^2 Jcv(θ)=2mcv1i=1mcv(hθ(x(i))y(i))2

  • 关键点:评估时不要使用包含正则项的代价函数,因为正则项并不反映模型拟合效果,而是防止过拟合。

三、模型选择和交叉验证

为何需要交叉验证集?

  • 训练集用于训练模型。

  • 交叉验证集用于调超参数,避免用测试集调参造成测试结果偏差。

  • 测试集用于最后模型评估。

  • 调参流程

    • 选取一系列超参数组合(如 λ \lambda λ 正则化参数,或者多项式阶数 d d d)。
    • 对每组参数,训练模型 θ ( i ) \theta^{(i)} θ(i)
    • 计算对应交叉验证误差 J cv ( θ ( i ) ) J_{\text{cv}}(\theta^{(i)}) Jcv(θ(i))
    • 选择使交叉验证误差最低的参数。
    • 使用训练集 + 交叉验证集合并训练最终模型。
    • 在测试集上评估模型性能。

四、诊断偏差和方差

训练误差和验证误差的表现:

情况训练误差验证误差说明
高偏差模型欠拟合
高方差模型过拟合
适中模型拟合良好

调整建议

  • 高偏差时:
    • 增加模型复杂度(如使用多项式回归的更高阶)。
    • 减小正则化系数 λ \lambda λ
    • 添加更多特征。
  • 高方差时:
    • 增加训练数据量。
    • 增加正则化系数 λ \lambda λ
    • 简化模型(降阶、多项式次数减小等)。

五、正则化与偏差/方差权衡

  • 正则化项加入代价函数:

J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 n θ j 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^m \left(h_\theta(x^{(i)}) - y^{(i)}\right)^2 + \frac{\lambda}{2m} \sum_{j=1}^n \theta_j^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2+2mλj=1nθj2

  • λ \lambda λ 越大,模型越受到限制,倾向欠拟合(偏差增大)。
  • λ \lambda λ 越小,模型自由度越大,可能过拟合(方差增大)。
  • 调整 λ \lambda λ 是偏差-方差权衡的重要手段。

六、学习曲线

  • 通过画学习曲线,观察训练误差和验证误差随训练样本数 m m m 增加的变化趋势。

  • 画法步骤:

    1. 取前 m m m 个训练样本,训练模型 θ ( m ) \theta^{(m)} θ(m)
    2. 计算训练误差:

    J train ( θ ( m ) ) = 1 2 m ∑ i = 1 m ( h θ ( m ) ( x ( i ) ) − y ( i ) ) 2 J_{\text{train}}(\theta^{(m)}) = \frac{1}{2 m} \sum_{i=1}^m \left(h_{\theta^{(m)}}(x^{(i)}) - y^{(i)}\right)^2 Jtrain(θ(m))=2m1i=1m(hθ(m)(x(i))y(i))2

    1. 计算验证误差:

    J cv ( θ ( m ) ) = 1 2 m cv ∑ i = 1 m cv ( h θ ( m ) ( x ( i ) ) − y ( i ) ) 2 J_{\text{cv}}(\theta^{(m)}) = \frac{1}{2 m_{\text{cv}}} \sum_{i=1}^{m_{\text{cv}}} \left(h_{\theta^{(m)}}(x^{(i)}) - y^{(i)}\right)^2 Jcv(θ(m))=2mcv1i=1mcv(hθ(m)(x(i))y(i))2

  • 曲线含义

    • 如果训练误差和验证误差都很高,且差距小,通常是高偏差,需增加模型复杂度。
    • 如果训练误差远低于验证误差,通常是高方差,需增加训练样本或正则化。
    • 验证误差随训练样本增加不断下降,说明模型受益于更多数据。

七、最终结果决定下一步

结合误差分析和学习曲线判断:

  • 高偏差(欠拟合)
    • 增加模型复杂度(更高阶多项式等)。
    • 减小正则化强度。
    • 添加更多有意义的特征。
  • 高方差(过拟合)
    • 增加训练样本数。
    • 增强正则化。
    • 减少特征数量或简化模型。

八、机器学习系统的要求

  • 明确业务目标和任务定义。
  • 明确性能指标(准确率、查准率、召回率等)。
  • 确定数据来源。
  • 制定评估标准和成功标准。

九、误差分析

  • 目的:通过人工分析验证集上的错误样本,发现模型主要缺陷。
  • 步骤
    1. 选择验证集上的若干错误样本。
    2. 分类这些错误样本的类型或原因(比如特征不足,数据噪声,模型欠拟合等)。
    3. 针对常见错误类型,设计改进方案,比如:
      • 添加新特征。
      • 改变模型结构。
      • 清理数据。
  • 效果:误差分析指导方向比盲目调参更有效。

十、类别不平衡的误差度量

  • 真实世界问题中,类别分布通常不均衡。
  • 准确率可能不适合衡量模型好坏:
    • 如正例占极少数,模型全预测为反例准确率也很高,但毫无用处。
  • 需采用其他指标,如查准率、召回率

十一、查准率与查全率

定义:

Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP

Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP

  • 查准率(Precision):模型预测为正的样本中,有多少是真正正例。
  • 查全率(Recall):所有正例中,模型正确预测出来的比例。

权衡关系:

  • 提高查准率会降低查全率,反之亦然。
  • 具体应用中,需根据任务侧重点调整阈值或优化目标。

十二、机器学习系统中的数据

  • 数据质量直接影响模型性能。
  • 需要:
    • 数据清洗,去除脏数据。
    • 特征工程,挖掘有用特征。
    • 增加训练数据,提升泛化。
    • 考虑数据增强技术。

相关文章:

  • Redis 集合、有序集合与通用命令详解
  • [Vue] ref及其底层原理
  • 单片机(MCU)的 IO 口静电、浪涌、电压异常等保护
  • 【机器学习基础】机器学习入门核心算法:支持向量机(SVM)
  • 大模型的开发应用(四):深度学习模型量化与QLoRA微调
  • WordPress免费网站模板下载
  • Android studio 查看aar源码出现/* compiled code */
  • 三天掌握PyTorch精髓:从感知机到ResNet的快速进阶方法论
  • LeetCodeHot100_0x09
  • 大模型(6)——语义分割
  • 三十、面向对象底层逻辑-SpringMVC九大组件之HandlerInterceptor接口设计
  • 程序环境与预处理
  • Abstract Factory(抽象工厂)
  • FPGA中的“BPI“指什么
  • CPU服务器的主要功能有哪些?
  • 【Java Web】5.Mybatis
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【2/3 适合小白,步骤详细!!!】
  • 基于Python爬虫技术的对歌曲评论数据可视化分析系统
  • pythonday30
  • Linux基础I/O【文件理解与操作】
  • 培训机构网站建设方案/免费网站制作教程
  • 中网建站/长沙网络推广外包
  • 如何用运行打开wordpress/扬州整站seo
  • 海外网站建设平台/怎么做小程序
  • 网页设计介绍北京网站/百度收录工具
  • wordpress搬家后台还是老网站/中国新冠一共死去的人数