Chuyển đến nội dung chính

Hồi quy tuyến tính với Sklearn: Hướng dẫn đầy đủ kèm ví dụ

Tìm hiểu về hồi quy tuyến tính, mục đích của nó và cách triển khai bằng thư viện scikit-learn. Bao gồm các ví dụ thực tiễn.
Đã cập nhật 5 thg 6, 2026  · 10 phút đọc

Hồi quy tuyến tính là một kỹ thuật nền tảng trong thống kê và học máy giúp mô hình hóa mối quan hệ giữa các biến. Nói đơn giản, nó cho phép chúng ta dự đoán một kết quả dựa trên một hoặc nhiều yếu tố ảnh hưởng. Phương pháp này được ứng dụng rộng rãi trong định giá bất động sản, dự báo doanh số, đánh giá rủi ro và nhiều lĩnh vực khác.

Trong hướng dẫn này, chúng ta sẽ khám phá hồi quy tuyến tính trong scikit-learn, bao gồm cách hoạt động, lý do hữu ích và cách triển khai bằng scikit-learn. Sau khi hoàn thành, bạn sẽ có thể xây dựng và đánh giá một mô hình hồi quy tuyến tính để đưa ra dự đoán dựa trên dữ liệu.

Biểu đồ phân tán: Giá nhà so với Số phòng

Hồi quy tuyến tính và học máy

Ngoài tính hữu dụng trực tiếp trong việc xác định giá nhà, hồi quy tuyến tính còn đóng vai trò quan trọng trong học máy.

  • Đây là mô hình nền tảng để hiểu các kỹ thuật nâng cao như hồi quy logistic, mạng nơ-ronmáy vector hỗ trợ.
  • Huấn luyện nhanh, phù hợp cho việc dựng mẫu nhanh.
  • Cung cấp một đường chuẩn để so sánh. Nếu các mô hình nâng cao không vượt trội đáng kể, độ phức tạp tăng thêm có thể không đáng.
  • Không giống một số kỹ thuật (như học sâu), hồi quy tuyến tính dễ diễn giải.
  • Có thể hỗ trợ chọn đặc trưng, xác định các biến dự báo hữu ích nhất.

Dù đơn giản, hồi quy tuyến tính vẫn là công cụ không thể thiếu trong học máy nhờ hiệu quả, khả năng diễn giải và tính linh hoạt.

Hồi quy tuyến tính và thư viện scikit-learn

Thư viện scikit-learn giúp triển khai hồi quy tuyến tính một cách dễ dàng. Thư viện này có nhiều ưu điểm.

  • Giao diện thống nhất. Mã nguồn để triển khai các thuật toán ML khác nhau có cấu trúc tương tự.
  • Mã đơn giản, phần toán học phức tạp và chi tiết triển khai đã được trừu tượng hóa. Ví dụ, để fit mô hình trên dữ liệu huấn luyện, chỉ cần dòng model.fit(X_train, y_train).
  • Dễ dàng truy cập hệ số mô hình.
  • Cung cấp sẵn các thước đo để đánh giá hiệu năng mô hình.
  • Dễ tích hợp hồi quy tuyến tính (hoặc bất kỳ thuật toán ML nào) với các bước tiền xử lý như chuẩn hóa và chọn đặc trưng bằng Pipeline.

Nếu bạn mới với scikit-learn, hãy xem khóa học Học máy với scikit-learn để có phần thực hành nhập môn về thư viện Python này. 

Tìm hiểu Hồi quy tuyến tính

Như đã thấy, trong hồi quy tuyến tính đơn, dữ liệu được mô hình hóa bằng một "đường thẳng khớp tốt nhất". Công thức cho đường này là: 

trong đó m là độ dốc của đường và b là hệ số chặn.

"Hồi quy tuyến tính bội" tổng quát hóa trường hợp một biến dự báo sang nhiều biến dự báo (số phòng, gần biển, thu nhập trung vị của khu vực). Công thức được tổng quát thành: 

trong đó mỗi xi là biến độc lập và bi tương ứng là hệ số của nó. Trong không gian ba chiều, đường thẳng được tổng quát thành một mặt phẳng. Ở số chiều cao hơn, mặt phẳng trở thành một "siêu phẳng".

