【Python机器学习】线性模型——岭回归

岭回归也是一种用于回归的线性模型,它的预测公式与线性回归相同,但是在岭回归里,对于系数的选择不仅要在训练数据上得到好的预测结果,而且还要拟合附加约束,还希望系数尽量小,这意味着每个特征对输出的影响应该尽可能小,同时仍给出很好的预测结果。这种约束是所谓的正则化的一个例子。

正则化是指对模型做显式约束,用来避免过拟合。岭回归用到的这种被成为L2正则化。

用波士顿房价数据集为例:

import mglearn.datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import RidgeX,y=mglearn.datasets.load_extended_boston()
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0
)ridge=Ridge().fit(X_train,y_train)
print('训练集score:{:.2f}'.format(ridge.score(X_train,y_train)))
print('测试集score:{:.2f}'.format(ridge.score(X_test,y_test)))

可以看到Ridge(岭回归)在训练集上的分数要小于线性回归,但是在测试集上的分数要更高。因为线性回归对数据存在过拟合,而岭回归是一种约束更强的模型,所以更不容易过拟合。

复杂度更小的模型意味着在训练集上的性能差,但是泛化性能更好,由于更多的需求场景是对泛化性能更感兴趣,所以应该选择岭回归而非线性回归。

岭回归模型可以在模型的简单性和训练集性能之间做出权衡,通过alpha系数来调整。alpha系数默认为1,增大alpha会降低训练集性能,但可能会提高泛化性能。

import mglearn.datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import RidgeX,y=mglearn.datasets.load_extended_boston()
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0
)ridge_10=Ridge(alpha=10).fit(X_train,y_train)
print('训练集score:{:.2f}'.format(ridge_10.score(X_train,y_train)))
print('测试集score:{:.2f}'.format(ridge_10.score(X_test,y_test)))

 

相反的,如果减小alpha会让系数收到的限制更小,更接近于线性回归模型。

通过查看alpha不同取值时的coef_属性,定性的理解alpha参数是如何改变模型的:

import mglearn.datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge,LinearRegression
from sklearn.neighbors import KNeighborsRegressor
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['SimHei']X,y=mglearn.datasets.load_extended_boston()
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0
)
ridge=Ridge().fit(X_train,y_train)
ridge_10=Ridge(alpha=10).fit(X_train,y_train)
ridge_01=Ridge(alpha=0.1).fit(X_train,y_train)
lr=LinearRegression().fit(X_train,y_train)plt.plot(ridge.coef_,'s',label='岭 alpha=1')
plt.plot(ridge_10.coef_,'^',label='岭 alpha=10')
plt.plot(ridge_01.coef_,'v',label='岭 alpha=0.1')plt.plot(lr.coef_,'o',label='线性回归')
plt.xlabel('index')
plt.ylabel('大小')
plt.hlines(0,0,len(lr.coef_))
plt.ylim(-25,25)
plt.legend()
plt.show()

图中X轴对应coef_元素:x=0对应第一个特征的系数,x=1对应第二个,以此类推。

可以看到,alpha取10时,系数大小大多在-3到3之间,alpha=1的模型,系数范围更大一些,alpha=0.1时,系数点的范围就很大了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326774.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现文本 内容展开 / 收起

<template><el-table :data"tableData" style"width: 100%" height"250"><el-table-columnfixedprop"date"label"日期"width"150"></el-table-column><el-table-columnprop"name…

trino-435:dynamic catalog数据库存储代码实现

一、dynamic catalog数据库存储源码分析 dynamic catalog的实现主要涉及到两个类&#xff1a;CoordinatorDynamicCatalogManager、WorkerDynamicCatalogManager&#xff0c;这两个类的详细信息如下&#xff1a; 这两个类主要提供了对catalog的增删改查的方法。trino-435源码中…

R304S 指纹识别模块指令系统

1 指令集 1. GR_GetImage 指令代码&#xff1a;01H 功能&#xff1a;从传感器上读入图像存于图像缓冲区 2. GR_GenChar 指令代码&#xff1a;02H 功能&#xff1a;根据原始图像生成指纹特征存于 CharBuffer1 或 CharBuffer2 3. GR_Match 指令代码&#xff1a;03H 功能&a…

Vue-2、初识Vue

1、helloword小案列 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>初始Vue</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdelivr.n…

深度学习(学习记录)

题型&#xff1a;填空题判断题30分、简答题20分、计算题20分、综合题&#xff08;30分&#xff09; 综合题&#xff08;解决实际工程问题&#xff0c;不考实验、不考代码、考思想&#xff09; 一、深度学习绪论&#xff08;非重点不做考察&#xff09; 1、传统机器学习&…

Qt6入门教程 3:创建Hello World项目

一.新建一个项目 程序员的职业生涯都是从一声问候开始的&#xff0c;我们的第一个Qt项目也是HelloWorld 首先要说明的是&#xff0c;IDE不一定要用Qt Creator&#xff0c;用Visual Studio、VSCode、CLion也可以搭建Qt开发环境&#xff0c;它们都相应的插件来支持Qt开发。当然这…

未完成销量任务的智己汽车突发大规模车机故障,竞争压力不小

2024年刚开年&#xff0c;智己汽车便上演了一出“开门黑”。 近日&#xff0c;不少车主在社交平台发帖&#xff0c;反映智己LS6出现大规模车机故障&#xff0c;包括但不限于主驾驶屏幕不显示车速、档位、行驶里程&#xff0c;左右转盲区显示失效&#xff0c;无转向灯、雷达提醒…

Linux部署Yearning并结合内网穿透工具实现公网访问本地web管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…

损失函数篇 | YOLOv8 引入 Shape-IoU 考虑边框形状与尺度的度量

作者导读&#xff1a;Shape-IoU&#xff1a;考虑边框形状与尺度的度量 论文地址&#xff1a;https://arxiv.org/abs/2312.17663 作者视频解读&#xff1a;https://www.bilibili.com 开源代码地址&#xff1a;https://github.com/malagoutou/Shape-IoU/blob/main/shapeiou.py…

【激活函数】PReLU 激活函数

1、介绍 PReLU&#xff08;Parametric Rectified Linear Unit&#xff09;激活函数是ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数的一种改进。它是由 He et al. 在 2015 年提出的&#xff0c;旨在解决ReLU激活函数的一些局限性。 # 定义 PReLU 激活函数 prelu…

合合TextIn团队发布 - 文档图像多模态大模型技术发展、探索与应用

合合信息TextIn&#xff08;Text Intelligence&#xff09;团队在2023年12月31日参与了中国图象图形学学会青年科学家会议 - 垂直领域大模型论坛。在会议上&#xff0c;丁凯博士分享了文档图像大模型的思考与探索&#xff0c;完整阐述了多模态大模型在文档图像领域的发展与探索…

FSMC—扩展外部SRAM

一、SRAM控制原理 STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间&#xff0c;但当程序较大&#xff0c;内存和程序空间不足时&#xff0c;就需要在STM32芯片的外部扩展存储器了。STM32F103ZE系列芯片可以扩展外部SRAM用作内存。 给STM32芯片扩展内存与给…