常用评价指标简介
       当前统计学以计算机科学作为支撑,机器于人工的优势是计算速度,但机器无法自行判断运算何时退出,因此需要定量指标作为运算退出的标志。对于预测类的统计模型来说,常见的指标有赤池信息准则(AIC)、贝叶斯信息准则(BIC)、R方、ROC曲线下方的面积大小(AUC)等指标。指标无优劣之分,在实际运用中很多情况甚至会出现不同评价指标相悖的情况,因此作为模型开发者不能只追求好看的评估指标。在本文中,实现模型时选择AIC作为评价指标,AIC是一种基于残差平方和进行变形的评价指标,因此AIC越小模型拟合效果越好。作为一种容易理解评估指标,AIC的数学公式为  ,其中RSS为残差平方和,n为观测数,k为变量数。从公式可以看出该指标综合考虑了模型的简洁性(变量个数)和准确性。

逻辑回归变量筛选方法简介
        逻辑回归的变量选择中,目前主要使用的方法有向前回归法、向后回归法和逐步回归。向前回归法是将自变量依次加入模型,每加入一个特征都利用检验指标检验,保留使模型指标更优的自变量,依次不断迭代加入,直到评估指标不能再优化。向后回归法是将所有变量都放入模型之后,一次迭代剔除变量,将某一自变量拿出模型,若模型评估指标更优化,则剔除此变量,对全部变量进行迭代,直到评估指标不能再优化。逐步回归综合向前和向后两种方法,在每一次加入新特征后(即向前法加入),再依次删掉每个特征(即向后法删除),考虑所加入的新变量对每个已有变量的影响。

基于其原理,其运行效率从高到低依次为 向前≥向后≥逐步(不同的变量情况可能会导致向后和逐步法的效率不一致),这是因为向前回归依次加入自变量计算评估指标数值,但一般由于不断剔除特征并不会整的会对全部自变量进行运算,而向后法在运算之初就需要使用全部特征进行运算,其效率自然会低一些,逐步回归由于每一次迭代同时进行了依次向前回归和向后回归,因此其效率最低。根据原理其效果应该为 逐步≥向后≥向前,但在实际应用中三者差别并不会太大。


#################################### 逐步回归#################################
def stepwise_select(data,label,cols_all,method='forward'):'''args:data:数据源,dflabel:标签,strcols_all:逐步回归的全部字段methrod:方法,forward:向前,backward:向后,both:双向return:select_col:最终保留的字段列表,list summary:模型参数AIC:aic'''import statsmodels.api as sm######################## 1.前向回归# 前向回归:从一个变量都没有开始,一个变量一个变量的加入到模型中,直至没有可以再加入的变量结束if method == 'forward':  add_col = [] AIC_None_value = np.infwhile cols_all:# 单个变量加入,计算aicAIC = {}for col in cols_all:print(col)X_col = add_col.copy()X_col.append(col)X = sm.add_constant(data[X_col])y = data[label]LR = sm.Logit(y, X).fit()AIC[col] = LR.aicAIC_min_value = min(AIC.values())   AIC_min_key = min(AIC,key=AIC.get)# 如果最小的aic小于不加该变量时的aic,则加入变量,否则停止if AIC_min_value < AIC_None_value:cols_all.remove(AIC_min_key)add_col.append(AIC_min_key)AIC_None_value = AIC_min_valueelse:breakselect_col = add_col######################## 2.后向回归# 从全部变量都在模型中开始,一个变量一个变量的删除,直至没有可以再删除的变量结束elif method == 'backward': p = True  # 全部变量,一个都不剔除,计算初始aicX_col = cols_all.copy()X = sm.add_constant(data[X_col])y = data[label]LR = sm.Logit(y, X).fit()AIC_None_value = LR.aic        while p:      # 删除一个字段提取aic最小的字段AIC = {}for col in cols_all:print(col)X_col = [i for i in cols_all if i!=col]X = sm.add_constant(data[X_col])LR = sm.Logit(y, X).fit()AIC[col] = LR.aicAIC_min_value = min(AIC.values()) AIC_min_key = min(AIC, key=AIC.get)  # 如果最小的aic小于不删除该变量时的aic,则删除该变量,否则停止if AIC_min_value < AIC_None_value:cols_all.remove(AIC_min_key)AIC_None_value = AIC_min_valuep = Trueelse:break select_col = cols_all             ######################## 3.双向回归elif method == 'both': p = Trueadd_col = []# 全部变量,一个都不剔除,计算初始aicX_col = cols_all.copy()X = sm.add_constant(data[X_col])y = data[label]LR = sm.Logit(y, X).fit()AIC_None_value = LR.aic        while p: # 删除一个字段提取aic最小的字段AIC={}for col in cols_all:print(col)X_col = [i for i in cols_all if i!=col]X = sm.add_constant(data[X_col])LR = sm.Logit(y, X).fit()AIC[col] = LR.aic     AIC_min_value = min(AIC.values())AIC_min_key = min(AIC, key=AIC.get)if len(add_col) == 0: # 第一次只有删除操作,不循环加入变量if AIC_min_value < AIC_None_value:cols_all.remove(AIC_min_key)add_col.append(AIC_min_key)AIC_None_value = AIC_min_valuep = Trueelse:breakelse:# 单个变量加入,计算aicfor col in add_col:print(col)X_col = cols_all.copy()X_col.append(col)X = sm.add_constant(data[X_col])LR = sm.Logit(y, X).fit()AIC[col] = LR.aicAIC_min_value = min(AIC.values())AIC_min_key = min(AIC, key=AIC.get)if AIC_min_value < AIC_None_value:# 如果aic最小的字段在添加变量阶段产生,则加入该变量,如果aic最小的字段在删除阶段产生,则删除该变量if AIC_min_key in add_col:cols_all.append(AIC_min_key)add_col = list(set(add_col)-set(AIC_min_key))p = True                    else: cols_all.remove(AIC_min_key)add_col.append(AIC_min_key)p = TrueAIC_None_value = AIC_min_valueelse:breakselect_col = cols_all ######################## 模型X = sm.add_constant(data[select_col])LR = sm.Logit(y, X).fit()    summary = LR.summary()AIC = LR.aicreturn select_col,summary,AIC