Diễn giải các hệ số và hệ số chặn như thế nào? Hệ số chặn là giá trị dự đoán của y khi tất cả biến độc lập bằng 0, hay nói cách khác là giá trị cơ sở của biến phụ thuộc khi không có đóng góp từ các biến dự báo. Mỗi hệ số bi biểu thị mức thay đổi của biến phụ thuộc y khi xi tăng một đơn vị, trong khi giữ các biến độc lập khác không đổi.

Thiết lập môi trường

Cài đặt scikit-learn rất dễ. Chỉ cần dùng lệnh pip install scikit-learn. Nếu bạn muốn cài một phiên bản cụ thể, chẳng hạn 1.2.2, hãy thêm phiên bản vào lệnh: pip install scikit-learn==1.2.2. Nếu bạn dùng Anaconda, scikit-learn thường đã được cài sẵn. Nếu vì lý do nào đó bạn vẫn cần cài khi dùng bản phân phối Anaconda, hãy dùng lệnh conda install scikit-learn.

Một số thư viện là cần thiết hoặc được khuyến nghị khi dùng scikit-learn. Thư viện numpy cần thiết để lưu trữ đặc trưng và nhãn. Thư viện pandas được khuyến nghị để tải, tiền xử lý và khám phá dữ liệu. 

Nếu bạn đang dùng scikit-learn, rất có thể bạn đã sử dụng pandas để chuẩn bị dữ liệu. Để vẽ kết quả, bạn có thể dùng matplotlib hoặc seaborn hoặc cả hai. Bất kỳ thư viện nào trong số này đều có thể cài đặt bằng pip install, tương tự ví dụ ở trên. Bạn thậm chí có thể cài nhiều thư viện bằng một lệnh:

pip install scikit-learn numpy pandas matplotlib seaborn.

Triển khai Hồi quy tuyến tính trong sklearn

Trước khi tải tập dữ liệu, hãy import những thư viện thường dùng.

# Import libraries.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Tải tập dữ liệu

Hãy dùng bộ dữ liệu nhà ở California nổi tiếng.

# Read in California housing dataset.
from sklearn.datasets import fetch_california_housing


housing = fetch_california_housing()

Chuẩn bị dữ liệu

Hãy chia dữ liệu thành tập huấn luyện và kiểm tra. Chúng ta import phương thức train_test_split() từ sklearn.model_selection, sau đó gọi với phần trăm tập kiểm tra và random_state. Chúng ta sẽ dùng hồi quy tuyến tính đơn, với đặc trưng tương ứng số phòng trung bình.

# Import train_test_split.
from sklearn.model_selection import train_test_split


# Create features X and target y.
X = pd.DataFrame(housing.data, columns=housing.feature_names)[["AveRooms"]]
y = housing.target  # Median house value in $100,000s


# Split the dataset into training (80%) and testing (20%) sets.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Bây giờ khi đã chia dữ liệu thành tập huấn luyện và kiểm tra, hãy chuẩn hóa đặc trưng. Quá trình này đảm bảo các biến nằm trên cùng một thang đo, có thể cải thiện hiệu năng mô hình và ổn định số học.

# Import StandardScaler.
from sklearn.preprocessing import StandardScaler

# Instantiate StandardScaler.
scaler = StandardScaler()

# Fit and transform training data.
X_train_scaled = scaler.fit_transform(X_train)

# Also transform test data.
X_test_scaled = scaler.transform(X_test)

Trong đoạn mã này, StandardScaler là công cụ tiền xử lý dữ liệu dùng để trừ trung bình và chuẩn hóa phương sai về 1. Điều này giúp ngăn một số đặc trưng chi phối mô hình do khác biệt về thang đo.

Bộ chuẩn hóa được fit trên dữ liệu huấn luyện bằng phương thức fit_transform(). Dữ liệu kiểm tra sau đó được biến đổi riêng bằng transform() để đảm bảo dùng cùng các hệ số chuẩn hóa như dữ liệu huấn luyện, tránh rò rỉ dữ liệu.

Huấn luyện mô hình hồi quy tuyến tính

Để tạo mô hình hồi quy tuyến tính, import LinearRegression() từ sklearn.linear_model. Khởi tạo và gán cho một biến.

