Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python实现逐步回归

Python实现逐步回归

作者头像
阿黎逸阳
发布于 2023-09-20 00:47:43
发布于 2023-09-20 00:47:43
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

逐步回归(Stepwise Regression)是一种逐步选择变量的回归方法,用于确定最佳的预测模型。它通过逐步添加和删除变量来优化模型的预测能力。

本文重点讲解什么是逐步回归,以及用Python如何实现逐步回归。

一、什么是逐步回归?

逐步回归是回归分析中一种筛选变量的过程,我们可以使用逐步回归从一组候选变量中筛选起作用的变量或剔除不起作用的变量进而构建模型。

逐步回归有三种筛选变量的方法。

1.向前筛选(forward selection): 首先挑选单独解释因变量变异最大的自变量,然后将剩余自变量逐个引入模型,引入后看该变量的加入是否使得模型发生显著性变化(F检验),如果发生了显著性变化,则将该变量引入模型中,否则忽略该变量,直至所有变量都进行了考虑。

特点:自变量一旦选入,则永远保存在模型中。

2.向后筛选(Backward elimination): 与向前筛选相反,一开始就把所有变量放入模型,然后尝试将某一变量进行剔除,查看剔除后对整个模型是否有显著性变化(F检验),如果没有显著性变化则剔除,若有则保留,直到留下所有对模型有显著性变化的因素。

特点:自变量一旦剔除,则不再进入模型,且一开始把全部自变量引入模型,计算量过大。

3.双向筛选(Bidirectional elimination): 这种方法相当于前两种筛选方法的结合。当引入一个变量后,首先查看这个变量是否使得模型发生显著性变化(F检验),若发生显著性变化,再对所有变量进行t检验,当原来引入变量由于后面加入的变量的引入而不再显著变化时,则剔除此变量,确保每次引入新的变量之前回归方程中只包含显著性变量,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止,最终得到一个最优的变量集合。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
二、实现逐步回归的函数参数详解

实现逐步回归,可以使用toad库中的toad.selection.stepwise函数,该函数的调用方法、主要参数及其解释如下: import toad toad.selection.stepwise(frame, target='target', estimator='ols', direction='both', criterion='aic', p_enter=0.01, p_remove=0.01, p_value_enter=0.2, intercept=False, max_iter=None, return_drop=False, exclude=None)

frame:输入数据框,包含自变量和目标变量。

target:指定目标变量在数据框中的列名,默认是target,可根据实际情况调整。

estimator: 用于拟合的模型,支持'ols'(默认项)、'lr'、'lasso'、'ridge'。

direction:逐步回归的方向,支持'forward'(向前法)、 'backward'(向后法)、'both' (双向法,默认项)。

criterion:指定选择特征的准则,可以为'aic'(赤池信息准则,默认项)、'bic'(贝叶斯信息准则)、 'ks'、 'auc'。

p_enter:指定添加特征的显著性水平,默认为0.01。

p_remove: 指定删除特征的显著性水平,默认为0.01。

p_value_enter: 指定添加特征的P值阈值,默认为0.2。

intercept: 是否拟合截距项,默认为False。

max_iter: 指定最大迭代次数,默认为None,即不限制迭代次数。

return_drop: 是否返回被删除的特征名,默认为False。

exclude: 指定要排除训练的特征列名列表,比如ID列和时间列,默认为None。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
经验说:1.direction = ‘both’效果一般最好。2.estimator = ‘ols’以及criterion = ‘aic’运行速度快且结果对逻辑回归建模有较好的代表性。以上2点是平常的经验总结,具体还是需要根据建模的数据进行具体的分析。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
三、Python实现逐步回归

1 读取数据 首先导入建模数据,进行数据预处理。由于本文的重点是逐步回归实现,且之前的文章企业欺诈识别已对该模块进行了详细阐述,本文不再赘述。 具体代码如下: import os import toad import numpy as np import pandas as pd os.chdir(r'F:\公众号\3.企业欺诈识别\audit_data') #设置数据读取的文件夹 qz_date = pd.read_csv('audit_risk.csv') #读取数据 qz_date.LOCATION_ID = pd.to_numeric(qz_date.LOCATION_ID, errors = 'coerce') #把文本数据转换成数值型数据 qz_date = qz_date.fillna(0) #用0填充数据框中的空值 qz_date.head(5) 得到结果:

可以发现此数据包含27列。 2 双向筛选逐步回归实现 接着用双向筛选的方法进行逐步回归变量挑选,具体代码如下: final_data = toad.selection.stepwise(qz_date, target = 'Risk', estimator='ols', direction = 'both', criterion = 'aic' ) final_data 得到结果:

