模型评估和模型选择
1、损失函数对于模型一次预测结果的好坏需要有一个度量标准。对于监督学习而言给定一个输入X选取的模型就相当于一个“决策函数”f它可以输出一个预测结果f(X)而真实的结果标签记为Y。f(X) 和Y之间可能会有偏差我们就用一个损失函数loss function来度量预测偏差的程度记作 L(Y,f(X))。损失函数用来衡量模型预测误差的大小损失函数值越小模型就越好损失函数是f(X)和Y的非负实值函数0-1损失函数平方损失函数使用最多方便求导绝对损失函数对数似然损失函数2、经验误差给定一个训练数据集数据个数为n根据选取的损失函数就可以计算出模型f(X)在训练集上的平均误差称为训练误差也被称作经验误差empirical error 或经验风险empirical risk。类似地在测试数据集上平均误差被称为测试误差或者泛化误差generalization error。一般情况下对模型评估的策略在训练的时候就是考察经验误差当经验风险最小时就认为取到了最优的模型。这种策略被称为 经验风险最小化empirical risk minimizationERM。3、欠拟合和过拟合拟合Fitting是指机器学习模型在训练数据上学习到规律并生成预测结果的过程就是尽可能地符合原始数据的分布情况接下来根据这个结果去预测数据。理想情况下模型能够准确地捕捉训练数据的模式并且在未见过的新数据测试数据上也有良好的表现即模型具有良好的泛化能力。欠拟合Underfitting是指模型在训练数据上表现不佳无法很好地捕捉数据中的规律。这样的模型不仅在训练集上表现不好在测试集上也同样表现差。过拟合Overfitting是指模型在训练数据上表现得很好但在测试数据或新数据上表现较差的情况。过拟合的模型对训练数据中的噪声或细节过度敏感把噪声学会了哈哈哈把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质从而失去了泛化能力。产生欠拟合和过拟合的根本原因是模型的复杂度过低或过高从而导致测试误差泛化误差偏大。欠拟合模型在训练集和测试集上误差都比较大。模型过于简单高偏差。过拟合模型在训练集上误差较小但在测试集上误差较大。模型过于复杂高方差。3.1、产生原因和解决办法欠拟合产生原因模型复杂度不足模型过于简单无法捕捉数据中的复杂关系。特征不足输入特征不充分或者特征选择不恰当导致模型无法充分学习数据的模式。训练不充分训练过程中迭代次数太少模型没有足够的时间学习数据的规律。过强的正则化正则化项设置过大强制模型过于简单导致模型无法充分拟合数据。解决办法增加模型复杂度选择更复杂的模型。增加特征或改进特征工程添加更多的特征或通过特征工程来创造更有信息量的特征。增加训练时间增加训练的迭代次数让模型有更多机会去学习。减少正则化强度如果使用了正则化尝试减小正则化的权重以让模型更灵活。过拟合产生原因模型复杂度过高模型过于复杂参数太多。训练数据不足数据集太小模型能记住训练数据的细节但无法泛化到新数据也可能出现欠拟合的现象。特征过多特征太多模型可能会“记住”数据中的噪声而不是学到真正的规律。训练过长训练时间过长导致模型学习到训练数据中的噪声而非数据的真正规律。解决办法减少模型复杂度降低模型的参数数量、使用简化的模型或降维来减小模型复杂度。增加训练数据收集更多数据或通过数据增强来增加训练数据的多样性。使用正则化引入L1、L2正则化避免过度拟合训练数据。交叉验证使用交叉验证技术评估模型在不同数据集上的表现以减少过拟合的风险。早停训练时当模型的验证损失不再下降时提前停止训练避免过度拟合训练集。import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error # 设置matplotlib全局中文显示 plt.rcParams[font.sans-serif] [KaiTi] plt.rcParams[axes.unicode_minus] False # 由一个向量x生成degree列的矩阵 def polynomial(x, degree): 构成多项式返回 [x^1,x^2,x^3,...,x^n] return np.hstack([x ** i for i in range(1, degree 1)]) # 1、读取数据 # 生成一个从 -3 到 3 的等差数列共300个点然后将其转换成一个 300 行、1 列的列向量二维数组 X np.linspace(-3, 3, 300).reshape(-1, 1) print(X.shape) y np.sin(X) np.random.uniform(-0.5, 0.5, 300).reshape(-1, 1) # 创建一个包含 1 行、3 列子图的画布 fig, ax plt.subplots(1, 3, figsize(15, 4)) ax[0].plot(X, y, yo) ax[1].plot(X, y, yo) ax[2].plot(X, y, yo) # 划分训练集和测试集 x_train, x_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # 创建线性回归模型创建对象 model LinearRegression() # 欠拟合1次多项式 x_train1 x_train x_test1 x_test model.fit(x_train1, y_train) y_pred1 model.predict(x_test1) ax[0].plot(X, model.predict(X), r) ax[0].text(-3, 1, f测试集均方误差{mean_squared_error(y_test, y_pred1):.4f}) ax[0].text(-3, 1.3, f训练集均方误差{mean_squared_error(y_train, model.predict(x_train1)):.4f}) ax[0].set_title(欠拟合(1次多项式)) plt.show() # 适度拟合5次多项式 x_train2 polynomial(x_train, 5) # 扩展成5个特征 x_test2 polynomial(x_test, 5) model.fit(x_train2, y_train) y_pred2 model.predict(x_test2) ax[1].plot(X, model.predict(polynomial(X, 5)), r) ax[1].text(-3, 1, f测试集均方误差{mean_squared_error(y_test, y_pred2):.4f}) ax[1].text(-3, 1.3, f训练集均方误差{mean_squared_error(y_train, model.predict(x_train2)):.4f}) ax[1].set_title(适度拟合(5次多项式)) # plt.show() # 过拟合20次多项式 x_train3 polynomial(x_train, 20) x_test3 polynomial(x_test, 20) model.fit(x_train3, y_train) y_pred3 model.predict(x_test3) ax[2].plot(X, model.predict(polynomial(X, 20)), r) ax[2].text(-3, 1, f测试集均方误差{mean_squared_error(y_test, y_pred3):.4f}) ax[2].text(-3, 1.3, f训练集均方误差{mean_squared_error(y_train, model.predict(x_train3)):.4f}) ax[2].set_title(过拟合(20次多项式)) # plt.tight_layout() plt.show()4、正则化正则化是指在机器学习的过程中通过添加额外项来惩罚过大的参数进而限制模型的复杂度避免出现过拟合提高模型的泛化能力。这里的是正则化系数用来表示惩罚项的权重。正则化系数不属于模型的参数无法通过训练学习得到需要在模型训练开始之前手动设置这种参数被称为“超参数”。4.1、L1正则化L1正则化在损失函数中加入参数的绝对值之和L1正则化通过惩罚模型参数的绝对值使得部分权重趋近0甚至变为0。这会导致特征选择即模型会自动“丢弃”一些不重要的特征。L1正则化有助于创建稀疏模型即许多参数为0。在解决回归问题时使用L1正则化也被称为“Lasso回归”。超参数控制着正则化的强度。较大的值意味着强烈的正则化会使模型更简单可能导致欠拟合。而较小的值则会使模型更复杂可能导致过拟合。4.2、L2正则化L2正则化在损失函数中加入参数的平方之和L2正则化通过惩罚模型参数的平方使得所有参数都变得更小但不会将参数强行压缩为0。它会使得模型尽量平滑从而防止过拟合。在解决回归问题时使用L2正则化也被称为“岭回归”。5、交叉验证交叉验证Cross-Validation是一种评估模型泛化能力的方法通过将数据集划分为多个子集反复进行训练和验证以减少因单次数据划分带来的随机性误差。通过交叉验证能更可靠地估计模型在未知数据上的表现。亦能避免因单次数据划分不合理导致的模型过拟合或欠拟合。5.1、简单交叉验证将数据划分为训练集和验证集如70%训练30%验证。结果受单次划分影响较大可能高估或低估模型性能。5.2、k折交叉验证将数据均匀分为k个子集称为“折”每次用k−1折训练剩余1折验证重复k次后取平均性能。充分利用数据结果更稳定。