# Import LinearRegression.
from sklearn.linear_model import LinearRegression


# Instantiate linear regression model.
model = LinearRegression()

Fit mô hình với dữ liệu huấn luyện rất đơn giản.

# Fit the model to the training data.
model.fit(X_train_scaled, y_train)

Tạo dự đoán

Sau khi đã huấn luyện mô hình, chúng ta tạo dự đoán trên tập kiểm tra.

# Make predictions on the testing data.
y_pred = model.predict(X_test_scaled)

Đánh giá hiệu năng mô hình

Khi đã có dự đoán trên tập kiểm tra, chúng ta cần biết mức độ khớp với thực tế. Có một số thước đo để đánh giá hiệu năng thuật toán hồi quy. Một số thước đo phổ biến nhất là hệ số xác định (R2), sai số bình phương trung bình (MSE) và căn sai số bình phương trung bình (RMSE).

Hệ số xác định, ký hiệu R2, đo lường mức độ một mô hình hồi quy giải thích được phương sai của biến mục tiêu. Nói cách khác, nó định lượng bao nhiêu phần phương sai của biến mục tiêu được giải thích bởi các biến dự báo, còn gọi là độ phù hợp (goodness of fit).

Để hiểu rõ hơn, hãy xem công thức:

trong đó yactual là giá trị thực của biến mục tiêu, ypredicted là giá trị dự đoán từ mô hình, và ȳ là trung bình của các giá trị thực. Công thức này giúp chúng ta hiểu bao nhiêu phần phương sai của biến mục tiêu được mô hình giải thích. Mẫu số biểu diễn tổng phương sai trong dữ liệu, còn tử số là phần phương sai không được giải thích sau khi áp dụng mô hình hồi quy. Tỷ lệ này do đó cho biết phần trăm phương sai được mô hình giải thích.

Diễn giải R2 như thế nào?

  • R2 = 1: mô hình giải thích hoàn toàn phương sai của biến mục tiêu. 
  • R2 = 0: mô hình không giải thích được phương sai; dự đoán không tốt hơn việc dùng giá trị trung bình. 
  • R2 < 0: Mô hình tệ hơn so với việc chỉ dùng giá trị trung bình, cho thấy độ khớp kém.

Một số lưu ý quan trọng.

  • R2 cao không phải lúc nào cũng tốt. R2 cao có thể chỉ ra quá khớp, đặc biệt với mô hình phức tạp. 
  • Thêm nhiều đặc trưng có thể làm tăng R2 một cách giả tạo, nên giá trị cao hơn không nhất thiết là tốt hơn.
  • Với hồi quy bội, hãy dùng R2 hiệu chỉnh, có tính đến số biến dự báo và tránh cải thiện đánh lừa do biến không cần thiết.

Đánh giá hiệu năng mô hình bằng hệ số xác định rất dễ với scikit-learn.

# Import metrics.
from sklearn.metrics import mean_squared_error, r2_score


# Calculate and print R^2 score.
r2 = r2_score(y_test, y_pred)
print(f"R-squared: {r2:.4f}")
R-squared: 0.0138

Các thước đo thường dùng khác là sai số bình phương trung bình (MSE) và căn sai số bình phương trung bình (RMSE). Những thước đo này đo mức độ sai lệch giữa dự đoán của mô hình và giá trị thực.

MSE tính trung bình bình phương chênh lệch giữa giá trị thực và dự đoán: 

với n là tổng số quan sát. Vì sai số được bình phương trước khi lấy trung bình, các sai số lớn bị phạt nặng hơn sai số nhỏ, nên MSE nhạy với ngoại lệ. MSE thấp hơn cho thấy mô hình khớp tốt hơn.

Để khắc phục vấn đề này, dùng RMSE, đơn giản là căn bậc hai của MSE. Vì RMSE cùng đơn vị với biến mục tiêu, nó cung cấp thước đo dễ diễn giải hơn về độ lệch trung bình của dự đoán.

Tính MSE và RMSE với scikit-learn rất dễ.

# Calculate and print MSE.
mse = mean_squared_error(y_test, y_pred)
print(f"Mean squared error: {mse:.4f}")


