二元数据与逻辑回归

Python 中的广义线性模型

Ita Cirovic Donev

Data Science Consultant

二元响应数据

  • 二分类响应 $\rightarrow \large{\texttt{\color{#079EA1}{0},\color{#ED715F}{1}}}$

示例:

  • 信用评分 $\rightarrow \texttt{\color{#ED715F}{"违约"}/\color{#079EA1}{"不违约"}}$
  • 测验结果 $\rightarrow \texttt{\color{#079EA1}{"通过"}/\color{#ED715F}{"未通过"}}$
  • 欺诈检测 $\rightarrow \texttt{\color{#ED715F}{"欺诈"}/\color{#079EA1}{"非欺诈"}}$
  • 产品选择 $\rightarrow \texttt{\color{#2485F2}{"产品 ABC"}/\color{#F2AC30}{"产品 XYZ"}}$
Python 中的广义线性模型

二元数据

非分组

  • 单次事件
  • 抛 1 枚硬币
  • 两种可能结果:0/1
  • $Bernoulli(p)$ 或
  • $Binomial(n=1,p)$

分组

  • 多次事件
  • 抛多枚硬币
  • 给定 $n$ 次试验中的成功次数
  • $Binomial(n,p)$
Python 中的广义线性模型

逻辑函数

学习小时数与测验通过/未通过(0/1)的散点图

Python 中的广义线性模型

逻辑函数

学习小时数与测验通过/未通过(0/1)的散点图

  • 测试结果:$PASS=1$,$FAIL=0$

  • 目标:建模

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Hours of study}$

Python 中的广义线性模型

逻辑函数

学习小时数与测验通过/未通过(0/1)的逻辑拟合

  • 测试结果:$PASS=1$,$FAIL=0$

  • 目标:建模

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Hours of study}$

  • 使用逻辑函数

$f(z) = \frac{1}{(1+\exp(-z))}$

Python 中的广义线性模型

赔率与赔率比

       

$$ ODDS = \frac{\text{事件发生}}{\text{事件不发生}} $$

       

$$ \text{ODDS RATIO} = \frac{odds 1}{odds 2} $$

Python 中的广义线性模型

赔率示例

  • 4 场比赛 按序列显示 3 胜 1 负

  • 赔率为 3 比 1 用 3 个胜利框作分子、1 个失败框作分母可视化计算赔率。

Python 中的广义线性模型

赔率与概率

  $$ \text{odds} \neq \text{probability} $$

  $$ \text{odds} = \frac{\text{probability}}{1-\text{probability}} $$

  $$ \text{probability} = \frac{\text{odds}}{1+\text{odds}} $$

Python 中的广义线性模型

从概率模型到逻辑回归

 

步骤 1:概率模型

$E(y)=\mu=P(y=1)=\beta_0 + \beta_1x_1$

 

步骤 2:逻辑函数

$f(z) = \large{\frac{1}{(1+\exp(-z))}}$

 

步骤 3:应用逻辑函数 $\rightarrow$ 逆逻辑变换(INVERSE-LOGIT)

$\mu = \large{\frac{1}{1+\exp(-(\beta_0+\beta_1x_1))}} = \large{\frac{\exp(\beta_0+\beta_1x_1)}{1+\exp(\beta_0+\beta_1x_1)}}$

$1-\mu = \large{\frac{1}{1+\exp(\beta_0+\beta_1x_1)}}$

Python 中的广义线性模型

从概率模型到逻辑回归

 

  • 概率 $\rightarrow$ 赔率 $$ ODDS=\frac{\mu}{1-\mu} = exp{(\beta_0+\beta_1x_1)} $$  
  • 取对数变换 $\rightarrow \color{#CF5383}{\text{逻辑回归}}$

  $$ LOGIT(\mu)=log(\frac{\mu}{1-\mu}) = \beta_0+\beta_1x_1 $$

Python 中的广义线性模型

Python 中的逻辑回归

函数 - glm()

model_GLM = glm(formula = 'y ~ x',                        
                data = my_data, 
                family = sm.families.Binomial()).fit

输入

y = [0,1,1,0,...]
y = ['No','Yes','Yes',...]
y = ['Fail','Pass','Pass',...]
Python 中的广义线性模型

Vamos praticar!

Python 中的广义线性模型

Preparing Video For Download...