回归分析

回归分析

回归分析是通过建立模型来研究变量之间相互关系的密切程度、结构状态及进行模型预测的有效工具

回归模型分类

一、线性回归:因变量与自变量是线性关系

算法描述:对一个或多个自变量和因变量的线性关系进行建模,可用最小二乘法求解模型系数

二、非线性回归:因变量和自变量之间不都是线性关系

算法描述:对一个或多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单函数变化转化成线性关系,用线性回归的思想求解;如果不能转化,用非线性最小二乘法求解

三、Logistic回归:因变量只有 1 1 1 0 0 0 两种取值

算法描述:是广义线性模型的特例子,利用 Logistic 函数将因变量的取值范围控制在 0 0 0 1 1 1 之间,表示取值为 1 1 1 的概率

四、岭回归:参与建模的自变量之间具有多重共线性

算法描述:是一种改进最小二乘估计的方法

五、主成分回归:参与建模的自变量之间有多重共线性

算法描述:主成分回归是根据主成分分析的思想提出来的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计(无偏估计: 估计量的数学期望等于被估计参数的真实值,则称此此估计量为被估计参数的无偏估计,即 E ( θ ˆ ) E(θˆ) E(θˆ) θ θ θ。样本均值的期望等于总体均值,所以样本均值为无偏估计;有偏估计: 若 θ ˆ θˆ θˆ的数学期望不为 θ θ θ,即 E ( θ ˆ ) E(θˆ) E(θˆ) θ θ θ ,则称为 θ θ θ的有偏估计。
样本方差的期望是有偏估计)。可以消除自变量之间的多重共线性

线性回归模型是相对简单的回归模型,但是通常因变量和自变量之间呈现某种曲线关系,就需要建立非线性回归模型。
Logistic 回归属于概率型非线性回归,分为二分类和多分类的回归模型。对于二分类的 Logistic 回归,因变量 y y y 只有“是、否”两个取值,记为 1 1 1 0 0 0
当自变量之间出现多重共线性时,用最小二乘估计的回归系数将会不准确,消除多重共线性的参数改进的估计方法主要有岭回归和主成分回归。

Logistic 回归分析介绍

(1)Logistic函数