# Calculate and print RMSE.
rmse = mse ** 0.5
print(f"Root mean squared error: {rmse:.4f}")
Mean squared error: 1.2923
Root mean squared error: 1.1368

Làm việc với Hồi quy tuyến tính bội trong scikit-learn

Hãy chạy lại mô hình dùng tất cả đặc trưng hiện có, không chỉ số phòng trung bình. Bạn kỳ vọng kết quả tốt hơn hay kém hơn?

# Uses all features.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score


# Load data set.
housing = fetch_california_housing()


# Split into X, y.
X = pd.DataFrame(housing.data, columns=housing.feature_names)
y = housing.target  # Median house value in $100,000s
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


# Scale the data.
scaler = StandardScaler()


X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)


# Create model and fit it to the training data.
model = LinearRegression()
model.fit(X_train_scaled, y_train)


# Make predictions.
y_pred = model.predict(X_test_scaled)


# Calculate and print errors.
r2 = r2_score(y_test, y_pred)
print(f"R-squared: {r2:.4f}")


mse = mean_squared_error(y_test, y_pred)
print(f"Mean squared error: {mse:.4f}")


rmse = mse ** 0.5
print(f"Root mean squared error: {rmse:.4f}")
R-squared: 0.5758
Mean squared error: 0.5559
Root mean squared error: 0.7456

Chúng ta thấy kết quả khá tốt hơn so với khi chỉ dùng một đặc trưng. Tuy nhiên, điều này đặt ra câu hỏi liệu chúng ta có cần tất cả các đặc trưng không. Có đặc trưng nào liên quan hơn những đặc trưng khác không? Việc chọn các đặc trưng liên quan nhất từ tập dữ liệu được gọi là chọn đặc trưng.

Chọn đặc trưng quan trọng vì nhiều lý do.

  • Giảm quá khớp. Ít đặc trưng hơn nghĩa là ít phức tạp hơn, giảm nguy cơ quá khớp.
  • Cải thiện độ chính xác. Loại bỏ đặc trưng không liên quan hoặc dư thừa giúp mô hình tập trung vào các mẫu có ý nghĩa.
  • Tăng khả năng diễn giải. Giúp mô hình dễ hiểu hơn bằng cách làm nổi bật các yếu tố quan trọng nhất.
  • Tăng tốc huấn luyện. Giảm số đặc trưng giúp giảm thời gian tính toán và bộ nhớ.

Khi nhiều đặc trưng tương quan cao, chúng dư thừa, tức là về cơ bản cung cấp cùng thông tin cho mô hình. Tình huống này gọi là đa cộng tuyến. Mặc dù đa cộng tuyến không phải lúc nào cũng ảnh hưởng đến độ chính xác của mô hình dự báo, nó làm phức tạp việc chọn đặc trưng và diễn giải, đặc biệt trong hồi quy tuyến tính và các mô hình liên quan.

Hệ số phóng đại phương sai (VIF) là một thước đo dùng để phát hiện đa cộng tuyến giữa các biến dự báo. Với mỗi biến dự báo, VIF được tính như sau: 

trong đó Ri2 là giá trị R2 khi biến dự báo Xi được hồi quy theo tất cả các biến dự báo còn lại trong mô hình. VIF cao hơn nghĩa là biến dự báo tương quan mạnh với các biến khác.

  • VIF = 1: không có đa cộng tuyến (lý tưởng).
  • VIF < 5: đa cộng tuyến thấp đến vừa (thường chấp nhận được).
  • VIF > 5: đa cộng tuyến cao (cân nhắc loại bỏ hoặc kết hợp các biến tương quan).
  • VIF > 10: đa cộng tuyến nghiêm trọng (mạnh mẽ gợi ý dư thừa biến).
# Import libraries.
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from statsmodels.stats.outliers_influence import variance_inflation_factor


# Load the dataset.
housing = fetch_california_housing()
X = pd.DataFrame(housing.data, columns=housing.feature_names)


# Compute the correlation matrix.
corr_matrix = X.corr()


