Dữ liệu nhị phân và hồi quy logistic

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Ita Cirovic Donev

Data Science Consultant

Dữ liệu phản hồi nhị phân

  • Phản hồi hai lớp $\rightarrow \large{\texttt{\color{#079EA1}{0},\color{#ED715F}{1}}}$

Ví dụ:

  • Chấm điểm tín dụng $\rightarrow \texttt{\color{#ED715F}{"Vỡ nợ"}/\color{#079EA1}{"Không vỡ nợ"}}$
  • Đậu bài kiểm tra $\rightarrow \texttt{\color{#079EA1}{"Đậu"}/\color{#ED715F}{"Rớt"}}$
  • Phát hiện gian lận $\rightarrow \texttt{\color{#ED715F}{"Gian lận"}/\color{#079EA1}{"Không gian lận"}}$
  • Chọn sản phẩm $\rightarrow \texttt{\color{#2485F2}{"Sản phẩm ABC"}/\color{#F2AC30}{"Sản phẩm XYZ"}}$
Mô hình Tuyến tính Tổng quát (GLM) trong Python

Dữ liệu nhị phân

KHÔNG NHÓM

  • Một sự kiện
  • Tung một đồng xu
  • Hai kết quả có thể: 0/1
  • $Bernoulli(p)$ hoặc
  • $Binomial(n=1,p)$

CÓ NHÓM

  • Nhiều sự kiện
  • Tung nhiều đồng xu
  • Số lần thành công trong $n$ phép thử
  • $Binomial(n,p)$
Mô hình Tuyến tính Tổng quát (GLM) trong Python

Hàm logistic

Biểu đồ phân tán giữa giờ học và kết quả đậu/rớt (0/1)

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Hàm logistic

Biểu đồ phân tán giữa giờ học và kết quả đậu/rớt (0/1)

  • Kết quả kiểm tra: $PASS=1$ hoặc $FAIL=0$

  • Muốn mô hình hóa

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

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Giờ học}$

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Hàm logistic

Đường logistic khớp dữ liệu giờ học và kết quả đậu/rớt (0/1)

  • Kết quả kiểm tra: $PASS=1$ hoặc $FAIL=0$

  • Muốn mô hình hóa

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

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Giờ học}$

  • Dùng hàm logistic

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

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Odds và tỷ số odds

       

$$ ODDS = \frac{\text{sự kiện xảy ra}}{\text{sự kiện KHÔNG xảy ra}} $$

       

$$ \text{TỶ SỐ ODDS} = \frac{odds 1}{odds 2} $$

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Ví dụ về odds

  • 4 trận 3 thắng và 1 thua theo trình tự

  • Odds là 3 trên 1 Minh họa tính odds với 3 ô thắng ở tử và 1 ô thua ở mẫu.

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Odds và xác suất

  $$ \text{odds} \neq \text{xác suất} $$

  $$ \text{odds} = \frac{\text{xác suất}}{1-\text{xác suất}} $$

  $$ \text{xác suất} = \frac{\text{odds}}{1+\text{odds}} $$

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Từ mô hình xác suất đến hồi quy logistic

 

Bước 1. Mô hình xác suất

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

 

Bước 2. Hàm logistic

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

 

Bước 3. Áp dụng hàm logistic $\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)}}$

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Từ mô hình xác suất đến hồi quy logistic

 

  • Xác suất $\rightarrow$ odds $$ ODDS=\frac{\mu}{1-\mu} = exp{(\beta_0+\beta_1x_1)} $$  
  • Biến đổi log $\rightarrow \color{#CF5383}{\text{HỒI QUY LOGISTIC}}$

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

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Hồi quy logistic trong Python

Hàm - glm()

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

Đầu vào

y = [0,1,1,0,...]
y = ['No','Yes','Yes',...]
y = ['Fail','Pass','Pass',...]
Mô hình Tuyến tính Tổng quát (GLM) trong Python

Ayo berlatih!

Mô hình Tuyến tính Tổng quát (GLM) trong Python

Preparing Video For Download...