Logistic 回归模型中的因变量的只有 1 、 0 1、0 10 两种取值。假设在 p 个独立自变量 x 1 x_1 x1, x 2 x_2 x2,… x p x_p xp, 记 y y y 1 1 1的概率是 p = P ( y = 1 ∣ X ) p=P(y=1|X) p=P(y=1X,取 0 0 0的概率是 1 − p 1-p 1p,取 1 1 1 0 0 0 的概率之比为 p 1 − p \frac{p}{1-p} 1pp, 称为事件的优势比(odds),对 odds 取自然对数即得 Logistic 变换 L o g i t ( p ) Logit(p) Logit(p) = = = l n ln ln ( ( ( p 1 − p \frac{p}{1-p} 1pp ) ) )。令 L o g i t ( p ) Logit(p) Logit(p) = = = l n ln ln ( ( ( p 1 − p \frac{p}{1-p} 1pp ) ) ) = = = z z z,则 p p p = = = 1 1 + e − z \frac{1}{1+ e^{-z}} 1+ez1 即为 Logistic函数,如图所示:
Logistic函数,转自百度百科
p p p ( 0 , 1 ) (0,1) (0,1) 之间变化时,odds 的取值范围是 ( 0 , + ∞ ) (0,+\infty) (0,+),则 l n ( p 1 − p ) ln(\frac{p}{1-p}) ln(1pp) 的取值范围是 ( − ∞ , + ∞ ) (-\infty,+\infty) (,+)

(2)Logistic 回归模型

Logistic 回归模型是建立 l n ( p 1 − p ) ln(\frac{p}{1-p}) ln(1pp) 与自变量的线性回归模型。
Logistic 回归模型为:

l n ( p 1 − p ) = β 0 + β 1 x 1 + . . . + β p x p + ξ ln(\frac{p}{1-p}) = \beta_0 + \beta_1x_1 + ... + \beta_px_p + \xi ln(1pp)=β0+β1x1+...+βpxp+ξ

因为 l n ( p 1 − p ) ln(\frac{p}{1-p}) ln(1pp) 的取值范围是 ( − ∞ , + ∞ ) (-\infty,+\infty) (,+),这样,自变量 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 可在任意范围内取值。
g ( x ) = β 0 + β 1 x 1 + . . . + β p x p g(x) = \beta_0 + \beta_1x_1 + ... + \beta_px_p g(x)=β0+β1x1+...+βpxp,得到:
p = P ( y = 1 ∣ X ) = 1 1 + e − g ( x ) p = P(y = 1|X) = \frac{1}{1 + e^{-g(x)}} p=P(y=1X)=1+eg(x)1

1 − p = P ( y = 0 ∣ X ) = 1 − 1 1 + e − g ( x ) = 1 1 + e g ( x ) 1 - p = P(y = 0|X) = 1 - \frac{1}{1 + e^-g(x) } = \frac{1}{1 + e^g(x)} 1p=P(y=0X)=11+eg(x)1=1+eg(x)1

(3) Logistic 回归模型解释
p 1 − p = e β 0 + β 1 x 1 + . . . + β p x p + ξ \frac{p}{1-p} = e^{\beta_0 + \beta_1x_1 + ... + \beta_px_p + \xi} 1pp=eβ0+β1x1+...+βpxp+ξ

β 0 : \beta_0: β0: 在没有自变量,即 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 全部取 0 , y = 1 0,y = 1 0,y=1 y = 0 y = 0 y=0发生概率之比的自然对数;
β i : \beta_i: βi: 某自变量 x i x_i xi变化时,即 x i = 1 x_i = 1 xi=1 x i = 0 x_i = 0 xi=0 相比, y = 1 y = 1 y=1优势比的对数值。

预测函数

对于二分类问题, y ∈ { 0 , 1 } y\in \begin{Bmatrix}0, 1\end{Bmatrix} y{0,1} 1 1 1表示正例, 0 0 0表示负例。逻辑回归是在线性函数 z z z 输出预测实际值的基础上,寻找一个假设函数 p = 1 1 + e − z p = \frac{1}{1+ e^{-z}} p=1+ez1 ,将实际值映射到 0 , 1 0, 1 0,1之间,如果 p &gt; = 0.5 p &gt;= 0.5 p>=0.5 ,则预测 y = 1 y = 1 y=1,及 y y y 属于正例;如果 p &lt; 0.5 p &lt; 0.5 p<0.5,则预测 y = 0 y = 0 y=0,及 y y y 属于负例。
例如,如果对于给定的 x x x,通过已经确定的参数计算得出 p = 0.7 p = 0.7 p=0.7,则表示有 70 % 70\% 70% 的几率 y y y 为正例,相应的 y y y 为负例的几率为 0.3 0.3 0.3

决策面

在逻辑回归中,我们预测:

  • p p p 大于等于 0.5 0.5 0.5 时,则预测 y = 1 y = 1 y=1
  • p p p 小于 0.5 0.5 0.5 时,则预测 y = 0 y = 0 y=0

根据上面绘制出的 S S S 形函数图像,我们知道:

  • z = 0 z = 0 z=0 时, g ( z ) = 0.5 g(z) = 0.5 g(z)=0.5
  • z &gt; 0 z &gt; 0 z>0 时, g ( z ) &gt; 0.5 g(z) &gt; 0.5 g(z)>0.5
  • z &lt; 0 z &lt; 0 z<0 时, g ( z ) &lt; 0.5 g(z) &lt; 0.5 g(z)<0.5

假设我们有一个模型: 1 1 + e − z = g ( β 0 + β 1 x 1 + β 2 x 2 ) \frac{1}{1 + e^{-z}} = g(\beta_0 + \beta_1x_1 + \beta_2x_2) 1+ez1=g(β0+β1x1+β2x2),并且参数 β \beta β 是向量 [ − 3 , 1 , 1 ] \begin{bmatrix}-3,1, 1\end{bmatrix} [3,1,1]。则当 − 3 + x 1 + x 2 -3 + x_1 + x_2 3+x1+x2 >= 0,即当 x 1 + x 2 &gt; = 3 x_1 + x_2 &gt;= 3 x1+x2>=3 时,模型将预测 y = 1 y = 1 y=1
绘制直线 x 1 + x 2 = 3 x_1 + x_2 = 3 x1+x2=3,便是我们模型的分界线,将预测为 1 1 1 的区域和预测为 0 0 0 的区域分隔开。
在这里插入图片描述

损失函数

衡量模型预测的好坏。我们希望我们预测的公式与实际值差值越小越好,所以就定义了一种衡量模型好坏的方式,即损失函数(用来表现预测与实际数据的差距程度)。损失函数越小,模型就越好。
既然是分类任务,那么我们可以对于每个类别分别取计算它们各自的损失呀。对于真实标记是1的样本,我们希望预测值越接近于 1 1 1,损失越小;对于真实标记是 0 0 0 的样本,我们希望预测值越接近于 0 0 0 时损失越小, − l o g -log log 函数正好满足以上情况
在这里插入图片描述

Logistic 回归建模步骤

1)根据分析目的设置指标变量(因变量和自变量),然后搜集数据,根据收集到的数据,对特征再次进行筛选;
2) y y y 1 1 1 的概率是 p = P ( y = 1 ∣ X ) p = P(y = 1|X) p=P(y=1X), ,取 0 0 0 的概率是 1 − p 1-p 1p,用 l n ( p 1 − p ) ln(\frac{p}{1 - p}) ln(1pp) 和自变量列出线性回归方程,估计出模型中的回归系数;
3)进行模型试验。模型有效性的检验指标有很多,最基本的有正确率,其次是混淆矩阵、ROC曲线、KS值等。
4)模型应用:输入自变量的取值,就可以得到预测变量的值,或者根据预测变量的值去控制自变量的值。