# Identify pairs of features with high collinearity (correlation > 0.8 or < -0.8).
high_corr_features = [(col1, col2, corr_matrix.loc[col1, col2])
                     for col1 in corr_matrix.columns
                     for col2 in corr_matrix.columns
                     if col1 != col2 and abs(corr_matrix.loc[col1, col2]) > 0.8]


# Convert to a DataFrame for better visualization.
collinearity_df = pd.DataFrame(high_corr_features, columns=["Feature 1", "Feature 2", "Correlation"])
print("\nHighly Correlated Features:\n", collinearity_df)


# Compute Variance Inflation Factor (VIF) for each feature.
vif_data = pd.DataFrame()
vif_data["Feature"] = X.columns
vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]


# Print VIF values.
print("\nVariance Inflation Factor (VIF) for each feature:\n", vif_data)
   Highly Correlated Features:
       Feature 1  Feature 2  Correlation
   0   AveRooms  AveBedrms     0.847621
   1  AveBedrms   AveRooms     0.847621
   2   Latitude  Longitude    -0.924664
   3  Longitude   Latitude    -0.924664
  
   Variance Inflation Factor (VIF) for each feature:
          Feature         VIF
   0      MedInc   11.511140
   1    HouseAge    7.195917
   2    AveRooms   45.993601
   3   AveBedrms   43.590314
   4  Population    2.935745
   5    AveOccup    1.095243
   6    Latitude  559.874071
   7   Longitude  633.711654

Hãy loại bỏ AveBedrms khỏi mô hình.

# Import libraries.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score


# Load California housing dataset.
housing = fetch_california_housing()


# Create DataFrame and remove "AveBedrms" feature.
X = pd.DataFrame(housing.data, columns=housing.feature_names).drop(columns=["AveBedrms"])
y = housing.target  # Median house value in $100,000s


# Split data into training and testing sets.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


# Scale the data (Standardization).
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)


# Create a linear regression model and train it.
model = LinearRegression()
model.fit(X_train_scaled, y_train)


# Make predictions on the test set.
y_pred = model.predict(X_test_scaled)


# Calculate performance metrics.
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
# Print evaluation metrics
print(f"R-squared: {r2:.4f}")
print(f"Mean squared error: {mse:.4f}")
print(f"Root mean squared error: {rmse:.4f}")
R-squared: 0.5823
Mean squared error: 0.5473
Root mean squared error: 0.7398

Kết quả được cải thiện (một chút).

Trích xuất thông tin từ mô hình

Xây dựng mô hình hồi quy chỉ là bước đầu; hiểu đầu ra của nó cũng quan trọng không kém. Bằng cách phân tích các hệ số của mô hình, chúng ta có thể xác định đặc trưng nào tác động đáng kể nhất đến dự đoán.

Hiểu các hệ số hồi quy

Sau khi mô hình hồi quy tuyến tính được huấn luyện, có thể truy cập các hệ số bằng model.coef_. Hệ số chặn có thể truy cập bằng model.intercept_.

Sau khi mô hình hồi quy tuyến tính được huấn luyện bằng LinearRegression(), có thể truy cập các hệ số bằng model.coef_ và hệ số chặn bằng model.intercept_.

print("Intercept:", model.intercept_)


coeff_df = pd.DataFrame({"Feature": X.columns, "Coefficient": model.coef_})
print("\nFeature Coefficients:\n", coeff_df)
   Intercept: 2.0719469373788777  

   Feature Coefficients:

         Feature  Coefficient

   0     MedInc     0.725747

   1   HouseAge     0.121519

   2   Latitude    -0.943105

   3  Longitude    -0.900735

Tóm tắt kết quả mô hình

Vì Scikit-Learn không cung cấp sẵn phương thức summary() như Statsmodels, chúng ta có thể tự trích xuất và trực quan hóa tầm quan trọng của mỗi đặc trưng bằng các hệ số hồi quy. Đặc trưng có trị tuyệt đối của hệ số lớn hơn sẽ tác động mạnh hơn lên biến mục tiêu. Xem đoạn mã sau.

# Sort dataframe by coefficients.
coef_df_sorted = coef_df.sort_values(by="Coefficient", ascending=False)