可以发现双向逐步回归挑选出了12个入模变量。 3 向前筛选逐步回归实现 接着用向前筛选的方法进行逐步回归变量挑选,具体代码如下: final_data = toad.selection.stepwise(qz_date, target = 'Risk', estimator='ols', direction = 'forward', criterion = 'aic' ) final_data 得到结果:

可以发现向前逐步回归挑选出了13个入模变量,比双向逐步回归多入模了RiSk_E变量,其余变量一致。 4 向后筛选逐步回归实现 接着用向后筛选的方法进行逐步回归变量挑选,具体代码如下: final_data = toad.selection.stepwise(qz_date, target = 'Risk', estimator='ols', direction = 'backward', criterion = 'aic' ) final_data 得到结果:

可以发现向后逐步回归挑选出了16个入模变量,和双向、向前逐步回归都有一定的区别。 5 双向逐步回归指定特征选择准则为ks 为了分析不同特征选择准则对变量筛选的影响,接着在双向逐步回归时指定特征选择准则为ks,看下结果,具体代码如下: final_data = toad.selection.stepwise(qz_date, target = 'Risk', estimator='ols', direction = 'both', criterion = 'ks' ) final_data 得到结果:

可以发现双向逐步回归时如果特征选择准则设定为ks,只挑选出了1个入模变量,明显不太符合建模的要求。 6 双向逐步回归指定特征选择准则为auc 接着在双向逐步回归时指定特征选择准则为auc,具体代码如下: final_data = toad.selection.stepwise(qz_date, target = 'Risk', estimator='ols', direction = 'both', criterion = 'auc' ) final_data 得到结果:

可以发现双向逐步回归时如果特征选择准则设定为auc,也只挑选出了1个入模变量,明显不太符合建模的要求。 综上,我们在用逐步回归建模时可以参考之前的经验参数。 至此,Python实现逐步回归已讲解完毕,感兴趣的小伙伴可以翻看公众号中“风控建模”模块相关文章。

往期回顾:

一文囊括Python中的函数,持续更新。。。

一文囊括Python中的有趣案例,持续更新。。。

一文囊括Python中的数据分析与绘图,持续更新。。。

