学习笔记: 机器学习经典算法-模型泛化

简介: 机器学习经典算法-个人笔记和学习心得分享

1、过拟合与欠拟合

对于包含噪音的数据集,进行数据拟合的时候,总能找到一条曲线穿过所有样本点,使得模型的预测结果与给定训练集内的样本真实标签完全一致,取得极低的预测误差;但这意味着算法所训练的模型过多的表达了数据之间的噪音关系,称为 过拟合(over fitting)欠拟合(under fitting) 则表明算法所训练的模型不能完整表述数据关系。
则如果模型拟合程度不高,意味着模型没有很好地捕捉到数据特征,从而也不能够很好地用于生产环境。 在多项式回归预测分析中,选择过高或过低的幂来构造特征,就会产生欠拟合和过拟合的问题。

2 模型泛化能力

模型的泛化能力(generalization ability) 指的是训练出来的模型对新样例的预测能力。如果预测效果非常差,称模型的泛化能力弱。一个好的算法模型需要拥有较强的的泛化能力。这也是模型训练和测试的意义需要将原始采样数据拆分出 训练集测试集 来训练和评估模型的泛化能力。

两种不同的算法模型的 模型泛化能力评估 简单的可使用在测试集上的 均方误差 (MSE = $\sum_{i=1}^{m}{(y^{(i)} - \hat {y^{(i)}})^{2}}$)

3 模型准确度与模型复杂度

① 对于训练集,模型的复杂度增加(在多项式回归中意味着参数的增多),模型对于训练集的预测准确率会越来越高。
② 对于测试集,随着模型的复杂度增加,对测试集的预测准确率会逐渐提高,但是当超过一个复杂度阈值之后准去率会转而逐渐降低,经历了一个欠拟合到过拟合的过程。

模型复杂度曲线

4 验证数据集与交叉验证

当使用训练集来训练模型,而仅仅使用测试集来调整模型,这样通过在测试集上的表现来调优的模型很可能出现 针对测试集的过拟合 问题。一个较为可靠的模型创建与测试方法应该通过将原始采样数据分割成 训练集验证数据测试集,通过在使用训练集创建模型,然后使用验证数据集来进行模型的评估和模参调整,得到一个对于验证数据集而言已经处于最优的模型,最后使用 测试集 来衡量通过了验证数据集调整后得到的最终模型的泛化能力;该过程 测试集 数据不参与模型的训练和调参,而是作为真实生产环境中新产生的不可知样例的模拟,最终用作衡量模型在生产环境中的表现能力。

4.1 交叉验证评估法

为了使得模型的训练和评估过程具有足够高的 随机性交叉验证方法 提出分割训练集分成 k 份(k-folds cross validation,简单情况下k取3即可),通过组合这 k 份数据为训练集和验证机,每次训练出$k$个模型,和取得$k$ 个模型的性能评分,最后取这 $k$ 个模型的性能指标均值用作衡量当前超参数下的模型性能,作为进行模型超参数调整的依据。通过取均值的方式,可以有效降低携带极端值的数据集对模型评估上的影响。

4.2 使用Cross Validation 进行模型超参数搜索

import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn import datasets

### Prepare data
digits = datasets.load_digits()
from sklearn.model_selection import train_test_split
Train_X,Test_X,Train_Y,Test_Y = train_test_split(digits.data,digits.target,test_size= 0.2,random_state=666)


### Use cross_validate_score to Search Best Parameters
best_score = .0
best_parameter = None
for k in range(2,11):
    knn_clf = KNeighborsClassifier(n_neighbors = k)
    cur_score = np.mean(cross_val_score(knn_clf,Train_X,Train_Y,cv = 5))  ### 使用交叉验证得到当前超参数设置下的模型得分; 方法参数cv=5 设置期望每次训练5模型进行评分。
    if cur_score > best_score: best_score ,best_parameter = cur_score , k

print(best_score,best_parameter)

### 最后使用测试集计算模型的最终准确度评分
knn_clf = KNeighborsClassifier(n_neighbors = best_parameter)
knn_clf.fit(Train_X,Train_Y)
knn_clf.score(Test_X,Test_Y)

交叉验证的评估得分单比使用一个训练集和测试集来获得的模型评分要更可靠地反映模型的泛化能力。

4.3 留一法 LOO-CV

k-folds cross validation 方法由于每次需要训练出多个模型,虽然该方法得出的评分结果较可靠,但性能相比整体拖慢了k倍。在$k$ 需要取值非常大的极端情况下,LOO-CV(Leave-One-Out Cross Validation) 提出将训练集分成 m 份,每次将 m-1 份样本用于模型训练,剩下的一份用作模型评估,将所有这些模型结果的指标平均用作衡量当前超参数下模型的准确度。有点即使脱离的随机的影响,最接近模型真正的性能指标。缺点计算量巨大。

5 偏差方差权衡 Bias Variance Trade off

  • 偏差(Bias) $\ \ \ \ \ \ $ 数据点偏离目标中心的程度;
  • 方差(Variance) $\ $数据点整体分布的稀疏程度。

