DS-mini: Modeling với XGBoost

ds_mini_modeling
ds_mini_modeling

Trong phần này, tôi sẽ thực hiện training trên tập dữ liệu feature đã được combine ở các phần trước. Để tiến hành thực nghiệm, ta cần phân chia tập dữ liệu thành 3 tập (train, validation, test). Ở đây, tôi lấy tương ứng tỉ lệ 70/15/15. Mục đích của việc này giúp cho model tránh bị overfitting. Đồng thời, ta có thể dùng validation set để tuning model.

Sau khi phân chia tập dữ liệu, ta sẽ dùng XGBoost để training model. Model này được đánh giá dựa trên AUC metric. Do đó, AUC càng cao, model của ta càng nắm bắt được nhiều pattern trong tập dữ liệu đồng nghĩa với việc khả năng dự đoán của mô hình cũng chính xác hơn.

Cuối cùng, ta dùng model build được để predict output cho tập test và upload submission file lên Kaggle. Tôi có thử upload 2 lần. Lần 1 chỉ gồm các feature binary trong bảng application. Lần 2 gồm các feature ở lần 1 cộng thêm các feature đã tinh chỉnh khác. Kết quả lần 2 vượt trội hơn hẳn lần 1 (0.74 vs 0.63).

Khi đã hoàn chỉnh toàn bộ các bước này, về sau khi thêm feature mới, ta chỉ việc combine features và bỏ vào model để xem kết quả có cải thiện hơn không cũng như phân tích và tuning lại các tham số cho model.
Tiếp tục đọc “DS-mini: Modeling với XGBoost”

Advertisement

DS-mini: Feature engineering (application)

Feature engineering là gì

“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering.”
—  Andrew Ng, Machine Learning and AI via Brain simulations

“Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.”
— Dr. Jason Brownlee from machinelearningmastery.com

Như vậy, feature engineering là tác vụ cần thiết trong quá trình xây dựng predictive model, rất tốn thời gian và công sức đòi hỏi phải có kiến thức ngành. Lý do, ta không thể đưa dữ liệu thô (raw data) trực tiếp vào bất kỳ mô hình Machine Learning nào. Nên mục tiêu của chúng ta cần làm là rút trích các đặc trưng (features) từ dữ liệu thô ban đầu này.

Vậy thế nào là một feature? Ví dụ, để nhận diện người bạn gặp là người quen hay người lạ, ta sẽ dựa vào các feature như dáng đi, màu tóc, quần áo, mắt, mũi, miệng của người đó. Trong bài toán home credit, feature có thể là các thông tin profile của người đi vay như độ tuổi, giới tính, lương hằng tháng, có bao nhiêu con, có sở hữu bất động sản không, etc.

Không nói nhiều lý thuyết nữa, ta hãy bắt tay vào feature engineering cho bảng application. Ta bắt đầu với bảng này vì nó chứa đầy đủ ID của user cả tập train và tập test, thuận tiện cho quá trình join features cũng như phân chia train/validation/test set.

Tiếp tục đọc “DS-mini: Feature engineering (application)”

DS-mini EDA: Explore Data Analysis

home_credit
home_credit

Mục tiêu của cuộc thi Home credit của Kaggle là xây dựng được mô hình dự đoán (predictive model) có điểm đánh giá (evaluation metric) AUC cao. Một mô hình Machine Learning chỉ có thể xây dựng được khi dữ liệu đầu vào đã được chuẩn bị và xử lý tốt. Kaggle cho trước tập các bảng (table), nhiệm vụ của chúng ta là biến đổi và kết hợp chúng lại thành các đặc trưng (feature) có ý nghĩa để model có thể dự đoán tốt trên tập dữ liệu chưa nhìn thấy (test set, unseen data), kết quả thực tế (label) này được giữ bí mật trên Kaggle và dùng để đánh giá các đội trong cuộc thi.

Để có thể làm feature engineering tốt, bước đầu tiên ta cần quan sát và hiểu được dữ liệu. Ta sẽ sử dụng các kỹ thuật bên thống kê gồm các số liệu thống kê và biểu đồ (visualization). Explore Data Analysis (EDA) sẽ giúp ta đánh giá, lựa chọn và biến đổi dữ liệu thành feature phù hợp cho model.

Khi đã có các phân tích từ EDA, ta sẽ có những hướng giải quyết tốt hơn khi đối mặt với các vấn đề bên dưới:

  • Dữ liệu bị NaN (Not a Number), Null (missing data), nguyên nhân từ đâu?
  • Kiểu dữ liệu không khớp (e.g. 1990.0 là kiểu số thực nhưng load lên lại là kiểu string), nên ép kiểu như thế nào?
  • Dữ liệu bị lặp (duplicate) nên chọn và bỏ bớt cái nào?
  • Dữ liệu không liên quan, có phải do nhập sai?
  • Dữ liệu bất thường (e.g. tuổi bị âm, huyết áp bằng không, ngày tháng không đúng format) nên biến đổi thế nào?
  • Dữ liệu ở dạng categorical thì nên biến đổi bằng one-hot encoding hay mapping number?
  • etc.

Tiếp tục đọc “DS-mini EDA: Explore Data Analysis”

Nổi bật

Data Science mini course

ds_mini_course

Mini course này được thiết kế dành cho những bạn còn “chân ướt chân ráo” bước vào lĩnh vực Data Science (DS). Các chủ đề sẽ xoay quanh tập dữ liệu từ cuộc thi Kaggle Home Credit Default Risk, việc này giúp cho người học tập trung kiến thức của mình vào trong ngữ cảnh là một cuộc thi. Từ đó, ta sẽ có động lực cũng như ghi nhớ tốt hơn các syntax và tình huống xử lý cụ thể trong ngôn ngữ lập trình Python.

Mỗi chương được trình bày bằng nhiều notebooks. Trong mỗi notebooks, có những đoạn code và phần ghi chú bằng Tiếng Việt cho người mới dễ theo dõi. Bên cạnh là Tiếng Anh được dùng trong những comment đơn giản. Ta có thể học bằng cách nhập lại đoạn code trên máy của mình và quan sát phản hồi. Những cú pháp khó hiểu, ta có thể tra Google để tìm hiểu thêm thông tin. Mỗi tuần, tôi sẽ cố gắng hoàn tất một chương cho đến lúc hoàn thành mini course này.

Kết thúc series, tôi hy vọng mọi người sẽ phát triển được các kỹ năng thực tế vào trong công việc, cải thiện khả năng quan sát và phân tích dữ liệu, hoặc có thể dùng course này làm tài nguyên training cho team DS của mình.

Tiếp tục đọc “Data Science mini course”