Python3入门机器学习 - 模型泛化

简介: 模型正则化在多项式回归中如果degree过大,会造成过拟合的情况,导致模型预测方差极大,因此,我们可以使用模型正则化的方式来减小过拟合导致的预测方差极大的问题即在我们训练模型时,不仅仅需要将预测的y和训练集的y的均方误差达到最小,还要使参数向量最小。

模型正则化


在多项式回归中如果degree过大,会造成过拟合的情况,导致模型预测方差极大,因此,我们可以使用模型正则化的方式来减小过拟合导致的预测方差极大的问题


img_0c35ff19d3f287da7f2e269cac50138b.png
img_a173fb687826456288b5fe93ba9ed75d.png

即在我们训练模型时,不仅仅需要将预测的y和训练集的y的均方误差达到最小,还要使参数向量最小。(即上图公式。)

使用岭回归达到最小方差


from sklearn.linear_model import Ridge

def RidgeRegression(degree,alpha):
    return Pipeline([
        ("poly",PolynomialFeatures(degree=degree)),
        ("scaler",StandardScaler()),
        ("ridge",Ridge(alpha=alpha))
    ])

ridge_reg = RidgeRegression(20,0.01)

ridge_reg.fit(X_train,y_train)
mean_squared_error(ridge_reg.predict(X_test),y_test)   #在degree=20的过拟合情况下,本来达到170的方差在模型正则化之后仅有一点几。

模型正则化的参数alpha即为公式中的α,即α越大,就代表训练过程中模型系数影响程度越大

使用Lasso回归达到最小方差


from sklearn.linear_model import Lasso

def RidgeRegression(degree,alpha):
    return Pipeline([
        ("poly",PolynomialFeatures(degree=degree)),
        ("scaler",StandardScaler()),
        ("ridge",Lasso(alpha=alpha))
    ])

ridge_reg = RidgeRegression(20,0.1)

ridge_reg.fit(X_train,y_train)
mean_squared_error(ridge_reg.predict(X_test),y_test) 
img_57b11f2e76d9610aba1b979763ea56c9.png
image.png

img_7b16cc7e0bceb159b7e48e8037685e19.png




Lasso与Ridge对比

如上图可见,Ridge在a很大时,所得预测曲线依然是曲线,但Lasso在a较大时,更倾向于变为一条直线,如果用梯度下降法的思想来考虑,这是因为在计算更优解时,Ridge的theta的斜率向量会让theta一直以一个比较平缓的梯度下降,然而Lasso的斜率向量则不然。而Lasso的这种特性会让更多的特征值的系数theta变为0,因此我们可以使用Lasso来进行特征值的过滤,即变为0的特征值是对模型影响较小的特征值。

目录
相关文章
|
12天前
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型的五大技巧
【4月更文挑战第7天】 在数据科学迅猛发展的今天,机器学习已成为解决复杂问题的重要工具。然而,构建一个既精确又高效的机器学习模型并非易事。本文将分享五种提升机器学习模型性能的有效技巧,包括数据预处理、特征工程、模型选择、超参数调优以及交叉验证。这些方法不仅能帮助初学者快速提高模型准确度,也为经验丰富的数据科学家提供了进一步提升模型性能的思路。
|
1天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
6 1
|
1天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
17 0
|
3天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
8天前
|
JavaScript 前端开发 API
游戏开发入门:Python后端与Vue前端的协同工作方式
【4月更文挑战第11天】使用Python后端(Flask或Django)和Vue.js前端开发游戏变得流行,能提高开发效率和可维护性。本文指导如何构建这样的项目,包括设置环境、创建虚拟环境、搭建后端API及前端Vue组件,强调前后端协作和API接口的重要性。这种架构促进团队合作,提升代码质量和游戏体验。
|
10天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
11天前
|
机器学习/深度学习 数据可视化 算法
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
|
8天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
8天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。

热门文章

最新文章