下面对某银行在降低贷款拖欠率的数据进行逻辑回归建模,该数据示例如下表所示:

年龄教育工龄地址收入负债率信用卡负债其他负债违约
4131712176.009.3011.365.011
27110631.0017.301.364.000
401151455.005.500.862.170
4111514120.002.902.660.820
2422028.0017.301.793.061

详细表格数据bankloan.xls

利用 Scikit-Learn 对这个数据进行逻辑回归分析。首先特征筛选,特征筛选的方法有很多,主要包含在 Scikit-Learn 的 feature_selection 库中,比较简单的有通过 F 检验(f_regresson)来给出各个特征的 F 值和 p 值,从而可以筛选变量(选择 F 值大的或者 p 值小的特征)。其次有 递 归 特 征 消 除 ① 递归特征消除^① (Recursive Feature Elimination, RFE)和 稳 定 性 选 择 ② 稳定性选择^② (Stability Selection)等比较新的方法。这里使用了稳定性选择方法中的随机逻辑回归进行特征筛选,然后利用筛选后的特征建立逻辑回归模型,输出平均正确率,代码如下:

import pandas as pd
from sklearn.linear_model import LogisticRegression as LR  # 逻辑回归
from sklearn.linear_model import RandomizedLogisticRegression as RLR   # 随机逻辑回归
import warnings
warnings.filterwarnings("ignore")


# 参数初始化
filename = '../Data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:, :8].values  # 每行前8列转换成数组形式
y = data.iloc[:, 8].values  # 每行最后一列转换成数组形式


rlr = RLR()  # 建立随机逻辑模型,筛选变量
rlr.fit(x, y)  # 训练模型
rlr.get_support(indices=True)  # 获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
print(u'通过随机逻辑回归模型筛选特征结束。')
print(u'有效特征为:%s' % ','.join(data.columns[rlr.get_support(indices=True)]))
x = data[data.columns[rlr.get_support(indices=True)]].values  # 筛选好特征


lr = LR()  # 建立逻辑回归模型
lr.fit(x, y)  # 用筛选后的特征数据来训练模型
print(u'逻辑回归模型训练结束')
print(u'模型的平均正确率为:%s' % lr.score(x, y))  # 给出模型的平均正确率

结果:
在这里插入图片描述
从上面的结果看出,采用随机逻辑回归剔除变量,分别剔除了 x2、x8、x1、x5,最终构建的模型包含的变量为常量 x3、x4、x6、x7。在建立随机逻辑回归模型时,使用了默认阈值 0.25 ,可以用 RLR(selection_threshold = 0.5) 手动设置阈值。逻辑回归本质上还是一种线性模型,因此这里的模型有效性检验本质还是在做线性相关检验,因此,筛选出来的结果说明具有比较强的线性相关性,然而,被筛选掉的变量并不一定就跟结果没有关系,因为他们之间很可能是非线性关系。对于非线性关系的变量筛选方法有决策树、神经网络等。

递归特征消除 的主要思想是反复的构建模型(如 SVM 或者回归模型),然后选出最好的(或者最差的)的特征(可以根据系数来选),把选出来的特征放到一边,然后在剩余的特征上重复这个过程,直到遍历所有特征。这个过程中特征被消除的次序就是特征的排序。因此这是一种寻找最有特征子集的贪心算法。

稳定性选择 是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、 SVM 或其他类似的方法。它的主要是想是在不同的数据子集和特征子集上运行特征选择算法,不断重复,最终汇总特征选择结果。比如,可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。在理想情况下,重要特征的得分会接近 100%。稍微弱一点的特征得分是非 0 的数,而最无用特征得分将会接近于 0 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值