DS

[Tech Blog #06 | Data Science] Nhập Môn Machine Learning: Hồi Quy Tuyến Tính (Linear Regression) & Đo Lường Sai Số Thực Chiến

1 views
[Tech Blog #06 | Data Science] Nhập Môn Machine Learning: Hồi Quy Tuyến Tính (Linear Regression) & Đo Lường Sai Số Thực Chiến

1. Đặt vấn đề: Dự đoán số lượng kem bán ra theo nhiệt độ

Hãy hình dung bạn là chủ một chuỗi cửa hàng kem ven biển. Bạn nhận thấy một quy luật tự nhiên:

  • Những ngày trời mát (25°C), quán bán được khoảng 100 cây kem.
  • Những ngày nắng nóng (35°C), quán bán được tới 300 cây kem.

Nếu ngày mai dự báo thời tiết là 32°C, bạn nên chuẩn bị nhập bao nhiêu que kem vào kho để vừa không bị thiếu hàng cho khách, vừa không bị ế gây lãng phí điện tủ đông?

Bài toán dự đoán một con số liên tục cụ thể (như doanh thu, giá nhà, số lượng sản phẩm tiêu thụ, nhiệt độ) được gọi là Bài toán Hồi quy (Regression).
(Khác với bài toán Phân loại - Classification, nơi ta dự đoán nhãn rời rạc như: Khách hàng có rời bỏ dịch vụ hay không: Yes/No, Email này là Spam hay Hợp lệ).

Thuật toán đầu tiên, kinh điển và trực quan nhất để giải quyết bài toán này chính là Linear Regression (Hồi quy tuyến tính).


2. Bản chất trực quan của Linear Regression

2.1. Phương trình đường thẳng quen thuộc

Từ thời học phổ thông, chúng ta đã quen thuộc với phương trình đường thẳng: y=ax+by = ax + b

Trong Machine Learning, các kỹ sư thường viết lại dưới dạng: y^=w⋅x+b\hat{y} = w \cdot x + b

  • xx (Feature / Biến đầu vào): Nhiệt độ ngoài trời.
  • y^\hat{y} (Prediction / Giá trị dự đoán): Số que kem dự kiến bán được.
  • ww (Weight / Trọng số hay Hệ số góc): Mỗi khi nhiệt độ tăng thêm 1°C, số que kem bán được tăng thêm bao nhiêu cái.
  • bb (Bias / Hệ số chặn): Lượng kem bán được tối thiểu ngay cả khi nhiệt độ bằng 0°C.

2.2. Mô hình "học" như thế nào?

Khi bạn chấm tất cả các điểm dữ liệu thực tế lên một đồ thị toạ độ, các điểm này sẽ nằm rải rác. Thuật toán Linear Regression có nhiệm vụ: Tìm một đường thẳng duy nhất đi qua đám mây dữ liệu sao cho tổng khoảng cách sai lệch giữa các điểm thực tế và đường thẳng là nhỏ nhất.

Khoảng cách sai lệch giữa điểm thực tế (yy) và điểm đường thẳng dự đoán (y^\hat{y}) được gọi là Phần dư (Residual): Residual=y−y^\text{Residual} = y - \hat{y}

Mô hình sẽ tự động điều chỉnh ww và bb để tối thiểu hóa tổng bình phương các phần dư này (Phương pháp Bình phương Tối thiểu - Ordinary Least Squares / OLS).


3. Bộ thước đo đánh giá mô hình Regression (Evaluation Metrics)

Khi huấn luyện xong mô hình, làm sao để biết mô hình dự đoán "chuẩn" đến mức nào? Trong thực tế công việc, bạn sẽ dùng 3 chỉ số vàng sau:

3.1. MAE (Mean Absolute Error - Sai số tuyệt đối trung bình)

  • Cách tính: Lấy độ lệch tuyệt đối giữa giá trị thực tế và dự đoán, sau đó tính trung bình cộng: 1n∑∣y−y^∣\frac{1}{n} \sum \vert{}y - \hat{y}\vert{}.
  • Ưu điểm: Dễ giải thích nhất cho các bên kinh doanh (Business Stakeholders).
  • Ví dụ: MAE=15MAE = 15 que kem →\rightarrow "Trung bình mỗi ngày mô hình dự đoán lệch khoảng 15 que kem so với thực tế".

3.2. RMSE (Root Mean Squared Error - Căn bậc hai của sai số bình phương trung bình)

  • Cách tính: Bình phương các sai số lên (để khuếch đại các lỗi lớn), tính trung bình, rồi lấy căn bậc hai.
  • Đặc điểm sống còn: Phạt rất nặng các dự đoán sai lệch nghiêm trọng.
  • Ví dụ: Nếu mô hình đoán lệch 2 que kem, bình phương lỗi chỉ là 4. Nhưng nếu đoán lệch tới 50 que kem, bình phương lỗi vọt lên 2.500.

3.3. R2R^2 Score (R-squared / Hệ số xác định)

  • Thang đo: Thường nằm trong khoảng từ 00 đến 11 (hoặc từ 0% đến 100%).
  • Ý nghĩa: Cho biết mô hình đã giải thích được bao nhiêu phần trăm sự biến thiên của dữ liệu.
  • Ví dụ: R2=0.85R^2 = 0.85 nghĩa là biến "Nhiệt độ" đã giải thích được 85% lý do tại sao lượng kem bán ra tăng giảm. 15% còn lại phụ thuộc vào các yếu tố khác (như ngày cuối tuần, trời mưa, chương trình khuyến mãi).

Bảng so sánh các chỉ số đánh giá

Chỉ sốĐơn vị tínhNhạy cảm với Outlier?Ý nghĩa thực tiễn
MAECùng đơn vị với biến mục tiêu (yy)❌ Ít nhạy cảm (Đánh giá đồng đều)Báo cáo trực quan cho sếp / khách hàng dễ hiểu nhất.
MSEBình phương đơn vị (y2y^2)⚠️ Cực kỳ nhạy cảmDùng làm hàm mất mát (Loss function) cho máy tính tối ưu hóa.
RMSECùng đơn vị với biến mục tiêu (yy)⚠️ Rất nhạy cảmDùng khi bài toán không chấp nhận các sai số lớn (vd: định giá nhà, y tế).
R2R^2Không có đơn vị (Tỷ lệ 0 đến 1)—Đo lường độ tin cậy và khả năng giải thích tổng thể của mô hình.

4. Thực hành thực chiến: Xây dựng mô hình với Scikit-Learn

Dưới đây là đoạn mã Python hoàn chỉnh từ khâu chuẩn bị dữ liệu, chia tập Train/Test, huấn luyện mô hình đến trích xuất hệ số kinh doanh và đánh giá sai số:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# 1. Tạo tập dữ liệu mẫu: Dự đoán doanh thu (triệu VNĐ) theo Chi phí Marketing và Số nhân viên
np.random.seed(42)
n_samples = 100

marketing_budget = np.random.uniform(10, 100, n_samples)  # Ngân sách 10 - 100 triệu
staff_count = np.random.randint(2, 15, n_samples)          # Số lượng nhân viên 2 - 15 người

# Công thức thực tế ngầm định: Doanh thu = 2.5 * Marketing + 5.0 * Nhân viên + 20 (Nhiễu ngẫu nhiên)
noise = np.random.normal(0, 10, n_samples)
revenue = 2.5 * marketing_budget + 5.0 * staff_count + 20 + noise

df = pd.DataFrame({
    "marketing_budget": marketing_budget,
    "staff_count": staff_count,
    "revenue": revenue
})

# 2. Tách biến độc lập (X) và biến mục tiêu (y)
X = df[["marketing_budget", "staff_count"]]
y = df["revenue"]

# 3. Chia tập Train (80%) và Test (20%) - Tuyệt đối không train trên toàn bộ dữ liệu
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 4. Khởi tạo và Huấn luyện mô hình Linear Regression
model = LinearRegression()
model.fit(X_train, y_train)

# 5. Đọc hiểu các hệ số của mô hình (Model Interpretability)
print("--- TRÍCH XUẤT HỆ SỐ MÔ HÌNH ---")
print(f"Hệ số chặn (Intercept - b): {model.intercept_:.2f}")
for feature, coef in zip(X.columns, model.coef_):
    print(f"Hệ số góc (Weight - w) của '{feature}': {coef:.2f}")
# Ý nghĩa: Mỗi khi tăng 1 triệu Marketing, doanh thu tăng trung bình ~2.54 triệu VNĐ.

# 6. Dự đoán trên tập kiểm thử (Test Set)
y_pred = model.predict(X_test)

# 7. Đánh giá chất lượng mô hình
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)

print("\n--- KẾT QUẢ ĐÁNH GIÁ MÔ HÌNH ---")
print(f"MAE  (Sai số tuyệt đối TB) : {mae:.2f} triệu VNĐ")
print(f"RMSE (Sai số phạt lỗi lớn) : {rmse:.2f} triệu VNĐ")
print(f"R² Score (Độ giải thích)  : {r2:.4f} (~{r2*100:.1f}%)")

# 8. Dự đoán cho một cửa hàng mới trong thực tế
new_store = pd.DataFrame({
    "marketing_budget": [50],  # 50 triệu Marketing
    "staff_count": [6]         # 6 nhân viên
})
predicted_revenue = model.predict(new_store)
print(f"\nDự đoán doanh thu cửa hàng mới: {predicted_revenue[0]:.2f} triệu VNĐ")

5. Câu hỏi phỏng vấn thực tế (Interview Q&A)

Câu 1 (Mức độ: Entry / Junior)

Câu hỏi: "Khi nào bạn nên chọn báo cáo RMSE thay vì MAE trong một bài toán hồi quy?"

Gợi ý trả lời:
"Em sẽ ưu tiên dùng RMSE khi các lỗi dự đoán lớn gây ra hậu quả hoặc tổn thất chi phí nghiêm trọng hơn rất nhiều so với các lỗi nhỏ.
Ví dụ: Trong bài toán dự báo phụ tải điện lưới hoặc định giá danh mục đầu tư tài chính, việc dự đoán sai lệch một biên độ lớn có thể làm sập nguồn điện hoặc gây cháy tài khoản, nên ta cần chỉ số RMSE để 'trừng phạt' nặng các sai số cực đoan đó. Ngược lại, nếu tổn thất chỉ tăng tuyến tính theo sai số (như dự đoán thời gian giao hàng trễ 5 phút hay 10 phút), MAE sẽ mang lại góc nhìn thực tế và trực quan hơn cho người dùng."

Câu 2 (Mức độ: Junior / Mid-level)

Câu hỏi: "Điểm mạnh lớn nhất của Linear Regression so với các thuật toán hộp đen phức tạp (như Random Forest, Neural Networks) là gì?"

Gợi ý trả lời:
"Điểm mạnh lớn nhất của Linear Regression là Tính khả giải thích (Interpretability / Explainability) và Tốc độ tính toán.
Thông qua các hệ số trọng số (ww), chúng ta có thể trả lời chính xác cho ban giám đốc biết: Mỗi đặc trưng đầu vào tác động theo chiều hướng nào (dương hay âm) và đóng góp bao nhiêu phần trăm vào kết quả dự đoán. Điều này đặc biệt quan trọng trong các lĩnh vực yêu cầu tính minh bạch và tuân thủ quy định pháp lý khắt khe như chấm điểm tín dụng ngân hàng (Credit Scoring), định giá bảo hiểm hoặc y tế."


6. Key Takeaways (Ghi nhớ nhanh)

  1. Regression là bài toán dự đoán số liên tục, khác với Classification là phân loại nhãn rời rạc.
  2. Linear Regression tìm đường thẳng tối ưu bằng cách giảm thiểu tổng bình phương phần dư (OLS).
  3. Bộ ba thước đo sai số:
    • MAE: Dễ hiểu, thân thiện nhất với các bên kinh doanh.
    • RMSE: Phạt mạnh các lỗi lệch lớn, đơn vị thực tế.
    • R2R^2: Đo lường phần trăm độ biến thiên dữ liệu mà mô hình giải thích được (càng gần 1 càng tốt).
  4. Hệ số mô hình mang giá trị kinh doanh lớn: Đừng chỉ nhìn vào dự đoán cuối cùng, hãy xem các hệ số ww để tư vấn chiến lược cho doanh nghiệp.
0Claps