好的话加个关注,后续内容更多!

Python 实现逐步回归相关推荐

  1. python逐步回归筛选变量_利用python实现逐步回归

    逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除.以确保每次引入新 ...

  2. python直接进行逐步回归_【Python】逐步回归

    [Python]逐步回归 1. 模型选择之AIC与BIC 此处模型选择我们只考虑模型参数数量,不涉及模型结构的选择. 很多参数估计问题均采用似然函数作为目标函数,当训练数据足够多时,可以不断提高模型精 ...

  3. 用Python做逐步回归

    用Python做逐步回归 算法介绍 数据情况 案例 数据 代码 结果 算法介绍 逐步回归是一种线性回归模型自变量选择方法: 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验, ...

  4. python实现逐步回归_Python怎么做逐步回归?

    逐步回归基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除.以确保每次引入新的 ...

  5. python直接进行逐步回归,Python实现逐步回归(stepwise regression)

    从0到1Python数据科学之旅(博主录制) http://dwz.date/cqpw 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验 ...

  6. Python实现逐步回归

    逐步回归(stepwise)的思想 从大量的变量中,选择对建立回归模型起重要影响作用变量的方法. 每一步只引入或剔除一个变量,即每次引入对因变量影响最显著的自变量,并对已在模型中的变量进行逐个检验,把 ...

  7. 【Python】逐步回归

    [参考] 1.  https://datascience.stackexchange.com/questions/937/does-scikit-learn-have-forward-selectio ...

  8. python向前逐步回归

    一,向前逐步回归,相除多重共线性 import statsmodels.formula.api as smf def forward_selected(data, response): "& ...

  9. python实现逐步回归分析_Python实现逐步回归(stepwise regression)

    逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除.以确保每次引入新 ...

最新文章

  1. Hybrid error correction and de novo assembly of single-molecule sequencing reads
  2. SVN版本管理系统的安装 CentOS + Subversion + Apache + Jsvnadmin
  3. [结构型] -- 外观模式
  4. mysql 阿里云 版本_关于阿里云centos版本,mysql5.7的一些注意事项
  5. linux php和java环境变量配置_Linux下配置Java环境变量
  6. Xshell远程管理Linux
  7. 数据库工作笔记008---pg_hba.conf entry for host “192.168.2.111”, user “gpadmin”, database “template1”, SSL
  8. SAP License:初学者使用SAP常见问题
  9. 装饰器模式(Decorator Pattern)
  10. kernel笔记——库文件与系统调用
  11. Web前端:javascript实现图片轮播
  12. 没有光驱照样安装Win7!U盘装系统教程
  13. 多年录制游戏的心得分享
  14. Tara's Beautiful Permutations 组合数学
  15. 静态路由原理及配置(8)
  16. 【校园卡】更新联通校园卡套餐海报及常规操作,校园卡最新消息及选购建议,增加评论功能...
  17. jks证书转为pem证书,TrustedCertEntry not supported的解决办法
  18. 3月18日面试题复盘
  19. 微信卡券之众多坑总结(Java)---优惠券
  20. Excel 之 VBA 入门学习(一)宏与 VBA ,使用技巧

热门文章

  1. 一幅幅天人合一的水墨山水画
  2. 【Windows】屏幕识别文字
  3. 如何实现异地远程登录计算机,第18期分享:人在异地,如何远程控制自己的电脑?...
  4. 产品经理如何更好的适应工作呢?
  5. 安卓的ContentResolver简介
  6. js验证码插件verify
  7. 微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解
  8. C++挖掘程序本质(第二章C++面向对象-下)李明杰-M了个J 配套教材
  9. 【Android】如何分析 ANR 日志
  10. Analog Efex Pro 2 for Mac(胶片特效滤镜软件)