Professional Documents
Culture Documents
cs116
cs116
Thư viện Polars là một lựa chọn tối ưu khi làm việc với các tệp dữ liệu lớn, đặc biệt là
các tệp Parquet. Với thiết kế tận dụng tối đa khả năng của phần cứng hiện đại, Polars
cho phép xử lý dữ liệu một cách nhanh chóng và hiệu quả, vượt trội so với các thư viện
truyền thống như Pandas. Trong bài toán này, nhóm sử dụng các tệp Parquet được đọc
và xử lý dữ liệu bởi Polars.
3. Độ đo đánh giá
• Điểm gini
Điểm gini là một chỉ số đánh giá chất lượng của mô hình phân loại, tương tự như AUC
(Area Under the Curve). Công thức tính điểm gini từ AUC là:
gini = 2.AUC -1
- AUC: diện tích dưới đường cong ROC (Receiver Operating Characteristic). Nó đo
lường khả năng phân biệt giữa các lớp của mô hình. AUC có giá trị từ 0 đến 1, trong đó
0.5 thể hiện mô hình ngẫu nhiên, 1 thể hiện mô hình hoàn hảo.
• Falling_rate:
Sau khi tính điểm gini hàng tuần, một mô hình hồi quy tuyến tính ax+b được xây dựng
dựa trên các điểm gini này để xác định xu hướng thay đổi của chúng theo thời gian. Giá
trị `falling_rate` được tính toán là:
falling_rate = min(0, a)
• Độ biến thiên của các dự đoán:
Độ biến thiên của các dự đoán được đo bằng cách tính độ lệch chuẩn của các phần dư từ
hồi quy tuyến tính trên:
std(residuals)
Nhằm đo lường mức độ biến thiên của các điểm gini hàng tuần so với giá trị dự đoán từ
mô hình hồi quy tuyến tính. Độ biến thiên cao cho thấy mô hình không ổn định.
• Stability metric:
stability metric = mean(gini) + 88.min(0, a) - 0.5.std(residuals)
Stability metric tỉ lệ thuận với độ đo gini và tỉ lệ thuận với AUC, giúp đánh giá hiệu
suất và tính ổn định của mô hình trong dự đoán theo thời gian. Việc sử dụng AUC trong
quá trình huấn luyện giúp dễ dàng tính toán và cài đặt hơn.
4. Đặc trưng quan trọng
• Target: Trong quá trình phân tích dữ liệu cho thấy phân phối của 2 label có phần mất cân
bằng nhiều khi label 0 gấp hơn 30 lần so với label 1
Có thể thấy, có vẻ như Covid-19 đã bị ảnh hưởng rất nhiều đến tài chính của người tiêu dùng khiến số
lượng vay tăng đáng kể. Dựa vào phân phối theo tuần cho thấy, nhà cung cấp tài chính thường đưa ra quyết
định cuối tuần và quá trình này được tự động và chạy trên lịch trình được xác định. Ngoài ra, ta xác định
được đối với những tuần đầu của week_num dữ liệu có phần ổn định hơn so với các tuần trong khoảng 40 -
80. Điều này giúp các phiên bản hack có điểm số tốt hơn khi predict những tuần đầu.
• Khoản thanh toán hàng tháng của hợp đồng (annuity_780A).
• Plot corr matrix trong bảng static_0 với kiểu “A” và “P” có thể thấy có nhiều đặc trưng
có độ tương quan cao, có thể loại bỏ để tránh tình trạng đa cộng tuyến (multicollinearity),
giúp cải thiện hiệu suất và độ ổn định của mô hình học máy.
• Dữ liệu null1
Từ những giá trị trên, ta có thể áp dụng các kĩ thuật loại bỏ null, fill_na để làm sạch dữ liệu.
II. Các phương pháp liên quan
1. Xử lý dữ liệu2:
• Encode: Sử dụng các phương pháp chuyển đổi dữ liệu như Target Enoder đối với dữ liệu
target, Category encode đối với dữ liệu dạng Category bằng CountEncoder,...
• Sử dụng SMOTE, oversampling, undersampling để xử lí dữ liệu mất cân bằng.
• Thu gọn: thu gọn các tính năng phân loại có số lượng giá trị riêng biệt lớn hơn 200. Thay
vì loại bỏ các tính năng này thì hợp nhất một số giá trị có tần số thấp thành một nhóm.
• Loại bỏ những đặc trưng có độ tương quan cao.
• Bỏ các đặc trưng nhiều giá trị null hoặc fill với các giá trị mặc định (thường là 0)
1 https://www.kaggle.com/code/sergiosaharovskiy/home-credit-crms-2024-eda-and-submission
2 https://www.kaggle.com/competitions/home-credit-credit-risk-model-stability/discussion/508588
2. Xây dựng model:
- LightGBM:
Ưu điểm: Hiệu suất cao và xử lý tốt dữ liệu lớn. Hỗ trợ tính toán GPU và hiệu quả
với dữ liệu mất cân bằng. Thời gian huấn luyện và dự đoán nhanh.
Nhược điểm: Yêu cầu tinh chỉnh tham số cẩn thận. Mô hình khó giải thích và dễ bị
overfitting.
- CatBoost:
Ưu điểm: Xử lý tốt dữ liệu phân loại và giảm thiểu overfitting. Dễ sử dụng và hỗ trợ
tính toán GPU.
Nhược điểm: Tài liệu và cộng đồng hỗ trợ hạn chế. Hiệu quả có thể không vượt trội
trên một số loại dữ liệu khác và yêu cầu tài nguyên tính toán mạnh. Thời gian tính
toán lâu
- XGBoost
Ưu điểm: Hiệu suất cao và khả năng mở rộng tốt. Được sử dụng rộng rãi với tài liệu
và cộng đồng hỗ trợ phong phú. Thời gian huấn luyện và dự đoán nhanh.
Nhược điểm: Yêu cầu tinh chỉnh tham số phức tạp. Dễ bị overfitting nếu không cẩn
thận.
III. Phương pháp thực hiện
1. Xử lý dữ liệu
Xử lý dữ liệu là một bước quan trọng trong quá trình phân tích và mô hình hóa dữ
liệu, giúp đảm bảo rằng dữ liệu đầu vào được làm sạch và tối ưu hóa trước khi áp dụng
các kỹ thuật phân tích hoặc xây dựng mô hình.
3 https://www.kaggle.com/code/pereradulina/credit-risk-prediction-with-lightgbm-and-catboost
Tiếp theo, chúng ta sẽ áp dụng LightGBM - một thư viện tối ưu hóa cho tốc độ và hiệu suất
trong học máy, sử dụng thuật toán Gradient Boosting Decision Tree (GBDT) với các cải
tiến như GOSS và EFB để tăng tốc độ huấn luyện và giảm sự tiêu tốn bộ nhớ. Các tham số
chính của LightGBM được tinh chỉnh bằng cách sử dụng Optuna, bao gồm:
Cuối cùng sử dụng optuna tương tự đối với XGBoost để tìm ra tham số tốt nhất như sau:
4 https://www.kaggle.com/code/andreasbis/metric-hack-implementation
fitted_models_lgb.append(model)
e) Tùy vào xác suất dự đoán của "target_new" có đủ cao (sẽ có một ngưỡng tự đặt)
hay không, mà model sẽ cho rằng quan sát tương ứng đó giống như testing data hay
training data, và tương ứng sử dụng model "tốt hơn" hay "kém hơn" để dự đoán.
model = VotingModel(fitted_models_lgb)
df_test = df_test.drop(columns=["WEEK_NUM",'target'])
df_test = df_test.set_index("case_id")
y_pred = pd.Series(model.predict_proba(df_test)[:,1], index=df_test.index)
condition = y_pred<0.96
df_subm = df_subm.set_index("case_id")
df_subm.loc[condition, 'score'] = (df_subm.loc[condition, 'score'] - 0.05).clip(0)
Giá trị của chiến lược metric hack mà nhóm đã rút ra:
• Chiến lược này sử dụng một mô hình thứ ba để xác định xem dữ liệu nào trong test set nên
được dự đoán bằng mô hình nào. Mô hình phân loại này học cách phân biệt giữa train set và
test set, và dựa trên kết quả dự đoán, quyết định sử dụng mô hình nào để dự đoán kết quả cuối
cùng. Điều này có thể giúp tối ưu hóa hiệu suất dự đoán, đặc biệt khi test set có thể không đồng
nhất với train set.
IV. Kết luận ,hướng phát triển tương lai và bản phân công.
1. Kết luận
Trong quá trình thực hiện dự án, nhóm đã học hỏi và ứng dụng nhiều phương pháp học
máy chất lượng cũng như các kỹ thuật xử lý dữ liệu tiên tiến, kết hợp cùng với kiến
thức đã học trên lớp. Các mô hình như CatBoost, LightGBM đã được thử nghiệm và
cho thấy hiệu quả vượt trội khi kết hợp trong một Voting Model, đã cho kết quả tốt nhất
với điểm số AUC cao hơn so với các mô hình riêng lẻ. Việc tối ưu hóa tham số bằng kỹ
thuật Optuna và áp dụng kỹ thuật kiểm tra chéo với StratifiedGroupKFold đã giúp nâng
cao độ chính xác của mô hình.
2. Hướng phát triển tương lai
Cải thiện mô hình: Tiếp tục tìm kiếm và thử nghiệm các mô hình, các thuật toán và kỹ
thuật mới khác nhằm cải thiện độ chính xác và hiệu quả của mô hình.
Nâng cao kiến thức: Tiếp tục học hỏi và nắm vững các thuật toán và kỹ thuật mới trong
lĩnh vực học máy và phân tích dữ liệu qua các nguồn tài liệu và cuộc thi.
3. Bảng phân công
Mức độ
MSSV Họ và tên Công việc
hoàn thành
EDA, Huấn luyện mô hình
22520019 Nguyễn Ấn 100%
Viết báo cáo phần 1, 2
Nguyễn Trần Tinh chỉnh tham số, Xử lý dữ liệu
22520026 100%
Khương An Viết báo cáo phần 3.1, 3.2
Xây dựng mô hình
22521280 Nguyễn Phú Tài Phát triển và sử dụng metric hack 100%
Viết báo cáo phần 3.3, 4