一文囊括风控模型搭建(原理+Python实现),持续更新。。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-17 08:05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 根据AIC准则定义向前逐步回归进行变量筛选(二)
AIC即赤池值,是衡量模型拟合优良性和模型复杂性的一种标准,在建立多元线性回归模型时,变量过多,且有不显著的变量时,可以使用AIC准则结合逐步回归进行变量筛选。AICD数学表达式如下: A I C = 2 p + n ( l o g ( S S E / n ) ) AIC=2p+n(log(SSE/n)) AIC=2p+n(log(SSE/n)) 其中, p p p是进入模型当中的自变量个数, n n n为样本量, S S E SSE SSE是残差平方和,在 n n n固定的情况下, p p p越小, A I C AIC AIC越小, S S E SSE SSE越小, A I C AIC AIC越小,而 p p p越小代表着模型越简洁, S S E SSE SSE越小代表着模型越精准,即拟合度越好,综上所诉, A I C AIC AIC越小,即模型就越简洁和精准。
全栈程序员站长
2022/08/31
2.6K0
Python 根据AIC准则定义向前逐步回归进行变量筛选(二)
讲讲逐步回归
前面我们讲过了多元线性回归。这一篇我们来讲讲逐步回归。什么是逐步回归呢?就是字面意思,一步一步进行回归。
张俊红
2019/11/23
1.4K0
R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型
用基础安装中的anova()函数可以比较两个嵌套模型的拟合优度。所谓嵌套模型,即它的一
Ai学习的老章
2019/04/10
1.1K0
R in action读书笔记(11)-第八章:回归--  选择“最佳”的回归模型
R多元线性回归容易忽视的几个问题(2)多重共线性的克服
如果存在着严重的多重共线性,则需要使用合适的方法尽量地降低多重共线性,有两种比较常用的方法:
Ai学习的老章
2019/04/10
1.8K2
R多元线性回归容易忽视的几个问题(2)多重共线性的克服
「R」回归分析
从许多方面来看,回归分析是统计学的核心。它其实是一个广义的概念,通指那些用一个或多个预测变量(也称为自变量或解释变量)来预测响应变量(也成因变量、效标变量或结果变量)。
王诗翔呀
2020/07/03
1.7K0
你应该掌握的七种回归技术
【编者按】回归分析是建模和分析数据的重要工具。本文解释了回归分析的内涵及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归等七种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键因素。 什么是回归分析? 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。 回归
用户1737318
2018/06/05
7850
R语言特征选择方法——最佳子集回归、逐步回归|附代码数据
选择在满足一些明确的客观标准时做得最好的预测变量的子集,例如具有最大R2值或最小MSE, Cp或AIC。
拓端
2023/02/20
1.3K0
回归分析技术|机器学习
原文:http://www.analyticsvidhya.com/blog/2015/08/comprehensive-guide-regression/ 回归分析是建模和分析数据的重要工具。本文
陆勤_数据人网
2018/02/28
1K0
回归分析技术|机器学习
详解:7大经典回归模型
来源:csdn 深度学习爱好者本文约2900字,建议阅读5分钟本文给大家介绍机器学习建模中7大经典的回归分析模型。 什么是回归分析? 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。 回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。我会在接下来的部分详细
数据派THU
2023/04/18
1.3K0
详解:7大经典回归模型
【学习】让你欲罢不能的回归分析
本文解释了回归分析及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归等七种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键因素 什么是回归分析? 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。 回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/
小莹莹
2018/04/20
1.2K0
【学习】让你欲罢不能的回归分析
七种回归分析方法 个个经典
什么是回归分析? 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。 回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。我会在接下来的部分详细解释这一点。 我们为什么使用回归分析? 如上所述,回归分析估计了两个或多个变量之间的关系。下面,让我们举一个
小莹莹
2018/04/18
1.1K0
七种回归分析方法 个个经典
python aic准则_pythonAIC准则下线性回归实现及模型检验案例分析
from sklearn.model_selection import train_test_split
全栈程序员站长
2022/08/31
9910
Python数据科学:线性回归
数据库:一个存储数据的工具。因为Python是内存计算,难以处理几十G的数据,所以有时数据清洗需在数据库中进行。
小F
2020/10/09
1.1K0
Python数据科学:线性回归
机器学习回归模型的最全总结!
回归分析为许多机器学习算法提供了坚实的基础。在这篇文章中,我们将介绍回归分析概念、7种重要的回归模型、10 个重要的回归问题和5个评价指标。
算法进阶
2023/09/21
2K0
机器学习回归模型的最全总结!
回归分析
在一些问题中,常常希望根据已有数据,确定目标变量(输出,即因变量)与其它变量(输入,即自变量)的关系。当观测到新的输入时,预测它可能的输出值。这种方法叫回归分析(确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法)。
爱编程的小明
2022/09/05
9330
回归分析
回归,岭回归。LASSO回归
矩阵表示多元线性回归 Y=BX+a Q(B)=(Y-BX)T(Y-BX)达到最小时的B值。 也即是残差平方和最小时。B(Bi)的值。可以证明B的最小二乘估计=(XTX)-1XTy 其中(XTX)-1为广义逆。 如果X存在线性相关的话,XTX没有逆: 1.出现多重共线性2.当n<p,变量比样本多时,出现奇异 岭回归(Ridge Regression)---------共线性问题 先对数据做标准化 B(K)=(XTX+kI)XTY为B的岭回归估计,其中K为岭参数,I为单位矩阵,KI为扰动。 岭迹图帮助我们发现
学到老
2018/03/16
2.5K0
利用Python进行常见的特征工程
上期说到数据分析师一般对业务数据提取的时候就会进行数据清洗,也会做一些业务逻辑或者数据逻辑上的特征处理。但由于特征工程是数据建模重要的一环,所以这里就做一个简单的总结。希望能给大家带来一些小小地帮助~
HsuHeinrich
2023/03/29
1K0
利用Python进行常见的特征工程
R语言数据分析与挖掘(第四章):回归分析(3)——变量的选择
  在数据挖掘的实战过程中,经常会遇到变量非常多的情况,即数据的维数很高,也称为“维数灾难”问题。在我们生物医学统计领域,一个数据集中可能存在成百上千个变量,对于回归处模而言,并不是越多变量越好,利用少而精的变量建模显得极为重要,如何选择变量子集就是解决问题的关键。
DoubleHelix
2019/12/13
8.9K0
R语言数据分析与挖掘(第四章):回归分析(3)——变量的选择
评分卡模型(二)基于评分卡模型的用户付费预测
只需要定义好什么是好人,什么是坏人,就可以按照标准流程构建评分卡了,是不是很方便~
HsuHeinrich
2023/05/25
1.3K0
评分卡模型(二)基于评分卡模型的用户付费预测
数据分析之回归分析
回归,最初是遗传学中的一个名词,是由生物学家兼统计学家高尔顿首先提出来的。他在研究人类的身高时,发现高个子回归于人口的平均身高,而矮个子则从另一个方向回归于人口的平均身高。
黄成甲
2018/09/12
3.7K0
数据分析之回归分析
相关推荐
Python 根据AIC准则定义向前逐步回归进行变量筛选(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验