3.3 Cân nhắc khác cho mô hình hồi quy 📖 ISLP §3.3 📄 pp. 91–108 ★★★☆☆ Trung bình ⏱️ Khoảng 50 phút Biến giả Tương tác Hồi quy đa thức Phân tích dư multicollinearity VIF Biến phương sai không đồng nhất Giá trị leverage ← §3.2 Hồi quy tuyến tính đa biến 👄 Trang chủ khóa học §3.4 Kế hoạch tiếp thị →
3.3.1 Biến dự đoán định tính (Qualitative Predictors)
Cho đến nay, chúng ta giả định rằng tất cả các biến trong mô hình hồi quy đều là biến định lượng (quantitative). Tuy nhiên, trong thực tế, nhiều biến dự đoán là biến định tính (qualitative) – ví dụ như giới tính, khu vực, có hay không sở hữu nhà, v.v.
ISLP §3.3.1, pp. 91–94
· James, Witten, Hastie, Tibshirani (2023). "An Introduction to Statistical Learning with Applications in Python."
Biến định tính chỉ có hai mức (Two-Level Factor)
Nếu biến định tính chỉ có hai mức (ví dụ: "có sở hữu nhà hay không"), chúng ta có thể tạo một biến giả (dummy variable), còn được gọi là biến chỉ báo. Trong lĩnh vực học máy, quá trình này được gọi là one-hot encoding.
\[ x_i = \begin{cases} 1 & \text{Nếu người thứ } i \text{ sở hữu nhà} \\ 0 & \text{Nếu người thứ } i \text{ không sở hữu nhà} \end{cases} \]
Công thức 3.26: Mã hóa biến giả
Kết hợp biến này vào mô hình hồi quy:
\[ y_i = \beta_0 + \beta_1 x_i + \epsilon_i = \begin{cases} \beta_0 + \beta_1 + \epsilon_i & \text{Sở hữu nhà} \\ \beta_0 + \epsilon_i & \text{Không sở hữu nhà} \end{cases} \]
Công thức 3.27: Mô hình tuyến tính với biến giả
Trong mô hình này:
\(\beta_0\): Số dư thẻ tín dụng trung bình của người không sở hữu nhà.
\(\beta_1\): Sự khác biệt trung bình giữa người sở hữu nhà và người không sở hữu nhà.
\(\beta_0 + \beta_1\): Số dư thẻ tín dụng trung bình của người sở hữu nhà.
💡 Ý tưởng cốt lõi:
Lấy ví dụ trên bộ dữ liệu Credit, nợ thẻ tín dụng trung bình của người không sở hữu nhà là $509.80, còn người sở hữu nhà là $529.53. Tuy nhiên, p-value của biến giả là 0.669, cho thấy không có bằng chứng thống kê nào hỗ trợ việc sở hữu nhà ảnh hưởng đến số dư thẻ tín dụng.
# minh họa: Sử dụng biến giả cho hồi quy tuyến tính đơn giản
try:
from google.colab import drive
drive.mount('/content/drive')
DATA_PATH = '/content/drive/MyDrive/ISLP_data/'
except ImportError:
DATA_PATH = '/tmp/'
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
# Mô phỏng một phần dữ liệu Credit
np.random.seed(42)
n = 100
own = np.random.choice([0, 1], size=n, p=[0.6, 0.4])
balance = 509.80 + 19.73 * own + np.random.normal(0, 150, n)
# Fitting mô hình
X = own.reshape(-1, 1)
model = LinearRegression().fit(X, balance)
print(f"截距 (β₀): {model.intercept_:.2f}")
print(f"係數 (β₁): {model.coef_[0]:.2f}")
print(f"Trung bình người không sở hữu: {model.intercept_:.2f}")
print(f"Trung bình người sở hữu: {model.intercept_ + model.coef_[0]:.2f}")
# Trực quan hóa
fig, ax = plt.subplots(figsize=(8, 4))
colors = ['#58a6ff' if o == 0 else '#3fb950' for o in own]
ax.scatter(own + np.random.normal(0, 0.03, n), balance, c=colors, alpha=0.6, edgecolors='white', linewidth=0.5)
3.3 迴歸模型的其他考量 📖 ISLP §3.3 📄 pp. 91–108 ★★★☆☆ 中級 ⏱️ 約 50 分鐘 虛擬變數 交互作用 多項式迴歸 殘差分析 共線性 VIF 異質變異 槓桿值 ← §3.2 多元線性迴歸 📑 課程首頁 §3.4 行銷計畫 → 3.3.1 質性預測變數 (Qualitative Predictors) 到目前為止,我們假設迴歸模型中的所有變數都是 量化 (quantitative)的。然而實務上,許多預測變數是 質性 (qualitative)的──例如性別、地區、房屋擁有與否等。 ISLP §3.3.1, pp. 91–94 · James, Witten, Hastie, Tibshirani (2023). "An Introduction to Statistical Learning with Applications in Python." 只有兩個水準的質性變數(Two-Level Factor) 如果質性變數只有兩個水準(例如「是否擁有房屋」),我們可以建立一個 虛擬變數 (dummy variable),也稱為 指標變數 。在機器學習領域,這個過程被稱為 one-hot encoding 。 \[ x_i = \begin{cases} 1 & \text{若第 } i \text{ 人擁有房屋} \\ 0 & \text{若第 } i \text{ 人沒有房屋} \end{cases} \] 公式 3.26:虛擬變數編碼 將此變數納入迴歸模型: \[ y_i = \beta_0 + \beta_1 x_i + \epsilon_i = \begin{cases} \beta_0 + \beta_1 + \epsilon_i & \text{擁有房屋} \\ \beta_0 + \epsilon_i & \text{沒有房屋} \end{cases} \] 公式 3.27:含虛擬變數的線性模型 在這個模型中: \(\beta_0\):非房屋擁有者的平均信用卡餘額 \(\beta_1\):房屋擁有者與非擁有者之間的平均差異 \(\beta_0 + \beta_1\):房屋擁有者的平均信用卡餘額 💡 核心洞見: 以 Credit 資料集為例,非擁有者的平均信用卡債務為 $509.80,擁有者為 $529.53。但虛擬變數的 p-value 為 0.669,表示沒有統計證據支持房屋擁有與否會影響信用卡餘額。 # 示範:用虛擬變數進行簡單線性迴歸 try: from google.colab import drive drive.mount('/content/drive') DATA_PATH = '/content/drive/MyDrive/ISLP_data/' except ImportError: DATA_PATH = '/tmp/' import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression # 模擬 Credit 資料集的部分資料 np.random.seed(42) n = 100 own = np.random.choice([0, 1], size=n, p=[0.6, 0.4]) balance = 509.80 + 19.73 * own + np.random.normal(0, 150, n) # 擬合模型 X = own.reshape(-1, 1) model = LinearRegression().fit(X, balance) print(f"截距 (β₀): {model.intercept_:.2f}") print(f"係數 (β₁): {model.coef_[0]:.2f}") print(f"非擁有者平均: {model.intercept_:.2f}") print(f"擁有者平均: {model.intercept_ + model.coef_[0]:.2f}") # 視覺化 fig, ax = plt.subplots(figsize=(8, 4)) colors = ['#58a6ff' if o == 0 else '#3fb950' for o in own] ax.scatter(own + np.random.normal(0, 0.03, n), balance, c=colors, alpha=0.6, edgecolors='white', linewi