# Create plot.
plt.figure(figsize=(8,6))
plt.barh(coef_df["Feature"], coef_df_sorted["Coefficient"], color="blue")
plt.xlabel("Coefficient Value")
plt.ylabel("Feature")
plt.title("Feature Importance (Linear Regression Coefficients)")
plt.show()

Feature importance (Linear Regression Coefficients)

Biểu đồ tầm quan trọng của đặc trưng dựa trên giá trị hệ số

Bây giờ, hãy trực quan hóa phần dư và đường hồi quy khớp.

# Compute residuals.
residuals = y_test - y_pred


# Create plots.
plt.figure(figsize=(12,5))


# Plot 1: Residuals Distribution.
plt.subplot(1,2,1)
sns.histplot(residuals, bins=30, kde=True, color="blue")
plt.axvline(x=0, color='red', linestyle='--')
plt.title("Residuals Distribution")
plt.xlabel("Residuals (y_actual - y_predicted)")
plt.ylabel("Frequency")


# Plot 2: Regression Fit (Actual vs Predicted).
plt.subplot(1,2,2)
sns.scatterplot(x=y_test, y=y_pred, alpha=0.5)
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='red', linestyle='--')  # Perfect fit line
plt.title("Regression Fit: Actual vs Predicted")
plt.xlabel("Actual Prices (in $100,000s)")
plt.ylabel("Predicted Prices (in $100,000s)")


# Show plots.
plt.tight_layout()
plt.show()

Residuals Distribution and Regression Fit

Biểu đồ để trực quan hóa phần dư và mức độ khớp hồi quy

Phân phối phần dư (biểu đồ bên trái) nên tập trung quanh 0, cho thấy sai số phân bố ngẫu nhiên. Nếu phần dư tuân theo phân phối chuẩn, mô hình khớp tốt; nhưng nếu có độ lệch hoặc xu hướng, điều đó có thể gợi ý sai số có hệ thống. Biểu đồ mức độ khớp hồi quy (bên phải) so sánh giá trị thực với giá trị dự đoán, với đường gạch đỏ biểu diễn độ khớp hoàn hảo. Nếu các điểm bám sát đường, dự đoán là chính xác; nhưng nếu xuất hiện mẫu hình (ví dụ đường cong), mối quan hệ có thể không thực sự tuyến tính. 

Những trực quan hóa này giúp chẩn đoán quá khớp hoặc thiếu khớp, hé lộ các mẫu trong phần dư gợi ý mối quan hệ bị bỏ sót và cung cấp đánh giá rõ ràng về hiệu quả của mô hình.

Ứng dụng trong thực tế

Hồi quy tuyến tính được sử dụng rộng rãi trong nhiều ngành để dự đoán và ra quyết định. Trong bất động sản, nó ước tính giá nhà dựa trên các yếu tố như diện tích và vị trí. 

Bán hàng và tiếp thị dùng để dự báo nhu cầu và tối ưu ngân sách; y tế áp dụng để đánh giá nguy cơ bệnh tật. Trong tài chính, nó hỗ trợ dự đoán giá cổ phiếu và chấm điểm tín dụng; trong sản xuất, nó giúp kiểm soát chất lượng và dự đoán hỏng hóc. 

Khi nào nên dùng hồi quy tuyến tính

  • Đặc trưng và biến mục tiêu có mối quan hệ tuyến tính.
  • Tính dễ diễn giải và đơn giản quan trọng hơn mô hình hóa phức tạp.
  • Dữ liệu cần ít kỹ thuật đặc trưng.

Khi nào không nên dùng hồi quy tuyến tính

Kết luận

Hồi quy tuyến tính vẫn là một trong những kỹ thuật nền tảng và được sử dụng rộng rãi nhất trong học máy và mô hình hóa thống kê. Dù đơn giản, đây là công cụ mạnh mẽ để hiểu mối quan hệ giữa các biến và đưa ra dự đoán trong nhiều ứng dụng thực tế.

Dưới đây là những điểm chính từ hướng dẫn:

  • Ứng dụng đa dạng. Hồi quy tuyến tính mang lại hiểu biết giá trị trong nhiều ngành và bài toán.
  • Dễ diễn giải.  Không giống các mô hình hộp đen phức tạp, hồi quy tuyến tính cung cấp cách diễn giải rõ ràng dựa trên hệ số, dễ hiểu và giải thích.
  • Chọn đặc trưng. Việc chọn đặc trưng đúng và xử lý đa cộng tuyến giúp mô hình chính xác, ổn định và tin cậy. 