相关新闻

集团企业必看!国内知名ERP厂商精选榜单发布

集团企业必看!国内知名ERP厂商精选榜单发布

一、引言 2026年上半年国内企业数字化管理软件市场持续迭代,赛迪顾问最新行业数据显示,国内ERP市场整体规模达326.8亿元,国产厂商市场占比提升至76.2%,本土软件的技术适配性、落地实用性已全面适配国内企业经营管理需求。在企业管…

2026/7/23 22:03:37阅读更多 →
C/C++每日一练5

C/C++每日一练5

1.游游的 you题意游游有 a 个 y,b 个 o,c 个 u。连续三个字符 you → 获得 2 分(每组消耗 1y、1o、1u)连续两个字符 oo → 获得 1 分注意:ooo 有两处相邻 oo,得 2 分;oooo 得 3 分。也就是一段连…

2026/7/23 22:03:37阅读更多 →
【头部电商AI客服降本增效白皮书】:6个月砍掉62%人工坐席,却将CSAT提升11.3%的底层逻辑

【头部电商AI客服降本增效白皮书】:6个月砍掉62%人工坐席,却将CSAT提升11.3%的底层逻辑

更多请点击: https://kaifayun.com 第一章:AI自动化客服流程的演进与战略定位 AI自动化客服已从早期基于规则的简单问答系统,演进为融合大语言模型、多模态理解与实时决策能力的智能服务中枢。这一演进并非技术叠加,而是客户服务…

