Professional Documents
Culture Documents
Ôn-Tập-Python-cho-ML (1)
Ôn-Tập-Python-cho-ML (1)
- K-Fold Cross Validation: Phần dữ liệu Training thì sẽ được chia ngẫu nhiên thành
K phần (K là một số nguyên, hay chọn là 5 hoặc 10). Sau đó train model K lần, mỗi lần
train sẽ chọn 1 phần làm dữ liệu validation và K-1 phần còn lại làm dữ liệu training. Kết
quả đánh giá model cuối cùng sẽ là trung bình cộng kết quả đánh giá của K lần train.
1. Min/Max Scaling:
o Mục đích: Đưa các giá trị dữ liệu về một phạm vi cố định, chẳng hạn như [0, 1].
o Công thức: x_norm = (x - x_min)/(x_max - x_min)
2. Standard Scaling (Z-score Normalization):
o Mục đích: Sử dụng khi dữ liệu có vẻ tuân theo phân phối Gaussian (chuẩn), làm
cho dữ liệu đối xứng quanh giá trị trung bình và biến đổi dữ liệu về một phạm vi
để cân bằng tác động của mỗi biến vào mô hình.
o Công thức x_norm = (x - mean(x) )/std(x)
3. Log Transformation:
o Mục đích: Giảm tác động của các giá trị ngoại lai (outliers) nhờ sử dụng hàm
logarit.
o Công thức: x_norm = log(x) or x_norm = log(1+x)
o Lưu ý: Việc thêm 1 vào x (log(1+x)) giúp tránh logarit của số 0 và xử lý các giá
trị nhỏ hơn 1 tốt hơn.
4. Binning (Discretization):
o Mục đích: Biến đổi dữ liệu liên tục thành dữ liệu rời rạc bằng cách chia phạm vi
của biến thành các khoảng (bins). Phương pháp này giúp xử lý dữ liệu nhiễu và
đơn giản hóa mô hình.
o Ví dụ: Biến tuổi có thể được chia thành các nhóm: trẻ, trung niên, già.
5. Robust Scaling:
o Mục đích: Sử dụng giá trị trung vị (median) và khoảng tứ phân vị (IQR -
Interquartile Range) để chuẩn hóa, giảm nhạy cảm của các giá trị ngoại lai so với
phương pháp min-max và z-score.
o Công thức: x_norm = (x - median(x) )/IQR
o Với IQR = Q3 - Q1 (khoảng giữa phần tư thứ 3 và phần tư thứ 1 của dữ liệu).
- One-hot encoding : Chuyển đổi các biến phân loại thành các vector nhị
phân, nơi mỗi giá trị riêng biệt của biến phân loại được biểu diễn bằng
một cột riêng biệt với giá trị 0 hoặc 1- > khoảng cách dữ các dữ liệu là
bằng nhau ( /2)
- Ordinal Encoding: gán số nguyên cho biến phân loại -> kiểu dữ liệu có
thứ tự
- Simple target encoding: mã hoá theo kiểu xác xuất của dữ liệu
Mục tiêu: Dự đoán một giá trị liên tục (continuous value).
Ví dụ: Dự đoán giá nhà, dự đoán điểm số học sinh, dự đoán mức lương dựa trên số năm
kinh nghiệm.
Hồi quy logic (Logistic Regression):
Mục tiêu: Dự đoán một xác suất và phân loại giá trị (classification), thường là nhị phân
(binary).
Ví dụ: Dự đoán khả năng một email là spam hay không, dự đoán khả năng một bệnh
nhân mắc bệnh dựa trên các triệu chứng.
MÔ HÌNH
LinearRegression
Lý do chọn: Đây là mô hình cơ bản và đơn giản nhất cho bài toán hồi quy tuyến tính.
Đặc điểm:
Giả định mối quan hệ tuyến tính giữa biến độc lập và biến phụ thuộc.
Dễ hiểu và dễ triển khai.
Nhạy cảm với outliers.
Ridge Regression
Lý do chọn: Ridge Regression giúp giảm thiểu vấn đề đa cộng tuyến (multicollinearity)
bằng cách thêm thuật toán phạt L2.
Đặc điểm:
o Giảm độ lớn của các hệ số hồi quy.
o Thêm một thuật toán phạt L2 vào hàm mất mát để hạn chế overfitting.
Lasso Regression
Lý do chọn: Lasso Regression giúp thực hiện lựa chọn đặc trưng và giảm thiểu vấn đề đa
cộng tuyến bằng cách thêm thuật toán phạt L1.
Đặc điểm:
o Có khả năng loại bỏ các đặc trưng không quan trọng bằng cách đưa hệ số của
chúng về 0.
o Thêm một thuật toán phạt L1 vào hàm mất mát để hạn chế overfitting.
Classification:
Lý do chọn: KNN là một thuật toán không tham số, hữu ích trong các tình huống dữ liệu
không tuyến tính.
Đặc điểm:
o Không giả định về dạng của dữ liệu.
o Đơn giản và dễ hiểu.
o Hiệu suất phụ thuộc vào số lượng hàng xóm (k) và thước đo khoảng cách.
Lý do chọn: SVM có thể xử lý tốt dữ liệu không tuyến tính thông qua các kernel tricks.
Đặc điểm:
o Tìm siêu phẳng phân chia tốt nhất giữa các lớp.
o Hỗ trợ các kernel khác nhau (linear, polynomial, RBF) để xử lý dữ liệu không
tuyến tính.
o Có thể mở rộng cho bài toán phân loại đa lớp.
GridSearchCV
GridSearchCV là phương pháp tìm kiếm lưới (grid search) để tìm ra các siêu tham số tối
ưu cho một mô hình học máy. Phương pháp này thử tất cả các kết hợp có thể của các
tham số mà người dùng chỉ định, từ đó chọn ra bộ tham số tốt nhất dựa trên đánh giá hiệu
năng (thường sử dụng cross-validation).
Ưu điểm:
Đảm bảo tìm ra tổ hợp tham số tối ưu trong phạm vi tìm kiếm.
Nhược điểm:
Tốn kém về mặt tính toán nếu có nhiều tham số hoặc nhiều giá trị cho mỗi tham số
(do số lượng tổ hợp tăng lên rất nhanh).
RandomizedSearchCV
RandomizedSearchCV là phương pháp tìm kiếm ngẫu nhiên (random search) để tối ưu
các siêu tham số. Thay vì thử tất cả các tổ hợp, phương pháp này thử một số lượng ngẫu
nhiên các tổ hợp trong phạm vi tìm kiếm.
Ưu điểm:
Hiệu quả tính toán hơn GridSearchCV khi có nhiều tham số và mỗi tham số có
nhiều giá trị.
Có thể đạt kết quả tốt trong thời gian ngắn hơn, đặc biệt khi không có nhiều tài
nguyên tính toán.
Nhược điểm:
Mục tiêu: Dự đoán một giá trị liên tục (continuous value).
Ví dụ: Dự đoán giá nhà, dự đoán điểm số học sinh, dự đoán mức lương dựa trên số năm
kinh nghiệm.
Mục tiêu: Dự đoán một xác suất và phân loại giá trị (classification), thường là nhị phân
(binary).
Ví dụ: Dự đoán khả năng một email là spam hay không, dự đoán khả năng một bệnh
nhân mắc bệnh dựa trên các triệu chứng.
Lấy dữ liệu từ khách hàng/công ty, tìm kiếm các nguồn dữ liệu tương tự uy tín, crawl dữ
liệu:
A. Mã người dùng (int)
B. Lịch sử mua hàng (list[int])
C. Danh mục sản phẩm duyệt qua trước đó(list[string])
D. Đánh giá của người dùng (float)
E. Tần suất mua hàng (int)
F. tuổi (int)
G. giới tính (string)
Formulation:
Giả sử, tại thời điểm mua hàng là T1, ta có T2 =T1-7 là thời gian 7 ngày trước đó:
B & C --> H: mã sãn phẩm tìm kiếm (list[int])
Lấy top 3 mã sản phẩm gần nhất trong B và H làm đặc trưng đầu vào
Kết hợp cột D và H --> các đánh giá về mã hàng đã duyệt
Kết hợp đặc trưng B & H: mã tất cả sản phẩm (I)
Kết hợp đặc trưng T1 và cột B --> mã hàng đã mua tại T1 (J)
Dữ liệu đầu vào (input) X: [A, B1, B2, B3, H1, H2, H3, D1, D2, D3, E, F, G]
Dữ liệu đầu ra (output) y: mã hàng đã mua = J
B2: Tiền xử lý dữ liệu:
Fit (I) vào label_encoder
Áp dụng pp điền giá trị thiếu và label encode cho các cột: A, G
Áp dụng pp điền giá trị thiếu và transform của label_encoder cho các cột: B1, B2, B3,
H1, H2, H3,
Áp dụng điền pp điền giá trị thiếu và stardscale cho các cột: D1, D2, D3, E, F.
Áp dụng label_encoder cho cột (J)
B3: Chuẩn bị mô hình: Dùng mô hình KNN_Classifier cho bài toán vì .....
B4: Huấn luyện và kiểm tra mô hình: Chia dữ liệu train/val/test --> 7/1/2 huấn luyện trên train
data và tune hyper-parameter trên trên val data
B5: Đánh giá mô hình: Dùng test data và precision/accurancy để đánh giá mô hình.
EDA