数据学习笔记2 逻辑回归

1.二元分类问题

  • 失效的线性回归

线性回归需要满足3个基本假设

(1)因变量和自变量之间是线性关系

(2)自变量和干扰项相互独立

(3)没被线性模型捕捉到的干扰项服从正态分布

对于二元分类问题,因变量的值表示一种选择,只有0/1两个值,但模型预测值却是充满实数集的连续变量值,与设定不符

  • 窗口效应

假设有自变量集合X_{i}=(x_{1,i},x_{2,i}...x_{k,i},1).他们决定购买衣服对客户i的效用,包括正效用y_{i}^{*}和负效用\tilde{y^{_{i}}},将观察到的客户购买行为记为y_{i},则y_{i}=1表示购买,y_{i}=0表示未购买,于是有

y_{i}^{*}=f(X_{i})

\tilde{y_{i}}=g(X_{i})

y_{i}=\begin{cases} 1 & \text{ if } y_{i}^{*}>\tilde{y_{i}} \\ 0& \text{ if } y_{i}^{*}\leq \tilde{y_{i}} \end{cases}

进一步假设正效用和负效用和自变量是线性关系。具体地,假设\varphi =(\varphi_{1},\varphi_{2},...,\varphi_{k},\varphi_{k+1})^{T},\omega =(\omega _{1},\omega _{2},...,\omega _{k},\omega _{k+1})^{T}是模型参数,有

y_{i}^{*}=X_{i}\varphi +\theta _{i}

\tilde{y_{i}}=X_{i}\omega +\tau _{i}

其中,\theta _{i}\tau _{i}是相互独立的随机变量,且都服从正态分布。

z_{i}=y_{i}^{*}-\tilde{y_{i}},\gamma =\varphi -\omega,\varepsilon _{i}=\theta _{i}-\tau _{i},可以得到

z_{i}=X_{i}\gamma +\varepsilon _{i}

y_{i}=\begin{cases} 1 & \text{ if } z_{i}>0 \\ 0& \text{ if } else \end{cases}

进一步有

P(y_{i}=1)=P(z_{i}>0)=P(\varepsilon _{i}>-X_{i}\gamma )=1-P(\varepsilon _{i}\leqslant -X_{i}\gamma)=1-F_{\varepsilon }(-X_{i}\gamma)

其中,F_{\varepsilon }是随机变量\varepsilon的累积分布函数,P(y_{i}=1)表示客户购买的比例。这个公式对应的模型叫probit回归,用来解决分类问题

在搭建模型过程中,假设了隐含变量y_{i}^{*}\tilde{y_{i}},这类模型称为隐含变量模型。

由于正态分布的分布函数没有解析表达式,使得probit回归的参数估计比较困难。 

  • 逻辑分布

逻辑分布可以很好的近似正态分布

标准逻辑分布的概率密度函数为

f(x)=e^{-x}/(1+e^{-x})^{^{2}}

对应的累积分布函数(S曲线)为

S(x)=1/(1+e^{^{-x}})

S曲线描述了某一方竞争胜出的概率

逻辑回归模型:

P(y_{i}=1)=1/(1+e^{-x_{i}\beta })

P(Y=1)=1/(1+e^{^{-X\beta }})

第一个公式表示客户i购买概率的估计,第二个式子以矩阵的形式,将所有客户的购买概率写成一个表达式。其中,X_{i}=(x_{1,i},x_{2,i}...x_{k,i},1)表示客户i的特征,\beta =(\beta _{1},\beta _{2},...,\beta _{k},\beta _{k+1})^{T}是模型参数

P/(1-P)称为发生比(odds),表示事件发生和不发生的比例

逻辑回归的假设是:事件发生比的对数为线性模型

\ln P(y_{i}=1)/[1-P(y_{i}=1)]=X_{i}\beta

  • 统计学角度:参数估计之似然函数

 被预测量y_{i}是离散的,取值为1或0,所以y_{i}的概率分布函数为

P(y_{i})=P(y_{i}=1)^{y_{i}}P(y_{i}=0)^{1-y_{i}}

y_{i}之间相互独立,可以推出参数\beta的似然函数

L=P(Y|\beta )=\prod _{i}h(X_{i})^{y_{i}}[1-h(X_{i})]^{1-y_{i}}

其中,h(X_{i})=1/(1+e^{-X_{i}\beta })

似然函数两边同时取对数,计算得参数的最大似然为

\hat{\beta }=argmax_{\beta }\sum _{i}y_{i}\ln h(X_{i})+(1-y_{i})\ln [1-h(X_{i})]

  • 机器学习角度:参数估计之损失函数

交叉熵:两个(离散)概率分布之间的距离。根据机器学领域中的KL散度推导而来,使估计的概率分布距离真实的概率分布最近,等价于让损失函数达到最小值

概率距离型损失函数为

LL=-\sum _{i}{y_{i}\ln h(X_{i})+(1-y_{i})\ln [1-h(X_{i})]}

为防止过拟合,常加入1-范数或2-范数惩罚项

  • 从概率到选择:参数估计之最终预测

一般情况下,当\hat{P}(y_{i}=1)>\hat{P}(y_{i}=0)时,认为客户会购买是合情理的,则最终的模型结果可写成

\hat{y}_{i}=\begin{cases} 1 & \text{ if } 1/(1+e^{-X_{i}\beta })>0.5 \\ 0& \text{ if } else \end{cases}

  • 从非线性到线性

逻辑回归在二维空间中的作用就是将非线性问题转换为线性问题,然后用线性回归去解决。

2.模型实现

  • 初步分析数据
变量名变量类型说明
age数值型年龄
workclass类别型工作类型
fnlwgt数值型抽样权重
education类别型学历
education_num数值型受教育年限
martial_status类别型婚姻状况
occupation类别型所在行业
relationship类别型家庭角色
race类别型种族
sex类别型性别
capital_gain数值型年度投资收益
capital_loss数值型年度投资损失
hours_per_week数值型每星期工作时间
native_country类别型出生国家
label类别型年收入分类

 

数值型变量可以直接运算,类别型变量不能直接运算

利用统计指标分析数据

(1)利用DataFrame的describe函数,可以得到数据的基本统计信息,如平均值、标准差等。

要全部变量的统计信息:describe(include='all')

(2)交叉报表:一种常见的数据分析方法,可以用来描述两个变量之间的关系(比如这里的“受教育年限”和“年收入”)

归一化以后表示:元素在对应行中的占比

  • 搭建模型

(1)用第三方库statsmodels搭建模型

使用statsmodels搭建模型时,“formula”字符串定义模型的形式

formula="label_code~a*age+b*age*education_num+c"

其中,label_code是被预测变量,age以及age*education_num是特征

(2)用统计学方法分析模型参数估值的稳定性 

统计分析结果包含参数的估计值和置信区间,用f_test做假设检验

  • 理解模型结果

(1)事件发生比:模型参数的意义 

P/(1-P)称为发生比,记为odds,表示事件发生与不发生的比例

(2)边际效应:变量变动对概率的影响

边际效应:被预测量对这个变量的导数

逻辑回归的边际效应不稳定,线性回归的边际效应恒定。

对于某个变量,先计算数据样本内所有数据点上的边际效应,再计算这些边际效应的均值,作为该变量的边际效应。

get_margeff(at="overall").summary() 可以返回变量的边际效应和对应的置信区间

3.模型效果评估

 逻辑回归模型的结果表示事件发生的概率,需要设定恰当的阈值得到二值结果

查准率:precision=TP/(TP+FP)

查全率(召回率):recall=TP/(TP+FN)

其中,TP表示预测为1且实际为1的部分,FP表示预测为1且实际为0的部分,FN表示预测为0且实际为1的部分

结合两者定义二元分类问题评估指标

F_{\beta }=(1+\beta ^{2})*precision*recall/(\beta ^{2}*precision+recall)

调节\beta的取值可以选定合适的阈值\alpha

接收者操作特征曲线ROC:将模型的阈值从0到1,把每个阈值对应的预测结果记录在图上

AUC:ROC曲线下的面积,AUC值越大表示模型预测效果越好,可以被看作模型预测正确的概率

4.多元分类问题

  • 多元逻辑回归

对于多元分类问题,设置K个隐含变量,参数的似然函数为

\ln L=\sum_{i} \sum^{k-1}_{0} 1_{​{Y_{i}=j}}\ln P(Y_{i}=j)

  • 从二元到多元

对于多元分类,为每一个类别建立一个分类器,将K元分类问题转换成K个二元分类问题

\hat{Y_{i}}=argmax_{t}\hat{P_{t}}(\tilde{Y_{i,t}}=1)

但是这个方案容易遇到非均衡数据集的问题

  • 模型实现

第三方算法库scikit-learn和statsmodels都实现了这两种算法,下面以scikit-learn为例

model=LogisticRegression(multi_class=methods[i],solver='sag',max_iter=1000,random_state=42)

 

5.非均衡数据集

  • 准确度悖论

对于非均衡数据集,准确度指标会严重失真,即使ACC很高,预测也不准确

  • 一个例子

  • 解决方法

通过调整各个类别的比重,解决非均衡数据集的问题

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值