超越线性回归

Python 中的广义线性模型

Ita Cirovic Donev

Data Science Consultant

课程目标

  • 学习 GLM 基础
  • 训练 GLM
  • 解读模型结果
  • 评估模型性能
  • 计算预测值
  • 第1章:GLM 如何扩展线性模型
  • 第2章:二项(逻辑)回归
  • 第3章:泊松回归
  • 第4章:多变量逻辑回归
Python 中的广义线性模型

线性模型回顾

工作年限与薪资的散点图。

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon}$

Python 中的广义线性模型

线性模型回顾

工作年限与薪资的散点图。

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times{\text{experience}} + \epsilon$

$\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon$

其中:
$\color{#00A388}y$ - 响应变量(输出)

Python 中的广义线性模型

线性模型回顾

工作年限与薪资的散点图。

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1\color{#FF6138}{x_1} + \epsilon}$

其中:
$y$ - 响应变量(输出)
$\color{#FF6138}x$ - 解释变量(输入)

Python 中的广义线性模型

线性模型回顾

工作年限与薪资的散点图。

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \epsilon}$

其中:
$y$ - 响应变量(输出)
$x$ - 解释变量(输入)
$\color{#007AFF}{\beta}$ - 模型参数
$\color{#007AFF}{\beta_0}$ - 截距
$\color{#007AFF}{\beta_1}$ - 斜率

Python 中的广义线性模型

线性模型回顾

工作年限与薪资的散点图。

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \color{#B12BFF}\epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \color{#B12BFF}\epsilon}$

其中:
$y$ - 响应变量(输出)
$x$ - 解释变量(输入)
$\color{#007AFF}{\beta}$ - 模型参数
$\color{#007AFF}{\beta_0}$ - 截距
$\color{#007AFF}{\beta_1}$ - 斜率
$\color{#B12BFF}{\epsilon}$ - 随机误差

Python 中的广义线性模型

线性模型 - ols()

from statsmodels.formula.api import ols
model = ols(formula = 'y ~ X', 
            data = my_data).fit()

广义线性模型 - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Python 中的广义线性模型

线性模型的假设

工作年限与薪资数据的线性拟合。

$$ \normalsize{{\text{salary} = \color{blue}{25790} + \color{blue}{9449}\times\text{experience}}} $$

回归函数

$\normalsize{E[y] = \mu = \beta_0 + \beta_1x_1}$

假设

  • 参数线性
  • 误差独立且服从正态分布
  • 方差恒定
Python 中的广义线性模型

如果……?

  • 响应为二元或计数 $\rightarrow \color{red}{\text{非连续}}$

连续、二元与泊松随机变量的分布图。

  • $y$ 的方差非常数 $\rightarrow \color{red}{\text{依赖均值}}$
Python 中的广义线性模型

数据集——鲎的筑巢

变量名 说明
sat 巢中存在的卫星蟹数量
y 巢中至少有一只卫星蟹;0/1
weight 雌蟹体重(kg)
width 雌蟹体宽(cm)
color 1 - 浅中,2 - 中等,3 - 深中,4 - 深色
spine 1 - 两侧良好,2 - 一侧磨损/断裂,3 - 两侧磨损/断裂
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Python 中的广义线性模型

线性模型与二元响应

 

$\text{satellite crab} \sim \text{female crab weight}$

y ~ weight

$P(\text{有卫星蟹})=P(y=1)$

Python 中的广义线性模型

线性模型与二元响应

雌蟹体重与响应(附近至少一只卫星蟹)的散点图。

Python 中的广义线性模型

线性模型与二元响应

雌蟹体重与响应(附近至少一只卫星蟹)的线性拟合。

Python 中的广义线性模型

线性模型与二元响应

读取雌蟹体重与响应(附近至少一只卫星蟹)线性拟合的概率值。

Python 中的广义线性模型

线性模型与二元数据

在雌蟹体重与响应(附近至少一只卫星蟹)的数据上添加 GLM(二项)拟合。

Python 中的广义线性模型

线性模型与二元数据

读取 GLM(二项)拟合下雌蟹体重与响应(附近至少一只卫星蟹)的概率值。

Python 中的广义线性模型

由概率到类别

按设定概率阈值划分模型输出。

Python 中的广义线性模型

Ayo berlatih!

Python 中的广义线性模型

Preparing Video For Download...