2026/7/23 22:03:37阅读更多 →
三森沃智能文件柜|告别人工台账,开启档案智慧管理新时代

三森沃智能文件柜|告别人工台账,开启档案智慧管理新时代

三森沃智能文件柜|告别人工台账,开启档案智慧管理新时代档案室还在用传统铁皮柜?钥匙保管麻烦、文件借阅无记录、盘点耗时耗力、涉密资料管控难。文件丢失、调档缓慢、审计追溯无凭证,一直困扰机关单位、企业、院校档案管理人员。…

2026/7/23 23:26:00阅读更多 →
K3爆火触发算力“熔断”,Kimi多维度“摸高”挑战与机遇并存!

K3爆火触发算力“熔断”,Kimi多维度“摸高”挑战与机遇并存!

【K3爆火,Kimi暂停新用户订阅】这一次,K3爆火, Kimi 却不得不按下暂停键。7月19日深夜,月之暗面 Kimi 团队发布公告,因 Kimi K3上线48小时内,用户请求量大幅超出预估,由于算力资源紧张&#xff…

2026/7/23 23:26:00阅读更多 →
太原不锈钢岗亭

太原不锈钢岗亭

好的,遵照您的要求,我将以“太原不锈钢岗亭”为主题,撰写一篇800-1000字的深度分析文章,内容符合主流平台审核标准,并自然融入品牌信息。在城市管理的精细化与智能化浪潮中,岗亭早已超越了“值班小屋”的单…

2026/7/23 23:26:00阅读更多 →
初识C语言 | 第6篇

初识C语言 | 第6篇

文章目录调试调试目标核心调试方法(使用 VS 集成调试器)设置断点启动调试单步执行与观察C语言的语句if语句语法结构if语句书写推荐if...else实例switch语句switch语句的特点(核心)switch语句与if...else语句的相同点switch语句与i…

2026/7/23 23:26:00阅读更多 →
【00003】

【00003】

二、C语言2.2常用的输入输出函数1.常用的输入输出函数&#xff08;1&#xff09;输入输出函数头文件#include <stdio.h>&#xff08;2&#xff09;输入输出函数1. 单个字符的输入输出函数&#xff08;1&#xff09;putchar功能&#xff1a;在终端打印一个字符使用示例put…

2026/7/23 23:26:00阅读更多 →
光电幕墙简介

光电幕墙简介

光电幕墙 光电幕墙,即粘贴在玻璃上,镶嵌于两片玻璃之间,通过电池可将光能转化成电能。这就是--太阳能光电幕墙。它是用光电池、光电板技术,把太阳光转化为电能,它关键的技术是太阳能光电池技术。太阳能光电池是利用太阳光的光子能量,使得被照射的电解液或者半导体材料的电…

2026/7/23 23:24:00阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南&#xff1a;免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从单点好评到指数级传播&#xff1a;AI副业主理人必须掌握的4层口碑渗透模型&#xff08;含ROI测算表&#xff09; 当AI副业主理人不再仅满足于单次服务交付&#xff0c;而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有&#xff1f;这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验&#xff0c;选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性&#xff0c;而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →