
1/ Tổng quan dự án
Dự án này tập trung vào việc xây dựng một mô hình học máy để dự đoán giá nhà ở thành phố Ames, Iowa, dựa trên bộ dữ liệu chi tiết về các bất động sản được bán trong giai đoạn từ năm 2006 đến 2010. Đây là một bài toán hồi quy kinh điển, yêu cầu xử lý một lượng lớn các đặc trưng đa dạng, từ đó xây dựng một quy trình (pipeline) hoàn chỉnh bao gồm các bước: tiền xử lý dữ liệu, kỹ thuật đặc trưng (feature engineering), huấn luyện mô hình, và đánh giá hiệu suất. Mục tiêu cuối cùng là đưa ra dự đoán giá bán ($SalePrice$) cho các căn nhà chưa có thông tin về giá.
2/ Công nghệ & Công cụ
Để xây dựng quy trình này, dự án đã sử dụng một bộ công cụ (tech stack) hiện đại và phổ biến trong khoa học dữ liệu:
-
Xử lý Dữ liệu (Data Processing):
- Pandas: Thao tác và phân tích dữ liệu (data manipulation).
- NumPy: Tính toán số học.
- Scikit-learn: Tiền xử lý (preprocessing).
-
Kỹ thuật Đặc trưng (Feature Engineering):
- Scikit-learn: Lựa chọn đặc trưng (Mutual Information), biến đổi (Categorical encoding, MinMaxScaler).
-
Mô hình Học máy (ML Models):
- Scikit-learn: Các mô hình tuyến tính (Ridge, Lasso), GridSearchCV, Polynomial features.
- XGBoost: Mô hình tree-based (Gradient Boosting).
-
Tự động hóa & Triển khai (Automation & Deployment):
- Makefile: Điều phối quy trình (pipeline orchestration).
- Python Modules: Cấu trúc code mô-đun (src/, clean code).
- Streamlit: Caching và lưu trữ (persistence).
- config.py: Quản lý các tham số có thể thay đổi.
-
Trực quan hóa & Dashboard (Visualization & Dashboard):
- Streamlit: Xây dựng web dashboard tương tác.
- Plotly: Biểu đồ tương tác.
- Matplotlib: Trực quan hóa cơ bản.
- SHAP: Giải thích và diễn giải mô hình (model interpretability).
3/ Các Phương pháp Tốt nhất (Best Practices)
Dự án được triển khai theo các tiêu chuẩn tốt nhất trong ngành để đảm bảo tính chính xác, hiệu quả và khả năng tái sản xuất:
-
Phòng chống Rò rỉ Dữ liệu (Data Leakage Prevention):
- Bộ tiền xử lý (Preprocessor) chỉ
fit(học) trên dữ liệu huấn luyện (train data). - Bộ biến đổi (Transformer) chỉ
fittrên dữ liệu huấn luyện. - Áp dụng cùng một phép biến đổi cho cả tập validation và tập test.
- Mã hóa (Encoding) được thực hiện trước khi co giãn (scaling) để tránh rò rỉ.
- Bộ tiền xử lý (Preprocessor) chỉ
-
Xác thực chéo (Cross-Validation) đúng đắn:
- Sử dụng 5-fold Cross-Validation cho tất cả các mô hình
GridSearchCV. - Phân chia tập dữ liệu theo tỷ lệ Train/Validation là 75%/25%.
- Sử dụng cơ chế
Early Stoppingcho mô hình XGBoost để tránh overfitting.
- Sử dụng 5-fold Cross-Validation cho tất cả các mô hình
-
Tinh chỉnh Siêu tham số (Hyperparameter Tuning):
GridSearchCV: Tìm kiếm có hệ thống trên lưới tham số (systematic grid search).RandomizedSearchCV: Tìm kiếm ngẫu nhiên (random sampling).- Sử dụng các chỉ số trên tập validation để lựa chọn mô hình tốt nhất.
-
Đảm bảo Khả năng Tái sản xuất (Reproducibility):
- Cố định
random_statetrong tất cả các bước (chia dữ liệu, mô hình) để đảm bảo kết quả nhất quán. - Sử dụng seed cho cả quá trình chia (split) và xác thực chéo (CV).
- Lưu trữ tất cả các siêu tham số trong file
results.csv.
- Cố định
-
Thiết kế Mô-đun (Modular Design):
- Tách biệt các thành phần: dữ liệu (data), đặc trưng (features), mô hình (models).
- Sử dụng các thành phần có thể tái sử dụng (classes, functions).
- Giúp dễ dàng mở rộng và gỡ lỗi (debug).
-
Quy trình Tự động hóa (Automated Pipeline):
- Sử dụng
Makefileđể điều phối các dependencies (ví dụ:make all,make data). - Không cần thực thi thủ công từng bước.
- Sử dụng
Caching(bộ nhớ đệm) để tránh tính toán lại các bước không cần thiết.
- Sử dụng
4/ Tổng quan dữ liệu

Bộ dữ liệu gốc bao gồm 1460 mẫu (tương ứng với 1460 căn nhà đã được bán) và 81 cột (đặc trưng) mô tả các thuộc tính khác nhau của mỗi căn nhà. Biến mục tiêu cần dự đoán là $$SalePrice$$.
Các đặc trưng có thể được phân loại vào các nhóm chính sau:
- Vị trí: Các đặc trưng như
Neighborhood(khu vực lân cận),MSZoning(phân loại quy hoạch chung), vàStreet(loại đường vào) cung cấp thông tin về vị trí địa lý của bất động sản. - Lô đất: Các đặc trưng như
LotArea(diện tích lô đất),LotFrontage(chiều dài mặt tiền tiếp xúc với đường), vàLotShape(hình dạng lô đất) mô tả về khu đất. - Kết cấu: Các đặc trưng như
HouseStyle(kiểu nhà),BldgType(loại nhà),YearBuilt(năm xây dựng), vàYearRemodAdd(năm tu sửa) cho biết thông tin về cấu trúc và tuổi đời của căn nhà. - Chất lượng và Tình trạng: Các đặc trưng như
OverallQual(chất lượng vật liệu và hoàn thiện tổng thể),OverallCond(tình trạng tổng thể),ExterQual(chất lượng ngoại thất), vàExterCond(tình trạng ngoại thất) là các thang đo định tính về chất lượng của căn nhà. - Tầng hầm: Các đặc trưng như
BsmtQual(chất lượng tầng hầm),BsmtCond(tình trạng tầng hầm), vàTotalBsmtSF(tổng diện tích tầng hầm) mô tả chi tiết về tầng hầm. - Phòng: Các đặc trưng như
BedroomAbvGr(số phòng ngủ trên mặt đất),KitchenAbvGr(số phòng bếp trên mặt đất), vàTotRmsAbvGrd(tổng số phòng trên mặt đất) cho biết về số lượng và loại phòng. - Garage: Các đặc trưng như
GarageType(loại garage),GarageCars(sức chứa của garage tính bằng số lượng xe), vàGarageArea(diện tích garage) cung cấp thông tin về khu vực để xe. - Diện tích: Các đặc trưng quan trọng như
GrLivArea(diện tích sinh hoạt trên mặt đất),TotalBsmtSF(tổng diện tích tầng hầm),1stFlrSF(diện tích tầng một), và2ndFlrSF(diện tích tầng hai) là các biến số liên tục mô tả quy mô của căn nhà. - Thông tin bán hàng: Các đặc trưng như
YrSold(năm bán),MoSold(tháng bán),SaleType(loại hình mua bán), vàSaleCondition(điều kiện bán) cung cấp ngữ cảnh về giao dịch.
5/ Kỹ thuật đặc trưng (Feature Engineering)
Đây là bước quan trọng nhằm biến đổi dữ liệu thô thành các đặc trưng có ý nghĩa hơn, giúp mô hình học máy có thể "hiểu" và khai thác thông tin hiệu quả hơn. Quá trình này kết hợp cả kiến thức chuyên môn (domain knowledge) và các kỹ thuật tự động.
- Lựa chọn đặc trưng dựa trên Mutual Information (MI): Mutual Information đo lường mức độ phụ thuộc giữa mỗi đặc trưng và biến mục tiêu $$SalePrice$$. Những đặc trưng có điểm MI gần bằng 0 được coi là không cung cấp thông tin hữu ích cho việc dự đoán và sẽ bị loại bỏ. Điều này giúp giảm độ phức tạp của mô hình và tránh nhiễu.
- Biến đổi toán học (Tạo tỷ lệ & tương tác): Tạo ra các đặc trưng mới bằng cách kết hợp các đặc trưng hiện có, dựa trên kiến thức miền (domain knowledge). Việc này giúp mô hình nắm bắt được các mối quan hệ phức tạp hơn.
- LivLotRatio: Tỷ lệ giữa diện tích sinh hoạt và diện tích lô đất. Đặc trưng này có thể phản ánh mức độ "rộng rãi" của căn nhà so với khu đất.
$$LivLotRatio = \frac{\text{GrLivArea}}{\text{LotArea}}$$ - Spaciousness: Diện tích sinh hoạt trung bình trên mỗi phòng. Đặc trưng này cho biết mức độ "thoáng đãng" của không gian sống.
$$Spaciousness = \frac{\text{1stFlrSF} + \text{2ndFlrSF}}{\text{TotRmsAbvGrd}}$$
- LivLotRatio: Tỷ lệ giữa diện tích sinh hoạt và diện tích lô đất. Đặc trưng này có thể phản ánh mức độ "rộng rãi" của căn nhà so với khu đất.
- Đặc trưng tương tác (Interactions): Tạo ra các đặc trưng tương tác bằng cách kết hợp các đặc trưng phân loại và đặc trưng số. Ví dụ, đặc trưng
BldgType(loại nhà) được mã hóa one-hot, sau đó nhân vớiGrLivArea(diện tích sinh hoạt). Điều này giúp mô hình hiểu được rằng ảnh hưởng của diện tích lên giá nhà có thể khác nhau tùy thuộc vào loại nhà. - Đặc trưng đếm (Counts): Tạo đặc trưng
PorchTypesbằng cách đếm số lượng các loại hiên nhà khác nhau có diện tích lớn hơn 0 (bao gồmWoodDeckSF,OpenPorchSF,EnclosedPorch,ScreenPorch). Một căn nhà có nhiều loại hiên có thể được đánh giá cao hơn. - Tổng hợp theo nhóm (Group Aggregations): Tính toán các thống kê theo nhóm. Ví dụ, đặc trưng
MedNhbdAreađược tạo ra bằng cách tính giá trị trung vị (median) củaGrLivAreacho mỗi khu vực (Neighborhood). Đặc trưng này giúp mô hình so sánh một căn nhà với các căn nhà khác trong cùng một khu vực. - Mã hóa mục tiêu (Target Encoding): Đặc trưng
MSSubClass(phân loại loại nhà) được mã hóa bằng phương pháp M-Estimate Encoder. Đây là một kỹ thuật mã hóa mục tiêu (target encoding) được thực hiện với xác thực chéo 5 lần (5-fold cross-validation) để tránh rò rỉ dữ liệu (data leakage). - Co giãn (Scaling): Tất cả các đặc trưng số cuối cùng được co giãn về khoảng [0, 1] bằng
MinMaxScaler. Việc này đảm bảo rằng các đặc trưng có thang đo khác nhau sẽ có đóng góp tương đương trong quá trình huấn luyện các mô hình nhạy cảm với thang đo (như Ridge, Lasso).
6/ Mô hình (Models)
Dự án huấn luyện và đánh giá một loạt các mô hình hồi quy để tìm ra mô hình dự đoán $SalePrice$ tốt nhất.
Các mô hình Tiêu chuẩn (Standard Models)
Tổng cộng 5 mô hình tiêu chuẩn đã được huấn luyện, bao gồm các mô hình tuyến tính cơ sở, các mô hình được điều chuẩn (regularized) và các mô hình tree-based.
| Mô hình | Loại | Tinh chỉnh | CV | Tham số |
|---|---|---|---|---|
| linear | Linear Regression | None | No | None |
| ridge | Ridge L2 Regularization | GridSearchCV | 5-fold | 50 alphas |
| lasso | Lasso L1 Selection | GridSearchCV | 5-fold | 50 alphas |
| xgboost_fast | Gradient Boosting | Pre-tuned | Early stop | n_est=1000, lr=0.03 |
| xgboost_random | Gradient Boosting | RandomSearch | 2-fold | 20 iterations |
*Bảng 1. Các mô hình tiêu chuẩn*
- Chi tiết tinh chỉnh:
- Các mô hình
ridgevàlassosử dụngGridSearchCVvới 5-fold CV để tìm ra tham sốalpha(hệ số điều chuẩn) tối ưu từ 50 giá trị khác nhau (tổng cộng $50 \times 5 = 250$ lượt huấn luyện cho mỗi mô hình). - Mô hình
xgboost_randomsử dụngRandomizedSearchCVvới 20 lượt thử (iterations) để tìm kiếm không gian siêu tham số hiệu quả.
- Các mô hình
Các mô hình Đa thức (Polynomial Models)
Để nắm bắt các mối quan hệ phi tuyến, 3 mô hình tuyến tính đã được huấn luyện lại trên bộ đặc trưng được mở rộng với các tương tác đa thức bậc hai.
| Mô hình | Đặc trưng | Tinh chỉnh | CV | Bậc |
|---|---|---|---|---|
| linear_poly | Degree-2 interactions | None | No | 2 |
| ridge_poly | Polynomial + Ridge | GridSearchCV | 5-fold | 2 |
| lasso_poly | Polynomial + Lasso | GridSearchCV | 5-fold | 2 |
*Bảng 2. Các mô hình đa thức.*
Phương pháp Ensemble
Để tăng cường độ chính xác và sự ổn định (robustness) của dự đoán, các kết quả từ nhiều mô hình riêng lẻ được kết hợp lại.
- Kết hợp các mô hình đa dạng: Phương pháp này kết hợp các dự đoán từ cả mô hình tuyến tính (linear) và mô hình tree-based (XGBoost) để tận dụng điểm mạnh của từng loại.
- Cải thiện khả năng tổng quát hóa: Bằng cách lấy trung bình dự đoán, mô hình ensemble giúp giảm phương sai (variance) và cải thiện khả năng tổng quát hóa (generalization) trên dữ liệu mới.
- 3 phương pháp được sử dụng:
- Trung bình (Mean): Lấy trung bình cộng của các dự đoán.
- Trung vị (Median): Lấy giá trị trung vị của các dự đoán (ít nhạy cảm với các giá trị ngoại lệ).
- Trung bình có trọng số (Weighted Mean): Lấy trung bình cộng có trọng số, ưu tiên các mô hình có hiệu suất tốt hơn.
Các mô hình được đánh giá dựa trên các chỉ số R-squared (hệ số xác định), Root Mean Squared Error (RMSE) (sai số toàn phương trung bình), và Mean Absolute Error (MAE) (sai số tuyệt đối trung bình) trên tập dữ liệu kiểm định (validation set). Mô hình hoạt động tốt nhất sẽ được chọn để đưa ra dự đoán cuối cùng trên tập dữ liệu thử nghiệm (test set).
7/ Kết quả đánh giá
7.1/ So sánh giữa các mô hình
| Model | Train_R2 | Val_R2 | Train_RMSE | Val_RMSE | Train_MAE | Val_MAE | Time |
|---|---|---|---|---|---|---|---|
| xgboost_fast | 0.9731 | 0.9165 | 12,778 | 24,184 | 8,366 | 15,165 | 0.9s |
| xgboost_random | 0.9643 | 0.9155 | 14,712 | 24,332 | 9,505 | 15,278 | 15.0s |
| ridge_poly | 0.9301 | 0.9077 | 20,597 | 25,425 | 12,443 | 15,592 | 17.2s |
| ridge | 0.8677 | 0.8858 | 28,345 | 28,290 | 15,871 | 16,709 | 2.2s |
| linear | 0.8714 | 0.8771 | 27,939 | 29,339 | 15,552 | 17,164 | 0.0s |
| lasso | 0.8675 | 0.8731 | 28,367 | 29,816 | 15,833 | 17,040 | 1.8s |
| lasso_poly | 0.8632 | 0.8604 | 28,820 | 31,268 | 16,812 | 17,873 | 27.6s |
| linear_poly | 1.0000 | 0.7763 | 0 | 39,586 | 0 | 26,709 | 0.7s |
Bảng 3. So sánh kết quả các mô hình hồi quy (Regression Models) và thời gian huấn luyện.
7.2/ Metrics Comparison

7.3/ Overfitting Analysis

7.4 MAE Comparison

8/ Kết luận
Dự án xây dựng mô hình dự đoán giá nhà tại Ames, Iowa, đã thành công trong việc áp dụng các kỹ thuật học máy hiện đại để xử lý bộ dữ liệu phức tạp với 81 đặc trưng, đạt được hiệu suất cao nhất từ mô hình XGBoost_fast với R² validation đạt 0.9165 và RMSE 24,184, chứng tỏ khả năng tổng quát hóa tốt trên dữ liệu mới. Việc áp dụng kỹ thuật đặc trưng như Mutual Information, tạo tương tác và target encoding, kết hợp với các best practices như phòng chống data leakage và cross-validation, không chỉ nâng cao độ chính xác mà còn đảm bảo tính tái sản xuất và mô-đun hóa của pipeline. Trong tương lai, có thể mở rộng bằng cách tích hợp dữ liệu thời gian thực hoặc thử nghiệm các mô hình deep learning để cải thiện thêm dự đoán, mang lại giá trị thực tiễn cho lĩnh vực bất động sản.
Chưa có bình luận nào. Hãy là người đầu tiên!