Trong Machine Learning, bài toán Classification yêu cầu mô hình dự đoán một quan sát thuộc nhóm nào, chẳng hạn phân loại email thành spam hoặc không spam, nhận diện giao dịch đáng ngờ hay phân loại khách hàng theo khả năng rời bỏ dịch vụ.
Có nhiều thuật toán giải quyết bài toán này, nhưng không phải thuật toán nào cũng học theo cùng một cách. K-Nearest Neighbors (KNN) dựa vào những điểm dữ liệu gần với quan sát cần dự đoán, trong khi Support Vector Machine (SVM) tìm một ranh giới phân chia các lớp sao cho khoảng cách biên được tối ưu theo mục tiêu của thuật toán.
Hiểu sự khác biệt giữa KNN và SVM giúp người học lựa chọn mô hình phù hợp với dữ liệu, hiểu ảnh hưởng của Feature Scaling, Distance Metric, Decision Boundary và các tham số trong quá trình huấn luyện.
1. Classification là gì?
Classification là một dạng Supervised Learning, trong đó mô hình học từ dữ liệu đã có nhãn để dự đoán lớp của những quan sát mới.
Một bộ dữ liệu Classification thường gồm:
- Features: Các đặc trưng đầu vào mô tả từng quan sát.
- Label: Nhãn hoặc lớp mà mô hình cần dự đoán.
- Training set: Dữ liệu được sử dụng để xây dựng mô hình.
- Test set: Dữ liệu dùng để đánh giá khả năng dự đoán trên các quan sát chưa được sử dụng trong quá trình huấn luyện.
Ví dụ, với bài toán phân loại khách hàng có rời bỏ dịch vụ hay không, các Features có thể gồm thời gian sử dụng, số lần khiếu nại, mức chi tiêu và số lần đăng nhập. Label có thể là “Rời bỏ” hoặc “Tiếp tục sử dụng”.
KNN và SVM đều có thể xử lý Classification, nhưng chúng biểu diễn và học quy luật phân loại theo hai cách khác nhau.
2. KNN là gì?
K-Nearest Neighbors (KNN) là thuật toán dự đoán dựa trên các điểm dữ liệu gần nhất với quan sát mới theo một thước đo khoảng cách đã chọn.
Ý tưởng trực quan của KNN là: những quan sát gần nhau trong không gian đặc trưng có xu hướng chia sẻ một số đặc điểm. Vì vậy, nếu một điểm mới nằm gần nhiều điểm thuộc lớp A hơn lớp B, KNN có thể phân loại điểm đó vào lớp A.
2.1. KNN hoạt động như thế nào?
Giả sử cần phân loại một khách hàng mới dựa trên hai Features là thu nhập và mức chi tiêu. Trong dữ liệu đã gán nhãn, một số khách hàng thuộc nhóm “Có khả năng mua”, số khác thuộc nhóm “Ít khả năng mua”. KNN tìm những khách hàng gần với khách hàng mới nhất rồi tổng hợp nhãn của họ.
Dữ liệu đã có nhãn
|
v
Nhận một quan sát mới
|
v
Tính khoảng cách đến các điểm huấn luyện
|
v
Chọn K điểm gần nhất
|
v
Bỏ phiếu theo nhãn của các điểm lân cận
|
v
Dự đoán lớp cho quan sát mới
Quy trình cơ bản gồm bốn bước:
- Chọn giá trị K, tức số lượng hàng xóm cần xem xét.
- Tính khoảng cách giữa quan sát mới và các quan sát trong tập huấn luyện.
- Chọn K hàng xóm có khoảng cách nhỏ nhất.
- Dự đoán lớp dựa trên số phiếu của các hàng xóm, hoặc dựa trên trọng số nếu sử dụng Weighted KNN.
2.2. K có ý nghĩa gì?
K là số lượng hàng xóm được dùng để đưa ra dự đoán. Tham số này ảnh hưởng trực tiếp đến độ phức tạp của ranh giới phân lớp.
| Giá trị K | Đặc điểm | Rủi ro có thể gặp |
|---|---|---|
| K nhỏ | Dự đoán phụ thuộc vào một nhóm rất gần quan sát cần phân loại. | Nhạy với nhiễu và các điểm ngoại lệ; ranh giới có thể phức tạp. |
| K lớn hơn | Dự đoán tổng hợp thông tin từ nhiều quan sát hơn. | Có thể làm mờ các vùng cục bộ và thiên về lớp chiếm đa số. |
K nhỏ không phải lúc nào cũng tốt hơn vì tập trung vào vùng lân cận hẹp. K lớn cũng không mặc nhiên tốt hơn vì có thể đưa các điểm thuộc những vùng khác nhau vào cùng một phép bỏ phiếu.
Giá trị K nên được lựa chọn bằng Cross-Validation trên tập huấn luyện. Trong bài toán có nhiều lớp, việc chọn K lẻ đôi khi giúp giảm khả năng hòa phiếu ở bài toán hai lớp, nhưng không giải quyết được mọi trường hợp hòa phiếu.
2.3. Distance Metric: KNN xác định “gần” như thế nào?
KNN cần một quy tắc định lượng khoảng cách. Thước đo khoảng cách có thể ảnh hưởng đáng kể đến những điểm được chọn làm hàng xóm.
Euclidean Distance là một lựa chọn phổ biến. Với hai điểm dữ liệu X và Y có d đặc trưng, khoảng cách Euclidean được tính như sau:
d(X, Y) = sqrt(Σ (X_j - Y_j)²), với j chạy từ 1 đến d.
Ví dụ, hai điểm có tọa độ X = (2, 3) và Y = (5, 7) có khoảng cách Euclidean bằng căn bậc hai của [(5 − 2)² + (7 − 3)²], tức bằng 5.
Ngoài Euclidean Distance, tùy bài toán còn có thể sử dụng Manhattan Distance hoặc các thước đo khác. Việc lựa chọn cần phù hợp với ý nghĩa của Features và cấu trúc dữ liệu.
2.4. Vì sao KNN cần Feature Scaling?
Giả sử dữ liệu có hai Features: tuổi nằm trong khoảng vài chục năm và thu nhập được tính bằng hàng triệu đồng. Nếu tính khoảng cách trực tiếp, Feature có giá trị số lớn có thể chi phối kết quả, dù nó không nhất thiết quan trọng hơn về mặt dự đoán.
Feature Scaling đưa các Features về thang đo phù hợp hơn. Hai kỹ thuật phổ biến là Standardization và Min-Max Scaling.
- Standardization: Biến đổi dữ liệu để mỗi Feature có trung bình xấp xỉ 0 và độ lệch chuẩn xấp xỉ 1 trên dữ liệu dùng để fit bộ biến đổi.
- Min-Max Scaling: Đưa giá trị về một khoảng xác định, thường là từ 0 đến 1.
Khi đánh giá mô hình, bộ biến đổi phải được fit trên tập huấn luyện rồi áp dụng lên tập validation hoặc test. Nếu sử dụng thông tin của tập test để fit bộ biến đổi, quá trình đánh giá có thể bị Data Leakage.
2.5. KNN có thực sự học mô hình?
KNN thường được xem là một thuật toán Lazy Learning hoặc Instance-Based Learning. Trong giai đoạn huấn luyện, thuật toán chủ yếu lưu lại dữ liệu và cấu trúc cần thiết thay vì xây dựng một hàm dự đoán tham số hóa phức tạp như nhiều mô hình khác.
Phần tính toán đáng kể thường xuất hiện khi dự đoán: hệ thống cần xác định những hàng xóm phù hợp trong dữ liệu đã lưu. Vì vậy, KNN có thể đơn giản ở giai đoạn fit nhưng tốn thời gian và bộ nhớ khi dữ liệu lớn.
3. SVM là gì?
Support Vector Machine (SVM) là thuật toán Supervised Learning có thể dùng cho Classification và Regression. Trong Classification, SVM tìm một Decision Boundary để phân chia các lớp, đồng thời tối ưu Margin theo một hàm mục tiêu cụ thể.
Với dữ liệu hai chiều, Decision Boundary có thể là một đường thẳng. Trong không gian nhiều chiều, nó là một siêu phẳng (Hyperplane).
Điểm khác biệt quan trọng so với KNN là SVM không mặc định phân loại một điểm bằng cách đếm nhãn của các điểm lân cận. Thay vào đó, thuật toán xây dựng ranh giới dựa trên dữ liệu huấn luyện và tiêu chí tối ưu.
3.1. Hyperplane và Margin
Trong Linear SVM, ranh giới phân lớp có thể được biểu diễn bằng phương trình:
w · x + b = 0
Trong đó:
- x: Vector đặc trưng của một quan sát.
- w: Vector hệ số xác định hướng của ranh giới.
- b: Hệ số dịch chuyển ranh giới.
SVM tìm một ranh giới giúp phân tách các lớp và tối ưu khoảng cách biên theo mục tiêu đã đặt ra. Margin là khoảng cách từ ranh giới đến những điểm dữ liệu gần nhất của các lớp liên quan.
Trong Hard-Margin SVM, khi dữ liệu có thể phân tách tuyến tính hoàn toàn, thuật toán tìm siêu phẳng có Margin lớn nhất mà không cho phép vi phạm điều kiện phân lớp. Trong thực tế, dữ liệu thường có nhiễu hoặc chồng lấn nên Soft-Margin SVM cho phép một số điểm vi phạm biên để cân bằng giữa Margin và lỗi phân loại.
3.2. Support Vector là gì?
Support Vectors là những điểm dữ liệu có vai trò quyết định đối với ranh giới phân lớp được tìm thấy. Trong cách nhìn hình học của SVM, những điểm nằm trên hoặc trong vùng biên là các điểm quan trọng đối với nghiệm tối ưu.
Trực giác quan trọng là không phải mọi điểm huấn luyện đều tác động như nhau đến ranh giới. Những điểm nằm xa biên thường ít ảnh hưởng trực tiếp đến nghiệm của một SVM tuyến tính đã được huấn luyện, trong khi Support Vectors đóng vai trò then chốt.
3.3. Soft Margin và tham số C
Với dữ liệu thực tế, không phải lúc nào cũng tồn tại ranh giới phân chia hoàn hảo. SVM thường sử dụng Soft Margin để cho phép một số điểm nằm trong vùng biên hoặc bị phân loại sai.
Tham số C điều chỉnh mức phạt đối với các vi phạm biên trong mục tiêu tối ưu:
- C lớn: Mô hình phạt mạnh hơn các vi phạm, có xu hướng cố gắng phân loại đúng dữ liệu huấn luyện hơn. Điều này có thể tạo ra ranh giới phức tạp hơn và tăng nguy cơ Overfitting.
- C nhỏ: Mô hình chấp nhận nhiều vi phạm hơn để đổi lấy Margin rộng hơn hoặc ranh giới ít phụ thuộc hơn vào một số quan sát. Nếu C quá nhỏ, mô hình có thể Underfit.
Không nên hiểu C lớn luôn tốt hoặc C nhỏ luôn an toàn. Giá trị phù hợp cần được lựa chọn dựa trên kết quả Cross-Validation.
3.4. Kernel Trick: Khi ranh giới không tuyến tính
Không phải dữ liệu nào cũng có thể phân chia tốt bằng một đường thẳng hoặc siêu phẳng. Ví dụ, một lớp có thể tập trung ở giữa và lớp còn lại bao quanh bên ngoài. Khi đó, Linear SVM có thể không biểu diễn được ranh giới phù hợp.
Kernel Trick cho phép SVM xây dựng ranh giới phi tuyến thông qua một hàm Kernel, biểu diễn các tích vô hướng trong một không gian đặc trưng khác mà không nhất thiết phải tính tường minh toàn bộ phép biến đổi sang không gian đó.
Một số Kernel thường gặp:
| Kernel | Đặc điểm | Khi nào cân nhắc? |
|---|---|---|
| Linear | Ranh giới tuyến tính. | Dữ liệu có thể được phân chia tương đối tốt bằng một siêu phẳng; thường là lựa chọn cần thử đầu tiên. |
| Polynomial | Cho phép mô hình hóa quan hệ đa thức. | Khi tương tác hoặc cấu trúc đa thức có ý nghĩa với bài toán. |
| RBF | Cho phép xây dựng ranh giới phi tuyến linh hoạt. | Khi quan hệ giữa Features và nhãn không tuyến tính và chưa có cấu trúc đơn giản rõ ràng. |
Kernel linh hoạt có thể giúp mô hình biểu diễn các ranh giới phức tạp, nhưng cũng có thể làm tăng nguy cơ Overfitting và chi phí tính toán. Kernel cần được lựa chọn cùng với các tham số liên quan bằng phương pháp đánh giá phù hợp.
3.5. Tham số gamma trong RBF Kernel
Với RBF Kernel, gamma điều khiển mức độ ảnh hưởng của một quan sát trong không gian đặc trưng:
- Gamma lớn: Ảnh hưởng của mỗi điểm tập trung hơn ở vùng lân cận. Ranh giới có thể trở nên phức tạp và nhạy với dữ liệu huấn luyện.
- Gamma nhỏ: Ảnh hưởng lan rộng hơn. Ranh giới thường mượt hơn nhưng có thể không mô tả đủ cấu trúc dữ liệu nếu giá trị quá nhỏ.
Trong scikit-learn, với SVC sử dụng RBF Kernel, có thể đặt gamma="scale" để thư viện xác định giá trị theo dữ liệu huấn luyện. Khi thử nghiệm, cần xem xét đồng thời C và gamma vì hai tham số này ảnh hưởng lẫn nhau.
4. So sánh KNN và SVM
| Tiêu chí | KNN | SVM |
|---|---|---|
| Ý tưởng chính | Dựa vào nhãn của các điểm lân cận. | Tìm ranh giới phân lớp tối ưu theo hàm mục tiêu. |
| Cách học | Lazy Learning; chủ yếu lưu dữ liệu huấn luyện. | Tối ưu mô hình từ dữ liệu huấn luyện. |
| Giai đoạn dự đoán | Có thể tốn kém vì phải tìm hàng xóm trong dữ liệu. | Phụ thuộc vào Kernel, số Support Vectors và cách triển khai. |
| Feature Scaling | Thường rất quan trọng khi dùng khoảng cách. | Thường quan trọng vì Margin và Kernel phụ thuộc vào thang đo. |
| Ranh giới phi tuyến | Có thể hình thành tự nhiên từ cấu trúc lân cận. | Có thể mô hình hóa bằng Kernel phi tuyến như RBF. |
| Tham số quan trọng | K, Distance Metric, weights. | C, Kernel, gamma và degree đối với Polynomial Kernel. |
| Dữ liệu lớn | Có thể chậm khi dự đoán nếu phải so sánh với nhiều điểm. | SVC với Kernel có thể tốn kém khi tập huấn luyện lớn; Linear SVM có thể phù hợp hơn với dữ liệu lớn, đặc biệt khi thưa. |
| Khả năng diễn giải | Có thể giải thích một dự đoán thông qua các hàng xóm cụ thể. | Linear SVM dễ phân tích hơn về mặt ranh giới so với SVM Kernel phức tạp. |
Không thể kết luận KNN hay SVM luôn tốt hơn. Kết quả phụ thuộc vào kích thước dữ liệu, số lượng Features, hình dạng ranh giới phân lớp, mức độ nhiễu, chi phí tính toán và mục tiêu đánh giá.
5. Ví dụ thực hành: So sánh KNN và SVM bằng Python
Để so sánh công bằng, chúng ta sử dụng cùng một bộ dữ liệu, cùng cách chia tập huấn luyện và tập kiểm tra, đồng thời đặt bước Standardization bên trong Pipeline. Ví dụ dưới đây sử dụng bộ dữ liệu Breast Cancer Wisconsin có sẵn trong scikit-learn.
5.1. Cài đặt thư viện
pip install scikit-learn pandas
5.2. Xây dựng và đánh giá hai mô hình
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.metrics import (
accuracy_score,
precision_score,
recall_score,
f1_score,
classification_report
)
# 1. Tải dữ liệu
data = load_breast_cancer()
X = data.data
y = data.target
# 2. Chia dữ liệu thành train và test
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42,
stratify=y
)
# 3. Tạo Pipeline cho KNN
knn_model = Pipeline([
("scaler", StandardScaler()),
("classifier", KNeighborsClassifier(
n_neighbors=5,
weights="uniform"
))
])
# 4. Tạo Pipeline cho SVM
svm_model = Pipeline([
("scaler", StandardScaler()),
("classifier", SVC(
kernel="rbf",
C=1.0,
gamma="scale"
))
])
models = {
"KNN": knn_model,
"SVM": svm_model
}
results = []
# 5. Huấn luyện và đánh giá
for name, model in models.items():
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
results.append({
"Model": name,
"Accuracy": accuracy_score(y_test, y_pred),
"Precision": precision_score(y_test, y_pred),
"Recall": recall_score(y_test, y_pred),
"F1-score": f1_score(y_test, y_pred)
})
print(f"--- {name} ---")
print(classification_report(
y_test,
y_pred,
target_names=data.target_names
))
results_df = pd.DataFrame(results)
print(results_df)
5.3. Giải thích đoạn mã
load_breast_cancer(): Tải bộ dữ liệu phân loại khối u vú từ scikit-learn. Đây là dữ liệu phục vụ thực hành học máy, không thay thế đánh giá y khoa.train_test_split(): Chia dữ liệu để đánh giá trên những quan sát không dùng trong quá trình fit.StandardScaler(): Chuẩn hóa Features dựa trên thống kê của tập huấn luyện.Pipeline: Gộp tiền xử lý và mô hình thành một quy trình thống nhất, giúp giảm nguy cơ Data Leakage.KNeighborsClassifier(n_neighbors=5): Dùng năm hàng xóm gần nhất để dự đoán lớp.SVC(kernel="rbf"): Sử dụng SVM với RBF Kernel để học ranh giới có thể phi tuyến.Accuracy: Tỷ lệ dự đoán đúng trên toàn bộ quan sát được đánh giá.Precision: Trong số các quan sát được dự đoán là lớp dương, tỷ lệ thực sự thuộc lớp dương.Recall: Trong số các quan sát thực sự thuộc lớp dương, tỷ lệ được mô hình nhận diện đúng.F1-score: Trung bình điều hòa của Precision và Recall.
Trong bộ dữ liệu này, scikit-learn mã hóa nhãn 0 là malignant và nhãn 1 là benign. Vì vậy, các chỉ số Precision, Recall và F1-score trong ví dụ mặc định được tính cho lớp 1, tức lớp benign. Khi mục tiêu quan tâm là phát hiện malignant, cần chỉ định nhãn dương phù hợp hoặc xem báo cáo riêng cho từng lớp.
Đoạn mã không đưa ra trước kết quả Accuracy hay F1-score vì giá trị thực tế cần được xác nhận bằng cách chạy chương trình trong môi trường cụ thể. Với mục tiêu so sánh mô hình, nên sử dụng Cross-Validation trên tập huấn luyện để lựa chọn K, C và gamma trước khi đánh giá cuối cùng trên tập test.
6. Cách lựa chọn KNN hay SVM trong thực tế
6.1. Khi nào nên thử KNN?
- Khi dữ liệu có số lượng quan sát vừa phải và cấu trúc lân cận mang ý nghĩa.
- Khi muốn xây dựng một baseline đơn giản để hiểu ảnh hưởng của khoảng cách và K.
- Khi cần giải thích một dự đoán bằng cách xem các quan sát tương tự trong dữ liệu huấn luyện.
- Khi có thể kiểm soát chi phí tìm kiếm hàng xóm và ảnh hưởng của số chiều dữ liệu.
6.2. Khi nào nên thử SVM?
- Khi cần tìm ranh giới phân lớp có Margin tốt và dữ liệu phù hợp với cách biểu diễn của SVM.
- Khi số chiều dữ liệu tương đối lớn so với số quan sát, đặc biệt với các bài toán phù hợp Linear SVM.
- Khi dữ liệu có ranh giới phi tuyến và Kernel như RBF có thể mô tả cấu trúc đó.
- Khi có thể dành thời gian điều chỉnh C, Kernel và gamma bằng Cross-Validation.
6.3. Quy trình lựa chọn mô hình nên áp dụng
- Xác định mục tiêu bài toán và chi phí của các loại dự đoán sai.
- Kiểm tra chất lượng dữ liệu, nhãn, giá trị thiếu và phân phối các lớp.
- Chia dữ liệu thành tập huấn luyện và tập kiểm tra phù hợp với bối cảnh.
- Xây dựng Pipeline để tiền xử lý chỉ được fit trên dữ liệu huấn luyện.
- Thử KNN và SVM với các tham số hợp lý; sử dụng Cross-Validation để lựa chọn cấu hình.
- Đánh giá trên tập test bằng các chỉ số phù hợp, không chỉ dựa vào Accuracy.
- Cân nhắc thời gian dự đoán, khả năng giải thích và chi phí vận hành trước khi triển khai.
7. Những sai lầm thường gặp khi học KNN và SVM
7.1. Bỏ qua Feature Scaling
KNN có thể bị chi phối bởi Features có thang đo lớn. SVM cũng nhạy với thang đo vì quá trình tối ưu Margin và Kernel phụ thuộc vào cách biểu diễn dữ liệu. Vì vậy, Standardization thường là bước nên thử trong Pipeline của cả hai thuật toán.
7.2. Chọn tham số bằng tập test
Nếu thử nhiều giá trị K, C hoặc gamma rồi chọn cấu hình có điểm test cao nhất, kết quả đánh giá cuối cùng sẽ bị lạc quan quá mức. Hãy sử dụng Cross-Validation trên tập huấn luyện để chọn tham số và giữ tập test cho bước đánh giá cuối.
7.3. Chỉ dùng Accuracy để kết luận
Với dữ liệu mất cân bằng, một mô hình có thể đạt Accuracy cao nhưng bỏ sót nhiều trường hợp thuộc lớp thiểu số. Cần xem thêm Precision, Recall, F1-score, Confusion Matrix và các chỉ số khác tùy theo mục tiêu bài toán.
7.4. Cho rằng Kernel phi tuyến luôn tốt hơn Linear Kernel
Kernel phi tuyến có khả năng biểu diễn linh hoạt hơn, nhưng không đồng nghĩa với kết quả tốt hơn trên mọi dữ liệu. Nếu ranh giới gần tuyến tính, Linear SVM có thể phù hợp hơn, dễ triển khai hơn và tiết kiệm chi phí tính toán hơn.
8. Kết luận
KNN và SVM là hai thuật toán Classification đại diện cho hai cách tiếp cận khác nhau. KNN dựa vào cấu trúc lân cận của dữ liệu để dự đoán nhãn, trong khi SVM tối ưu một ranh giới phân lớp dựa trên Margin và các điều kiện tối ưu hóa.
KNN dễ hiểu và có cách dự đoán trực quan, nhưng chi phí tính toán có thể tăng khi dữ liệu lớn và khoảng cách trở nên kém hữu ích trong không gian nhiều chiều. SVM có nền tảng tối ưu hóa rõ ràng và hỗ trợ ranh giới phi tuyến thông qua Kernel, nhưng đòi hỏi lựa chọn tham số phù hợp và có thể tốn kém với tập dữ liệu lớn khi sử dụng Kernel.
Điều quan trọng không phải là ghi nhớ thuật toán nào tốt hơn, mà là hiểu giả định, cơ chế hoạt động và giới hạn của từng phương pháp. Khi kết hợp kiến thức này với quy trình tiền xử lý, Cross-Validation và đánh giá đúng cách, bạn sẽ có cơ sở vững chắc để lựa chọn mô hình Machine Learning cho bài toán thực tế.
9. Tài liệu tham khảo
- Cover, T. M., & Hart, P. E. (1967). Nearest Neighbor Pattern Classification. IEEE Transactions on Information Theory. https://doi.org/10.1109/TIT.1967.1053964
- Cortes, C., & Vapnik, V. (1995). Support-Vector Networks. Machine Learning. https://doi.org/10.1007/BF00994018
- scikit-learn. Nearest Neighbors. Tài liệu chính thức về KNN và các thuật toán láng giềng gần nhất. https://scikit-learn.org/stable/modules/neighbors.html
- scikit-learn. Support Vector Machines. Tài liệu về SVM, Kernel và các tham số. https://scikit-learn.org/stable/modules/svm.html
- scikit-learn. Importance of Feature Scaling. Giải thích ảnh hưởng của chuẩn hóa đặc trưng trong các thuật toán học máy. https://scikit-learn.org/stable/auto_examples/preprocessing/plot_scaling_importance.html
- scikit-learn. Pipeline and composite estimators. Tài liệu về xây dựng Pipeline để kết hợp tiền xử lý và mô hình. https://scikit-learn.org/stable/modules/compose.html
10. Học thêm Data, AI và Machine Learning tại MCNA
Nếu bạn muốn xây dựng nền tảng từ Python, phân tích dữ liệu đến ứng dụng AI trong công việc, có thể tham khảo các chương trình học sau:
Tác giả
Nguyễn Quốc Hải – Data Analyst tại MCNA Technology School
MCNA Technology School là đơn vị tiên phong đào tạo AI, Big Data, Business Intelligence tại Việt Nam. Chuyên sâu về Power BI, Python, SQL và Data Analytics — đối tác đào tạo của 300+ doanh nghiệp lớn như Viettel Global, Masan Group, Techcombank, VPBank, Daikin.
🌐 Website: mcna.vn
📘 Facebook: facebook.com/mcnatechnologyschool
▶️ YouTube: youtube.com/@mcna.technology.school
💼 LinkedIn: linkedin.com/company/mcna-vn
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B, TT2, Văn Quán, Hà Đông
📍 TP.HCM: The BIB Space, 50B Phan Tây Hồ, Cầu Kiệu