机器学习任务目的是为了训练一个能够基本准确预测一个问题答案的算法模型,抽象理解待解决的问题为靶心,根据数据拟合生成的模型即射在靶子上的标枪,这些模型相对于问题本身就会犯 方差和偏差 两种错误从而不能很好的预测在问题允许误差范围内的答案。

$$\small {\bf {模型误差}} = \small {\bf {模型偏差(Bias)}} + \small {\bf {模型方差(Variance)}} + \small {\bf {不可避免的误差}}$$
模型中 不可避免的误差 成因复杂,多来源于数据采集噪音。
导致 偏差 错误的成因:

  • ① 对问题的前提假设不正确(如非线性数据使用了线性拟合);
  • ② 研究特征与问题本身高度不相关(如通过研究学生的姓名来预测学生成绩);
    在算法层面高偏差主要表现为出现 欠拟合 现象。

方差 错误:主要表现出数据哪怕出现一点点扰动都会较大的影响模型。通常原因就是 模型太复杂化 ,如高阶多项式回归。在算法层面高方差主要表现为出现 过拟合 现象。

5.2 一般ML算法模型与Bias & Var两类错误的关系:

  • 非参数学习 通常属于 高方差算法,因为前提不对数据关系进行任何假设,高度依赖原始数据,对数据分布非常敏感。如kNN算法的判断结果仅取决于其k个邻居的投票,如果这个k个邻居本身就是存在错误测量,就会影响算法的预测结果准确度。

  • 参$\ $数学习 通常属于 高偏差算法 ,这类算法通过参数与特征将问题规约成一个数学模型,对数据具有极强的前提假设,认为这些数据基本上是符合假设模型;如果数据不符合假设的数学模型,那么模型就会出错。如线性回归,对非线性关系的数据应用线性回归分析即产生非常大的偏差错误。

ML算法模型中方差与偏差的矛盾:降低偏差,会提高方差;降低方差,会提高偏差。
模型超参数调整任务就是平衡模型的方差和偏差;较高的偏差 意味着模型过于偏离原问题,较高的方差 意味着模型泛化能力太差。

5.3 降低模型的方差的解决方案

在机器学习算法的误差权衡任务中,最主要处理的是模型的方差错误(由模型复杂度主导),偏差错误主要来源于算法模型的错误选择,这在ML模型构建中通过推理假设还是很容易降低偏差错误的。

  • 降低模型复杂度
  • 减少数据维度;降噪
  • 增加样本数
  • 使用验证集(如调参时选用 Cross_Validation作为评估指标)
  • 模型正则化
目录
相关文章
|
3月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
746 109
|
4月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
月之暗面发布开源模型Kimi K2,采用MoE架构,参数达1T,激活参数32B,具备强代码能力及Agent任务处理优势。在编程、工具调用、数学推理测试中表现优异。阿里云PAI-Model Gallery已支持云端部署,提供企业级方案。
326 0
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
|
2月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
5月前
|
机器学习/深度学习 算法 安全
差分隐私机器学习:通过添加噪声让模型更安全,也更智能
本文探讨在敏感数据上应用差分隐私(DP)进行机器学习的挑战与实践。通过模拟DP-SGD算法,在模型训练中注入噪声以保护个人隐私。实验表明,该方法在保持71%准确率和0.79 AUC的同时,具备良好泛化能力,但也带来少数类预测精度下降的问题。研究强调差分隐私应作为模型设计的核心考量,而非事后补救,并提出在参数调优、扰动策略选择和隐私预算管理等方面的优化路径。
391 3
差分隐私机器学习:通过添加噪声让模型更安全,也更智能
|
4月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型
阿里云 PAI-Model Gallery 已同步接入 gpt-oss 系列模型,提供企业级部署方案。
|
5月前
|
机器学习/深度学习 人工智能 算法
Post-Training on PAI (4):模型微调SFT、DPO、GRPO
阿里云人工智能平台 PAI 提供了完整的模型微调产品能力,支持 监督微调(SFT)、偏好对齐(DPO)、强化学习微调(GRPO) 等业界常用模型微调训练方式。根据客户需求及代码能力层级,分别提供了 PAI-Model Gallery 一键微调、PAI-DSW Notebook 编程微调、PAI-DLC 容器化任务微调的全套产品功能。
|
5月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
5月前
|
机器学习/深度学习 存储 Java
Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用(190)
本文探讨了Java大数据与机器学习模型在游戏用户行为分析及游戏平衡优化中的应用。通过数据采集、预处理与聚类分析,开发者可深入洞察玩家行为特征,构建个性化运营策略。同时,利用回归模型优化游戏数值与付费机制,提升游戏公平性与用户体验。
|
6月前
|
存储 人工智能 运维
企业级MLOps落地:基于PAI-Studio构建自动化模型迭代流水线
本文深入解析MLOps落地的核心挑战与解决方案,涵盖技术断层分析、PAI-Studio平台选型、自动化流水线设计及实战构建,全面提升模型迭代效率与稳定性。
252 6