ก้าวข้ามการถดถอยเชิงเส้น

Generalized Linear Models ใน Python

Ita Cirovic Donev

Data Science Consultant

วัตถุประสงค์ของคอร์ส

  • เรียนรู้ส่วนประกอบพื้นฐานของ GLMs
  • ฝึก GLMs
  • แปลผลโมเดล
  • ประเมินประสิทธิภาพโมเดล
  • คำนวณค่าพยากรณ์
  • บทที่ 1: GLMs ขยายโมเดลเชิงเส้นอย่างไร
  • บทที่ 2: การถดถอย Binomial (logistic)
  • บทที่ 3: การถดถอย Poisson
  • บทที่ 4: การถดถอย logistic แบบหลายตัวแปร
Generalized Linear Models ใน 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}$

Generalized Linear Models ใน 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$ - ตัวแปรตอบสนอง (output)

Generalized Linear Models ใน 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$ - ตัวแปรตอบสนอง (output)
$\color{#FF6138}x$ - ตัวแปรอธิบาย (input)

Generalized Linear Models ใน 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$ - ตัวแปรตอบสนอง (output)
$x$ - ตัวแปรอธิบาย (input)
$\color{#007AFF}{\beta}$ - พารามิเตอร์ของโมเดล
$\color{#007AFF}{\beta_0}$ - ค่าตัดแกน (intercept)
$\color{#007AFF}{\beta_1}$ - ความชัน (slope)

Generalized Linear Models ใน 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$ - ตัวแปรตอบสนอง (output)
$x$ - ตัวแปรอธิบาย (input)
$\color{#007AFF}{\beta}$ - พารามิเตอร์ของโมเดล
$\color{#007AFF}{\beta_0}$ - ค่าตัดแกน (intercept)
$\color{#007AFF}{\beta_1}$ - ความชัน (slope)
$\color{#B12BFF}{\epsilon}$ - ความคลาดเคลื่อนแบบสุ่ม (random error)

Generalized Linear Models ใน Python

LINEAR MODEL - ols()

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

GENERALIZED LINEAR MODEL - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Generalized Linear Models ใน Python

ข้อสมมติของโมเดลเชิงเส้น

เส้นโค้งถดถอยเชิงเส้นของข้อมูลประสบการณ์การทำงาน (ปี) และเงินเดือน

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

ฟังก์ชันการถดถอย

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

ข้อสมมติ

  • เป็นเชิงเส้นในพารามิเตอร์
  • ความคลาดเคลื่อนเป็นอิสระและมีการแจกแจงแบบปกติ
  • ความแปรปรวนคงที่
Generalized Linear Models ใน Python

แล้วถ้า...?

  • ตัวแปรตอบสนองเป็นแบบไบนารีหรือนับจำนวน $\rightarrow \color{red}{\text{NOT continuous}}$

กราฟแสดงการกระจายของตัวแปรสุ่มแบบต่อเนื่อง ไบนารี และ Poisson

  • ความแปรปรวนของ $y$ ไม่คงที่ $\rightarrow \color{red}{\text{depends on the mean}}$
Generalized Linear Models ใน Python

ชุดข้อมูล - การทำรังของปูเกือกม้า

ชื่อตัวแปร คำอธิบาย
sat จำนวนปูตัวผู้ที่อาศัยอยู่ในรัง
y มีปูตัวผู้อย่างน้อย 1 ตัวในรัง; 0/1
weight น้ำหนักของปูตัวเมียในกิโลกรัม
width ความกว้างของปูตัวเมียในเซนติเมตร
color 1 - อ่อนปานกลาง, 2 - ปานกลาง, 3 - เข้มปานกลาง, 4 - เข้ม
spine 1 - ปกติทั้งคู่, 2 - สึกหรือหักข้างหนึ่ง, 3 - สึกหรือหักทั้งคู่
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Generalized Linear Models ใน Python

โมเดลเชิงเส้นกับตัวแปรตอบสนองแบบไบนารี

 

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

y ~ weight

$P(\text{satellite crab is present})=P(y=1)$

Generalized Linear Models ใน Python

โมเดลเชิงเส้นกับตัวแปรตอบสนองแบบไบนารี

กราฟกระจายของน้ำหนักปูตัวเมียและตัวแปรตอบสนอง (มีปูตัวผู้อย่างน้อย 1 ตัวอยู่ใกล้เคียง)

Generalized Linear Models ใน Python

โมเดลเชิงเส้นกับตัวแปรตอบสนองแบบไบนารี

เส้นโค้งถดถอยเชิงเส้นของข้อมูลน้ำหนักปูตัวเมียและตัวแปรตอบสนอง (มีปูตัวผู้อย่างน้อย 1 ตัวอยู่ใกล้เคียง)

Generalized Linear Models ใน Python

โมเดลเชิงเส้นกับตัวแปรตอบสนองแบบไบนารี

การอ่านค่าความน่าจะเป็นจากโมเดลเชิงเส้นของน้ำหนักปูตัวเมียและตัวแปรตอบสนอง (มีปูตัวผู้อย่างน้อย 1 ตัวอยู่ใกล้เคียง)

Generalized Linear Models ใน Python

โมเดลเชิงเส้นกับข้อมูลแบบไบนารี

การเพิ่มเส้นโค้ง GLM (Binomial) เทียบกับเส้นโค้งเชิงเส้นสำหรับข้อมูลน้ำหนักปูตัวเมียและตัวแปรตอบสนอง (มีปูตัวผู้อย่างน้อย 1 ตัวอยู่ใกล้เคียง)

Generalized Linear Models ใน Python

โมเดลเชิงเส้นกับข้อมูลแบบไบนารี

การอ่านค่าความน่าจะเป็นจากโมเดล GLM (Binomial) ของน้ำหนักปูตัวเมียและตัวแปรตอบสนอง (มีปูตัวผู้อย่างน้อย 1 ตัวอยู่ใกล้เคียง)

Generalized Linear Models ใน Python

จากความน่าจะเป็นสู่การจำแนกประเภท

การแบ่งผลลัพธ์ของโมเดลตามค่าตัดความน่าจะเป็นที่กำหนด

Generalized Linear Models ใน Python

มาฝึกกันเถอะ!

Generalized Linear Models ใน Python

Preparing Video For Download...