Mô hình Hồi quy tuyến tính (Linear Regression) là một công cụ cơ bản trong phân tích dữ liệu và học máy để mô tả mối quan hệ tuyến tính giữa một biến phụ thuộc (y
) và một biến độc lập (x
). Nó đóng vai trò nền tảng trong nhiều lĩnh vực, bao gồm kinh tế, tài chính, khoa học máy tính, v.v., giúp giải quyết các bài toán dự đoán và giải thích hiệu quả. Trong Thống kê, bài toán này đôi khi được gọi là Linear Fitting hoặc Linear Least Square.
Một số ứng dụng của Mô hình Hồi quy tuyến tính có thể kể tới như:
- Dự đoán giá cả: Dự đoán giá cả của các sản phẩm, dịch vụ dựa trên các yếu tố như chi phí sản xuất, nhu cầu thị trường, v.v.
- Phân tích rủi ro: Phân tích rủi ro đầu tư, tài chính dựa trên các yếu tố như lợi nhuận, rủi ro, v.v.
- Nghiên cứu khoa học: Nghiên cứu mối quan hệ giữa các biến trong các lĩnh vực như y học, sinh học, v.v.
Ta bắt đầu bằng một ví dụ đơn giản sau. Trong ngành bất động sản, việc định giá chính xác một bất động sản là vô cùng thiết yếu cho cả người mua lẫn người bán. Phương pháp truyền thống thường dựa vào đánh giá của các chuyên gia thẩm định, có thể gây ra những bất nhất và chứa đựng rủi ro thiên vị. Ngược lại, học máy cung cấp một phương pháp tiếp cận dựa trên dữ liệu để dự báo giá nhà, đem lại khách quan và cơ hội chính xác cao hơn.
Bằng cách khai thác dữ liệu lịch sử về giao dịch nhà đất và các đặc điểm đi kèm, các thuật toán học máy có thể phát hiện ra những mẫu và mối liên hệ giữa các yếu tố này. Dữ liệu này sau đó được áp dụng để huấn luyện mô hình dự báo có khả năng ước lượng giá của một ngôi nhà mới dựa trên các thuộc tính riêng của nó.
Phương pháp hồi quy tuyến tính là một kỹ thuật được ưa chuộng để mô hình hóa giá nhà. Kỹ thuật này dựa trên giả định rằng có mối quan hệ tuyến tính giữa giá nhà – biến phụ thuộc (y) và các biến độc lập (x) mô tả các đặc điểm của ngôi nhà. Một số biến độc lập này có thể là:
- Diện tích (Diện tích): Được tính bằng mét vuông.
- Số phòng ngủ (Số phòng ngủ): Tổng số phòng ngủ có trong nhà.
- Tuổi của nhà (Tuổi nhà): Số năm kể từ khi ngôi nhà được xây dựng.
1. Mô hình Hồi quy tuyến tính
Mô hình hồi quy tuyến tính đa biến
Hãy tưởng tượng bạn muốn dự đoán giá của một căn nhà dựa trên ba đặc trưng như ví dụ trên đã nêu: diện tích (x₁), số phòng ngủ (x₂), và tuổi nhà (x₃). Giả sử chúng ta đã thu thập dữ liệu về giá và diện tích của nhiều căn nhà (n căn) – mà ta gọi đây là tập dữ liệu huấn luyện. Chúng ta hãy xem xét từ dữ liệu đã có này xây dựng một mô hình thể hiện mối quan hệ giữa giá nhà (y) ba đặc trưng (x₁ , x₂ , x₃). Một mô hình hồi quy tính tuyến ba biến cho bài toán trên được viết dưới dạng công thức sau:
(Công thức 1)
Trong đó, các thuật ngữ lần lượt có tên và ý nghĩa như sau:
- y : Biến phụ thuộc (dependent variable), hay tên khác là biến phản hồi (response variable), hoặc nhãn (label). Đây chính là giá trị thật của các căn nhà mà ta có trong tập dữ liệu huấn luyện. , với n là số lượng căn nhà có trong tập dữ liệu huấn luyện, là giá căn nhà thứ j.
- (x₁ , x₂ , x₃): Các biến độc lập (independent variables), hay tên khác là biến giải thích (explanatory variables), hoặc đặc trưng (features).Trong ví dụ kể trên , với là diện tích của căn nhà thứ j. Tương tự là số phòng ngủ và là tuổi nhà của căn nhà thứ j.
- w0 : Hệ số chặn (intercept), biểu thị giá trị kỳ vọng của y khi các biến độc lập đều bằng 0 (hay, khi không có ảnh hưởng từ các biến độc lập).
- (w₁, w₂, w₃) là hệ số góc (slope) tương ứng của từng biến độc lập. Các hệ số góc đại diện cho sự đóng góp cụ thể của mỗi biến độc lập vào giá trị của biến phụ thuộc (y). Giá trị hệ số góc đánh giá độ mạnh và hướng của mối quan hệ tuyến tính giữa biến phụ thuộc và biến độc lập. Một hệ số dương cho thấy mối liên hệ tích cực, có nghĩa là khi biến độc lập tăng, biến phụ thuộc dự kiến sẽ tăng. Ngược lại, một hệ số âm cho thấy mối liên hệ tiêu cực, nghĩa là sự gia tăng biến độc lập dẫn đến sự giảm biến phụ thuộc.
- là sai số ngẫu nhiên trong mô hình, .
(w₀, w₁, w₂, w₃) là các hệ số hồi quy cần được ước lượng từ dữ liệu huấn luyện.
(Công thức 1) được gọi là mô hình hồi quy tuyến tính ba biến. Tổng quát, nếu chúng ta có m biến độc lập ( x₁ , x₂ , x₃ , … , xm), công thức của mô hình hồi quy đa biến được viết lại như sau:
(Công thức 2)
Nếu loại bỏ sai số ngẫu nhiên khỏi mô hình, điều này ngụ ý rằng mô hình giả định rằng mọi biến thiên trong giá nhà có thể được giải thích hoàn toàn bởi các biến độc lập trong mô hình mà không có sai số hay nhiễu. Trong hồi quy tuyến tính, thường được coi là sai số ngẫu nhiên mà không thể được dự đoán hoặc giải thích thông qua các biến độc lập trong mô hình. Vì vậy, các phương pháp hồi quy tập trung vào việc tìm các hệ số – bao gồm hệ số chặn và các hệ số góc wi cho mỗi biến độc lập – mà tối ưu hóa mối quan hệ giữa các biến độc lập và biến phụ thuộc.
Bỏ qua sai số ngẫu nhiên , ta có công thức mô hình dự đoán được viết như sau (với như trong ví dụ trên sẽ giá nhà dự đoán):
(Công thức 3)
và như vậy: sai số biểu thị độ lệch giữa giá trị dự đoán và giá trị thực tế của biến phụ thuộc.
Mô hình hồi quy tuyến tính đơn biến
Xét trong trường hợp đơn giản nhất, chúng ta có một biến phụ thuộc và một biến độc lập, mối quan hệ này được thể hiện bằng mô hình hồi quy tuyến tính đơn biến như sau:
(Công thức 4)
Công thức dự đoán của hồi quy đơn biến cho bởi:
\( \overline{\mathbf{y}}=w_0+w_1 * \mathbf{x} \) (Công thức 5)
Dễ thấy, trong trường hợp của hồi quy tuyến tính đơn biến, các điểm dữ liệu trong tập luyện có thể dễ dàng biểu diễn trên hệ tọa độ Đề-các (màu xanh lá), và mô hình dự đoán theo (Công thức 5) có dạng đường thẳng, gọi là Regression Line (màu xanh dương).
Hình 1. Đường màu xanh dương là đường dự đoán của mô hình hồi quy tuyến tính đơn biến.
Ước tính hệ số của mô hình hồi quy tuyến tính
Chúng ta hãy bắt đầu trước với mô hình hồi quy tuyến tính đơn biến, như minh họa trong (Công thức 4) và (Công thức 5). Giữa giá trị dự đoán và giá trị thật luôn tồn tại một sai số
Ta gọi hàm mất mát L bằng tổng bình phương sai số của mô hình dự đoán (Residual Sum of Squares) – RSS(w) cho bởi công thức sau:
(Công thức 6)
w1 sao cho tổng bình phương sai số của mô hình trên tập huấn luyện là nhỏ nhất, được viết dưới dạng:
(Công thức 7)
Một phương pháp thông thường mà chúng ta có thể dùng để giải quyết vấn đề cực tiểu hóa là giải phương trình đạo hàm (gradient) bằng 0. Và với mô hình tuyến tính cho bởi (Công thức 7), việc tính đạo hàm, cũng như việc giải phương trình đạo hàm bằng 0 không quá phức tạp.
Đạo hàm từng phần (partial derivatives) theo
(Công thức 8)
(Công thức 9)
Từ (Công thức 8), và (Công thức 9) giá trị của w1
(Công thức 10)
(Công thức 11)
2. Đánh giá hiệu suất mô hình
Sau khi ước tính tham số mô hình, chúng ta đánh giá hiệu suất của mô hình bằng nhiều chỉ số:
-
R-squared (R²): Chỉ số này cho biết tỷ lệ phương sai của y được giải thích bởi mô hình tuyến tính. Giá trị R² cao hơn cho thấy phù hợp tốt hơn, với các giá trị gần 1 cho thấy mối quan hệ tuyến tính mạnh.
-
R-squared điều chỉnh: Biến thể này của R² tính đến số lượng biến độc lập, phạt các mô hình có nhiều biến giải thích để tránh quá khớp.
-
Sai số bình phương trung bình (MSE): MSE đo lường sai số bình phương trung bình giữa giá trị quan sát và dự đoán của y. MSE thấp hơn cho thấy mô hình phù hợp tốt hơn.
-
Sai số bình phương trung bình căn (RMSE): RMSE là căn bậc hai của MSE, đại diện cho lỗi điển hình trong dự đoán của mô hình.
3. Ví dụ minh họa
Giả sử bạn muốn dự đoán giá cả của một ngôi nhà dựa trên các yếu tố như diện tích, số phòng ngủ, số phòng tắm, vị trí và tuổi nhà. Bạn có thể sử dụng mô hình tuyến tính để xây dựng mối quan hệ giữa giá nhà (y) và các yếu tố này (x). Trong ví dụ minh họa dưới đây tôi chỉ sử dụng 2 trường dữ liệu là diện tích (biến độc lập), và giá nhà (biến phụ thuộc). Tuy nhiên, bạn có thể dễ dàng thay đổi sang mô hình hồi quy tuyến tính đa biến và sử dụng thêm các trường dữ liệu còn lại trong tập dữ liệu được cung cấp sau: Housing [1, 2].
Tôi tạm thời bỏ qua một số phần phân tích và tiền xử lý dữ liệu, trong khuôn khổ bài này tôi sẽ thực nghiệm ngay vào cách sử dụng thư viện scikit-learn
trong Python để xây dựng và huấn luyện một mô hình Hồi quy tuyến tính.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection
import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# --------------- STEP 1: Data preparation---------------
# Tải dữ liệu (thay thế 'Housing.csv' bằng đường dẫn tệp thực tế của bạn)
df = pd.read_csv('Housing.csv')
# Xác định biến đặc trưng (biến độc lập) và biến mục tiêu (biến phụ thuộc)
X = df["area"].values.reshape(-1,1)
y = df["price"].values
# Chuyển đổi diện tích từ feet vuông sang mét vuông
X = X * 0.092903
# Quy đổi giá (một = một trăm nghìn đô la)
y = y / 100000
# Chia dữ liệu thành tập huấn luyện và tập kiểm tra (80%/20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# --------------- STEP 2: Model Training---------------
# Tạo và huấn luyện mô hình hồi quy tuyến tính
model = LinearRegression()
model.fit(X_train, y_train)
m = model.coef_[0] # Thu được Hệ số góc (w₁)
b = model.intercept_ # Thu được Hệ số chặn (w₀)
# --------------- STEP 3: Prediction ---------------
# Dự đoán giá trên tập kiểm tra
y_predicted = model.predict(X_test)
# --------------- STEP 4: Evaluation ---------------
# Tính toán sai số bình phương trung bình, R-squared
mse = mean_squared_error(y_test, y_predicted)
r2 = r2_score(y_test, y_predicted)
print("Sai số bình phương trung bình:", mse)
print("R-squared:", r2)
Mean Squared Error (MSE): 367.52866047681846
R-squared: 0.2728785187197468
Hình 2. Minh họa kết quả của chương trình thực nghiệm xây dựng mô hình dự đoán giá nhà từ diện tích căn nhà.
Hy vọng bài viết đã giúp các bạn hiểu về Mô hình hồi quy tuyến tính.
TÀI LIỆU THAM KHẢO
Bộ dữ liệu được sử dụng trong ví dụ của bài viết này có nguồn gốc từ:
[1] Harrison, D. and Rubinfeld, D.L. (1978) Hedonic prices and the demand for clean air. J. Environ. Economics and Management 5, 81–102.[2] Belsley D.A., Kuh, E. and Welsch, R.E. (1980) Regression Diagnostics. Identifying Influential Data and Sources of Collinearity. New York: Wiley.
Các bài trong cùng chủ đề:
Bài 3: Mô hình hồi quy tuyến tính
Bài 4.1: Phân loại với hồi quy Logistic
Bài 4.2: Hồi quy Logistic cho phân loại đa lớp và Ứng dụng phân loại cảm xúc văn bản
Bài 5.1. Một ứng dụng của học không giám sát
Bài 5.2. Thuật toán K-Means và Ứng dụng phân cụm khách hàng
Bài 6. Bình minh của mạng nơ-ron nhân tạo – Cấu Trúc Perceptron
Thầy giải thích chi tiết quá!
Cảm ơn em!
Pingback: [ML] Bài 2: Giới thiệu về Học máy – Greenwich Vietnam
Pingback: [ML] Bài 1: Học AI bắt đầu từ đâu? – Greenwich Vietnam
Pingback: [ML] Bài 4.1: Phân loại với hồi quy Logistic - Greenwich Vietnam
Pingback: [ML] Bài 4.2: Hồi quy Logistic cho phân loại đa lớp và Ứng dụng phân loại cảm xúc văn bản - Greenwich Vietnam
Pingback: [ML] Bài 5. Một ứng dụng của học không giám sát - Greenwich Vietnam
Pingback: [ML] Bài 5.2. Thuật toán K-Means và Ứng dụng phân cụm khách hàng - Greenwich Vietnam
Pingback: [ML] Bài 6. Bình minh của mạng nơ-ron nhân tạo - Cấu Trúc Perceptron - Greenwich Vietnam