Để tìm hiểu thêm về nội suy chuỗi trong Python, hãy xem các tài nguyên của DataCamp.

Câu hỏi thường gặp về Hồi quy tuyến tính trong Sklearn

Hồi quy tuyến tính là gì và hoạt động như thế nào?

Hồi quy tuyến tính là phương pháp thống kê dùng để mô hình hóa mối quan hệ giữa biến mục tiêu và một hoặc nhiều biến dự báo. Nó tìm đường thẳng khớp tốt nhất bằng cách cực tiểu hóa chênh lệch giữa giá trị thực và dự đoán theo phương pháp bình phương tối thiểu.

Các giả định của hồi quy tuyến tính là gì?

Hồi quy tuyến tính dựa trên các giả định sau:

  • Tính tuyến tính: Mối quan hệ giữa biến dự báo và biến mục tiêu là tuyến tính.
  • Tính độc lập: Các quan sát độc lập với nhau.
  • Phương sai đồng nhất (Homoscedasticity): Phương sai của phần dư là không đổi trên mọi giá trị.
  • Phần dư có phân phối chuẩn: Phần dư nên phân phối chuẩn.
  • Không có đa cộng tuyến: Các biến độc lập không được tương quan cao.

Tại sao tôi nên chuẩn hóa đặc trưng trước khi fit mô hình hồi quy tuyến tính?

Chuẩn hóa đặc trưng đảm bảo tất cả đặc trưng đóng góp ngang nhau vào mô hình. Vì hồi quy tuyến tính nhạy với độ lớn của đặc trưng, chuẩn hóa ngăn các biến có giá trị số lớn lấn át biến có giá trị nhỏ. Hãy dùng StandardScaler() để chuẩn hóa

Đa cộng tuyến là gì và làm sao phát hiện?

Đa cộng tuyến xảy ra khi hai hoặc nhiều biến độc lập tương quan cao, khiến việc diễn giải hệ số trở nên thiếu tin cậy. Có thể phát hiện bằng Hệ số phóng đại phương sai (VIF).

Tôi đánh giá một mô hình hồi quy tuyến tính như thế nào?

Các thước đo hiệu năng chính bao gồm:

  • R² (Hệ số xác định) → Đo lường mức độ mô hình giải thích phương sai của biến mục tiêu.
  • MSE (Sai số bình phương trung bình) → Đo sai số bình phương trung bình giữa giá trị thực và dự đoán.
  • RMSE (Căn sai số bình phương trung bình) → Phiên bản dễ diễn giải hơn của MSE.

Mark Pedigo's photo
Author
Mark Pedigo
LinkedIn

Mark Pedigo, PhD, là một nhà khoa học dữ liệu xuất sắc với chuyên môn về khoa học dữ liệu trong y tế, lập trình và giáo dục. Với bằng Tiến sĩ Toán học, Cử nhân Khoa học Máy tính và Chứng chỉ Chuyên nghiệp về AI, Mark kết hợp hiểu biết kỹ thuật với khả năng giải quyết vấn đề thực tiễn. Sự nghiệp của anh bao gồm các vai trò trong phát hiện gian lận, dự đoán tử vong ở trẻ sơ sinh và dự báo tài chính, cùng với những đóng góp cho phần mềm ước tính chi phí của NASA. Là một nhà giáo dục, anh đã giảng dạy tại DataCamp và Đại học Washington ở St. Louis, đồng thời cố vấn cho các lập trình viên trẻ. Trong thời gian rảnh, Mark thích hoạt động ngoài trời ở Minnesota cùng vợ là Mandy và chú chó Harley, và chơi piano jazz.

Chủ đề

Các khóa học hàng đầu trên DataCamp

Tracks

Chuyên viên phân tích dữ liệu trong Python

90 giờ
Học khoa học dữ liệu bằng Python, từ xử lý dữ liệu đến học máy. Chương trình này cung cấp các kỹ năng cần thiết để thành công trong vai trò nhà khoa học dữ liệu!
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow