过拟合和欠拟合:机器学习模型中的两个重要概念

简介: 过拟合和欠拟合:机器学习模型中的两个重要概念

🍋引言

机器学习模型中,过拟合和欠拟合是两种常见的问题。它们在模型训练和预测过程中扮演着重要的角色。了解过拟合和欠拟合的概念、影响、解决方法以及研究现状和趋势,对于提高机器学习模型性能和实用性具有重要意义。

🍋过拟合和欠拟合的概念

过拟合是指机器学习模型在训练数据上表现优良,但在测试数据上表现较差的现象。这意味着模型在训练数据集上学习了过多的特定细节,以至于在新的、未见过的数据上无法泛化。

相反,欠拟合是指机器学习模型在训练数据上和测试数据上都表现较差的现象。这意味着模型没有足够的学习能力来捕捉数据中的关键特征和模式。

🍋过拟合和欠拟合的影响与危害

过拟合和欠拟合都会对机器学习模型的性能产生负面影响。过拟合会导致模型在测试数据上的性能下降,使得模型无法泛化到实际应用场景。欠拟合则会使模型在训练数据上和测试数据上的性能都较差,无法准确预测新数据的标签或类别。

此外,过拟合和欠拟合还可能使模型对新数据的适应能力下降,导致在实际应用中效果不佳。因此,了解如何避免过拟合和欠拟合对于提高机器学习模型的性能至关重要。

🍋过拟合和欠拟合的原因与解决方法

过拟合和欠拟合的原因各不相同,但都与模型的复杂度和训练数据的量有关。过拟合通常由于模型复杂度过高,导致在训练数据上过度拟合,无法泛化到测试数据。解决方法包括简化模型、增加数据量、使用正则化方法等。

欠拟合则通常由于模型复杂度过低,无法捕捉到数据中的关键特征和模式。解决方法包括增加模型复杂度、使用集成学习方法、改进特征工程等。

🍋过拟合和欠拟合的研究现状与发展趋势

过拟合和欠拟合作为机器学习领域的重要研究课题,已经得到了广泛的关注和研究。目前,研究者们正在不断探索新的方法和技术来解决这些问题。

在未来,过拟合和欠拟合的研究将更加深入。一方面,研究者们将尝试开发更加高效的正则化方法和集成学习算法,以进一步提高模型的泛化能力和性能。另一方面,随着深度学习等新型算法的不断发展,如何将其应用于解决过拟合和欠拟合问题也将成为研究的重要方向。

🍋过拟合&欠拟合—案例

我们围绕上篇多项式回归,来介绍一下过拟合和欠拟合的案例

上篇其实已经展示了欠拟合

欠拟合比较好整,可以用多种方式提高模型的准确率,但是过拟合呢,下面我来简单介绍一下


首先导入一些必要的库

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures

然后我们还是准备之前的数据,这里我们设置了一个随机种子,保证大家的数据一致性,方便检阅

x = np.random.uniform(-3,3,size=100)
X = x.reshape(-1,1)
np.random.seed(666)
y = 0.5*x**2+x+3+np.random.normal(0,1,size=100)
X_train,X_test,y_train,y_test = train_test_split(X,y)

接下来我们定义两个函数polynomialRegression和plot_model,下面我一一解释

首先是polynomialRegression函数,其实就是之前的管道,它可以将输入数据转换为指定的多项式次数,然后对其进行标准化,并最后拟合一个线性回归模型

def polynomialRegression(degree):
    return Pipeline([
        ('poly',PolynomialFeatures(degree=degree)),
    ('std_scaler',StandardScaler()),
    ('lin_reg',LinearRegression())
    ])

再创建一个plot_model函数,用来进行绘制

def plot_model(poly_reg):
    y_predict = poly_reg.predict(X)
    plt.scatter(X,y)
    plt.plot(np.sort(x),y_predict[np.argsort(x)],color='r')
    plt.show()

我们接受训练好的模型poly_reg。这里的np.argsort(x)返回的是x排序后的索引,因此y_predict[np.argsort(x)]可以得到排序后的预测值。

接下来我们分别使用二次、十次、五十次、一百次多项式进行拟合数据

poly_reg = polynomialRegression(2)
poly_reg.fit(X,y)
y_predict = poly_reg.predict(X)
print(mean_squared_error(y,y_predict))
plot_model(poly_reg)

运行结果如下

poly_reg = polynomialRegression(10)
poly_reg.fit(X,y)
y_predict = poly_reg.predict(X)
print(mean_squared_error(y,y_predict))
plot_model(poly_reg)

运行结果如下

poly_reg = polynomialRegression(50)
poly_reg.fit(X,y)
y_predict = poly_reg.predict(X)
print(mean_squared_error(y,y_predict))
plot_model(poly_reg)

运行结果如下

poly_reg = polynomialRegression(100)
poly_reg.fit(X,y)
y_predict = poly_reg.predict(X)
print(mean_squared_error(y,y_predict))
plot_model(poly_reg)

运行结果如下

我们不难看出,目的为了拟合所有的特征点,导致模型变得过于复杂,这种情况就叫过拟合

接下来我们将训练好的模型进行预测并绘制(这里使用的是一百次)

x_plot = np.linspace(-3,3,100).reshape(100,1)
y_plot = poly_reg.predict(x_plot)
plt.scatter(x,y)
plt.plot(x_plot,y_plot,color='r')
plt.axis([-3,3,-1,10])
plt.show()

运行结果如下

可以看出很糟糕,这就是过拟合带来的后果。就像识别一只猫和一只狗,过拟合会导致猫换个色就识别不出来是猫了,欠拟合则会阴差阳错的将猫识别为狗

🍋总结

过拟合和欠拟合是机器学习过程中的两个重要概念,对于提高模型的性能和实用性具有重要意义。了解过拟合和欠拟合的概念、影响、解决方法以及研究现状和发展趋势,有助于我们在实际应用中更好地应对和解决这些问题。

未来,过拟合和欠拟合的研究将继续深入发展,研究者们将不断探索新的方法和技术以解决这些问题。随着机器学习技术的广泛应用,过拟合和欠拟合的研究也将具有更加实际的应用价值。

挑战与创造都是很痛苦的,但是很充实。


相关文章
|
8天前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
20 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
9天前
|
机器学习/深度学习 资源调度 算法
机器学习领域必知数学符号与概念(一)
本文介绍了一些数学符号以及这些符号的含义。
112 65
|
11天前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
100 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
|
2月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
1月前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
1月前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
52 12
|
2月前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
80 8
|
2月前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
78 6
|
2月前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####