Dữ liệu trong Machine Learning: Dataset, Feature, Label và Train/Test
Trong bài viết trước, chúng ta đã tìm hiểu Machine Learning là gì? và cách một mô hình học các quy luật từ dữ liệu để đưa ra dự đoán. Tuy nhiên, trước khi lựa chọn thuật toán hay xây dựng model, có một câu hỏi quan trọng hơn cần trả lời: dữ liệu trong Machine Learning thực sự là gì và cần được tổ chức như thế nào?
Dữ liệu trong Machine Learning không đơn giản chỉ là một bảng Excel hoặc một file CSV. Dataset, Feature, Label, Training Set, Validation Set và Test Set đóng những vai trò khác nhau trong quá trình xây dựng mô hình. Hiểu sai một trong những khái niệm này có thể dẫn đến việc đánh giá model sai, Data Leakage hoặc tạo ra một mô hình có kết quả tốt trên dữ liệu huấn luyện nhưng hoạt động kém trên dữ liệu mới.
Trong bài viết này, chúng ta sẽ đi từ cấu trúc cơ bản của một Dataset đến cách chia Train/Test, Validation, Cross-Validation và những nguyên tắc quan trọng để xây dựng một quy trình Machine Learning đáng tin cậy.
1. Dữ liệu trong Machine Learning là gì?
Ở mức đơn giản, dữ liệu trong Machine Learning là những quan sát được sử dụng để mô hình tìm kiếm các pattern và mối quan hệ có ích cho nhiệm vụ cần giải quyết.
Ví dụ, doanh nghiệp muốn xây dựng mô hình dự đoán khách hàng có rời bỏ dịch vụ hay không. Dataset có thể chứa thông tin như:
| Customer | Age | Tenure | Monthly Spend | Complaints | Churn |
|---|---|---|---|---|---|
| C001 | 25 | 12 | 500000 | 1 | 0 |
| C002 | 41 | 4 | 1200000 | 5 | 1 |
| C003 | 32 | 24 | 750000 | 0 | 0 |
Nhìn vào bảng trên, chúng ta có thể thấy dữ liệu gồm nhiều thành phần khác nhau. Một số cột mô tả khách hàng, trong khi một cột cho biết kết quả mà chúng ta muốn dự đoán.
Để hiểu Machine Learning sâu hơn, cần phân biệt rõ các khái niệm Dataset, Observation, Feature, Label và Target.
2. Dataset là gì?
Dataset là tập hợp dữ liệu được tổ chức để phục vụ một mục tiêu phân tích hoặc Machine Learning cụ thể.
Dataset có thể tồn tại dưới nhiều dạng:
- CSV.
- Excel.
- SQL Database.
- JSON.
- Hình ảnh.
- Audio.
- Video.
- Text.
- Sensor data.
Vì vậy, không nên đồng nhất Dataset với bảng dữ liệu. Một Dataset về Computer Vision có thể bao gồm hàng triệu hình ảnh, trong khi Dataset về Natural Language Processing có thể bao gồm các đoạn văn bản và nhãn tương ứng.
2.1. Dataset không chỉ là “dữ liệu càng nhiều càng tốt”
Một quan niệm phổ biến của người mới là Dataset càng lớn thì model càng tốt. Đây không phải là nguyên tắc tuyệt đối.
Chất lượng Dataset còn phụ thuộc vào:
- Dữ liệu có phù hợp với bài toán hay không.
- Dữ liệu có đại diện cho môi trường thực tế hay không.
- Có nhiều missing values hay không.
- Dữ liệu có chứa lỗi hay không.
- Label có chính xác hay không.
- Các nhóm quan trọng có được đại diện đầy đủ hay không.
- Cách thu thập dữ liệu có tạo ra bias hay không.
Do đó, khi đánh giá một Dataset, câu hỏi quan trọng không chỉ là “Có bao nhiêu dòng dữ liệu?” mà còn là “Dữ liệu này có thực sự đại diện cho bài toán mà model sẽ gặp trong thực tế không?”
3. Observation, Sample và Example là gì?
Trong Dataset dạng bảng, mỗi dòng thường đại diện cho một observation, sample hoặc example.
Ví dụ:
| Age | Income | Credit Score | Default |
|---|---|---|---|
| 25 | 15000000 | 720 | 0 |
| 42 | 30000000 | 680 | 1 |
| 35 | 25000000 | 750 | 0 |
Dòng đầu tiên có thể được xem là một observation về một khách hàng cụ thể.
Trong tài liệu Machine Learning, Google thường sử dụng khái niệm example để chỉ một đơn vị dữ liệu được dùng cho Machine Learning. Một labeled example có thể bao gồm một hoặc nhiều features cùng với label. :chatgpt-content-reference{index=”0″}
4. Feature là gì?
Feature là thông tin đầu vào được sử dụng để mô hình tạo ra prediction.
Trong bài toán dự đoán khách hàng có rời bỏ dịch vụ hay không, các feature có thể là:
- Age.
- Tenure.
- Monthly Spend.
- Number of Transactions.
- Number of Complaints.
- Contract Type.
Có thể hình dung:
Feature 1 ─┐
Feature 2 ─┤
Feature 3 ─┼──→ Machine Learning Model ──→ Prediction
Feature 4 ─┤
Feature 5 ─┘
Feature không nhất thiết phải là một biến nguyên thủy. Một feature có thể được tạo ra từ nhiều biến khác thông qua quá trình Feature Engineering.
4.1. Feature có phải luôn là một cột trong Dataset?
Không nhất thiết.
Trong Dataset dạng bảng, feature thường được biểu diễn dưới dạng một cột. Nhưng trong Machine Learning, một feature về bản chất là một thông tin đầu vào được mô hình sử dụng.
Ví dụ với hình ảnh, một bức ảnh không đơn giản là một cột trong bảng dữ liệu. Pixel hoặc representation được trích xuất từ hình ảnh có thể trở thành đầu vào cho model.
Với văn bản, các từ, token hoặc embedding có thể đóng vai trò là biểu diễn đầu vào của mô hình.
4.2. Feature tốt là gì?
Một feature hữu ích không nhất thiết phải có tương quan cao với target theo cách đơn giản. Điều quan trọng là feature chứa thông tin có khả năng giúp model phân biệt hoặc dự đoán target.
Ví dụ trong bài toán dự đoán churn:
- Thời gian khách hàng sử dụng dịch vụ có thể chứa thông tin về khả năng rời bỏ.
- Số lần khiếu nại có thể phản ánh mức độ không hài lòng.
- Tần suất sử dụng dịch vụ có thể phản ánh mức độ gắn kết.
Tuy nhiên, cần kiểm tra thời điểm feature được tạo ra. Một feature chỉ xuất hiện sau khi khách hàng rời bỏ sẽ không thể được sử dụng hợp lệ để dự đoán churn trước đó.
5. Label là gì?
Label là kết quả hoặc đáp án mà mô hình được cung cấp trong quá trình học đối với bài toán Supervised Learning.
Ví dụ:
| Features | Label |
|---|---|
| Age, Income, Transactions | Churn = 0 |
| Age, Income, Transactions | Churn = 1 |
Model quan sát các feature cùng với label tương ứng và cố gắng học mối quan hệ giữa chúng.
Features + Label
↓
Training
↓
Learned Model
↓
New Features
↓
Prediction
Google định nghĩa một labeled example là một example chứa một hoặc nhiều features cùng với label; ngược lại, unlabeled example chỉ có features và không có label. :chatgpt-content-reference{index=”1″}
6. Target có giống Label không?
Trong nhiều tài liệu, target và label thường được sử dụng gần như đồng nghĩa, nhưng ngữ cảnh sử dụng có thể khác nhau.
Target thường được dùng để chỉ biến mà mô hình cần dự đoán.
Label thường nhấn mạnh giá trị đáp án được gán cho một observation trong supervised learning.
| Khái niệm | Ý nghĩa | Ví dụ |
|---|---|---|
| Feature | Thông tin đầu vào | Age, Income |
| Target | Biến cần dự đoán | House Price |
| Label | Đáp án gắn với observation | Spam / Not Spam |
Trong bài toán Regression, target có thể là một giá trị liên tục như giá nhà. Trong Classification, label có thể là một class như Spam hoặc Not Spam.
7. X và y trong Machine Learning là gì?
Khi làm việc với Python và các thư viện Machine Learning, bạn sẽ thường xuyên gặp hai ký hiệu X và y.
Thông thường:
- X: tập các input features.
- y: target hoặc label.
Ví dụ:
X = [
[25, 12, 500000],
[41, 4, 1200000],
[32, 24, 750000]
]
y = [0, 1, 0]
Có thể hiểu:
X → Input
y → Ground Truth
X → Model → ŷ
ŷ được so sánh với y
Trong đó ŷ là prediction của model, còn y là giá trị thực tế hoặc ground truth được sử dụng để đánh giá.
8. Structured Data và Unstructured Data
Không phải tất cả Dataset đều có dạng bảng.
8.1. Structured Data
Structured Data là dữ liệu có cấu trúc rõ ràng, thường được tổ chức thành hàng và cột.
Ví dụ:
- Thông tin khách hàng.
- Giao dịch ngân hàng.
- Đơn hàng thương mại điện tử.
- Dữ liệu doanh thu.
Đây là dạng dữ liệu quen thuộc với Data Analyst và thường được lưu trữ trong SQL Database, CSV hoặc Excel.
8.2. Unstructured Data
Unstructured Data không có cấu trúc bảng cố định theo cách truyền thống.
Ví dụ:
- Hình ảnh.
- Video.
- Audio.
- Email.
- Tài liệu văn bản.
Machine Learning có thể biến những dữ liệu này thành representation có thể được đưa vào model.
8.3. Semi-structured Data
Semi-structured Data có một số cấu trúc nhưng không nhất thiết tuân theo schema bảng cố định.
JSON và XML là những ví dụ phổ biến.
9. Numerical Feature và Categorical Feature
Đây là một cách phân loại feature rất quan trọng trong Data Preprocessing.
9.1. Numerical Feature
Numerical Feature biểu diễn thông tin dưới dạng số.
Ví dụ:
- Age.
- Income.
- Account Balance.
- Number of Transactions.
Numerical Feature có thể tiếp tục được phân thành các loại như discrete và continuous tùy vào bản chất biến.
9.2. Categorical Feature
Categorical Feature biểu diễn các nhóm hoặc category.
Ví dụ:
- Gender.
- City.
- Membership Type.
- Payment Method.
Machine Learning model thường cần các phương pháp phù hợp để chuyển categorical data thành dạng có thể xử lý, chẳng hạn One-Hot Encoding hoặc các phương pháp encoding khác.
10. Train Dataset là gì?
Training Dataset là phần dữ liệu được sử dụng để model học các parameter.
Ví dụ, với bài toán dự đoán giá nhà, model có thể quan sát:
| Area | Bedrooms | Location | Price |
|---|---|---|---|
| 80 | 2 | A | … |
| 100 | 3 | B | … |
| 120 | 4 | A | … |
Model sử dụng những observation này để học mối quan hệ giữa features và Price.
Điểm quan trọng là training data không phải là dữ liệu để chứng minh model hoạt động tốt trên thế giới thực. Nó chủ yếu là dữ liệu để model học.
11. Test Dataset là gì?
Test Dataset là phần dữ liệu được giữ lại để đánh giá model trên những observation mà model không sử dụng trực tiếp trong quá trình training.
Ý tưởng cơ bản:
Training Data
↓
Learn
↓
Model
↓
Test Data
↓
Evaluate
Nếu model đạt kết quả tốt trên training data nhưng kém trên test data, đây có thể là dấu hiệu model không generalize tốt.
Scikit-learn cũng nhấn mạnh rằng việc đánh giá model trên chính dữ liệu được dùng để training có thể dẫn đến overfitting và không phản ánh khả năng dự đoán trên dữ liệu chưa từng thấy. :chatgpt-content-reference{index=”2″}
12. Validation Dataset là gì?
Nếu chỉ có Training Set và Test Set, một vấn đề có thể xảy ra là chúng ta sử dụng Test Set quá nhiều lần để lựa chọn model.
Validation Set được sử dụng để hỗ trợ quá trình phát triển model.
Dataset
│
├── Training Set
│ ↓
│ Train
│
├── Validation Set
│ ↓
│ Select / Tune
│
└── Test Set
↓
Final Evaluation
Training Set dùng để học parameter.
Validation Set hỗ trợ lựa chọn model và hyperparameter.
Test Set được giữ lại để đánh giá cuối cùng.
13. Train/Test Split là gì?
Train/Test Split là quá trình chia Dataset thành ít nhất hai phần: Training Set và Test Set.
Ví dụ:
Original Dataset
│
├───────────────┐
↓ ↓
Training Set Test Set
│ │
↓ ↓
Train Model Evaluate
Trong Python, scikit-learn cung cấp hàm train_test_split() để chia các array hoặc matrix thành tập train và test. :chatgpt-content-reference{index=”3″}
13.1. Ví dụ với Python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)
Ở đây:
X_train: features của training set.X_test: features của test set.y_train: labels của training set.y_test: labels của test set.test_size=0.2: dành một phần dữ liệu cho test theo tỷ lệ được chỉ định.random_state=42: giúp việc chia dữ liệu có thể tái lập trong ví dụ này.
Không nên coi một tỷ lệ chia cố định như 80/20 hay 70/30 là quy luật bắt buộc. Tỷ lệ phù hợp phụ thuộc vào kích thước Dataset, mục tiêu đánh giá và đặc điểm dữ liệu.
14. Tại sao không train model trên toàn bộ Dataset ngay từ đầu?
Đây là một câu hỏi quan trọng đối với người mới.
Nếu dùng toàn bộ dữ liệu để training, chúng ta sẽ không còn một tập dữ liệu độc lập để kiểm tra khả năng của model trên những observation chưa từng được dùng để học.
Ví dụ:
Dataset
↓
Train trên 100% dữ liệu
↓
Model
↓
Đánh giá trên chính 100% dữ liệu
Kết quả có thể rất tốt nhưng không trả lời được câu hỏi quan trọng:
“Model có hoạt động tốt khi gặp dữ liệu mới hay không?”
Đây chính là lý do train/test split đóng vai trò quan trọng trong Machine Learning.
15. Generalization: mục tiêu thật sự của Train/Test
Train/Test không chỉ nhằm chia dữ liệu thành hai file khác nhau. Mục tiêu sâu hơn là kiểm tra generalization.
Generalization là khả năng model học được pattern có tính tổng quát thay vì chỉ ghi nhớ training data.
Training Data
↓
Learn Pattern
↓
Model
↓
Unseen Data
↓
Prediction
Nếu model học được pattern có ý nghĩa, nó có khả năng hoạt động tốt hơn trên dữ liệu mới.
Nếu model chỉ ghi nhớ training observations, performance trên dữ liệu mới có thể giảm mạnh.
16. Overfitting liên quan gì đến Dataset?
Overfitting không chỉ là vấn đề của thuật toán. Nó còn liên quan đến cách Dataset được xây dựng và cách model được đánh giá.
Một tình huống điển hình:
Training Performance
↑
Rất cao
Test Performance
↓
Thấp
→ Model có khả năng Overfitting
Model đã học quá sát training data nhưng không generalize tốt.
Một số nguyên nhân có thể liên quan đến:
- Model quá phức tạp.
- Training data quá ít.
- Training data chứa noise.
- Feature không phù hợp.
- Quá trình tuning không được kiểm soát.
- Data Leakage.
17. Data Leakage là gì?
Data Leakage xảy ra khi thông tin mà model không nên biết tại thời điểm prediction lại vô tình xuất hiện trong quá trình training hoặc preprocessing.
Đây là một trong những lỗi nguy hiểm nhất trong Machine Learning vì nó có thể tạo ra performance rất cao nhưng không phản ánh khả năng thực tế.
17.1. Ví dụ Data Leakage đơn giản
Giả sử muốn dự đoán khách hàng có rời bỏ dịch vụ vào cuối tháng hay không.
Dataset có:
- Age.
- Monthly Spend.
- Number of Complaints.
- Cancellation Date.
- Churn.
Nếu Cancellation Date chỉ tồn tại sau khi khách hàng đã quyết định rời bỏ, sử dụng feature này để dự đoán churn trước đó sẽ làm model biết trước tương lai.
Model có thể đạt kết quả rất tốt nhưng hệ thống thực tế không có thông tin đó tại thời điểm prediction.
17.2. Leakage trong preprocessing
Data Leakage không chỉ xảy ra với feature.
Ví dụ, chúng ta muốn Standardize dữ liệu.
Cách sai có thể là:
Toàn bộ Dataset
↓
Fit StandardScaler
↓
Chia Train/Test
Trong trường hợp này, thông tin thống kê của test data đã được sử dụng khi xây dựng transformation.
Cách an toàn hơn là:
Dataset
↓
Train/Test Split
│
├── Train
│ ↓
│ Fit Scaler
│ ↓
│ Transform Train
│
└── Test
↓
Transform bằng Scaler
đã fit từ Train
Scikit-learn cũng khuyến nghị các bước preprocessing như standardization và feature selection phải được học từ training data rồi áp dụng cho dữ liệu held-out để tránh leakage. :chatgpt-content-reference{index=”4″}
18. Data Preprocessing là gì?
Data Preprocessing là quá trình biến đổi dữ liệu ban đầu thành dạng phù hợp hơn cho Machine Learning.
Các công việc thường gặp:
- Xử lý missing values.
- Phát hiện và xử lý dữ liệu bất thường.
- Encoding categorical variables.
- Scaling numerical features.
- Chuẩn hóa định dạng.
- Xử lý duplicate.
- Feature selection.
Điều quan trọng là preprocessing không phải một bước “làm sạch cho đẹp”. Mỗi transformation cần có lý do dựa trên đặc điểm của dữ liệu và thuật toán sử dụng.
19. Missing Value ảnh hưởng đến Machine Learning như thế nào?
Missing Value là trường hợp một observation không có giá trị ở một hoặc nhiều feature.
| Age | Income | Credit Score |
|---|---|---|
| 25 | 15000000 | 720 |
| 42 | 680 | |
| 35 | 25000000 |
Không phải mọi model đều xử lý missing values theo cùng một cách. Tùy bài toán, có thể:
- Loại bỏ observation.
- Loại bỏ feature.
- Imputation bằng mean hoặc median.
- Imputation theo nhóm.
- Sử dụng mô hình hoặc phương pháp chuyên biệt.
Quan trọng nhất là phải hiểu tại sao dữ liệu bị thiếu. Missing không phải lúc nào cũng là ngẫu nhiên và bản thân việc thiếu dữ liệu đôi khi có thể chứa thông tin.
20. Outlier là gì?
Outlier là observation có giá trị khác biệt đáng kể so với phần lớn dữ liệu.
Ví dụ một Dataset về thu nhập:
15 triệu
18 triệu
20 triệu
22 triệu
21 triệu
500 triệu
500 triệu có thể là một outlier xét theo phân phối của Dataset.
Tuy nhiên, không nên tự động xóa mọi outlier.
Một outlier có thể là:
- Lỗi nhập dữ liệu.
- Giá trị đo sai.
- Một trường hợp đặc biệt nhưng hợp lệ.
- Một tín hiệu quan trọng của bài toán.
Ví dụ trong fraud detection, một giao dịch cực lớn có thể chính là observation quan trọng nhất.
21. Class Imbalance là gì?
Trong Classification, Class Imbalance xảy ra khi các class có số lượng observation chênh lệch đáng kể.
Ví dụ:
Normal Transactions → Phần lớn
Fraud Transactions → Rất ít
Nếu model luôn dự đoán class phổ biến, Accuracy có thể trông rất tốt nhưng model không phát hiện được class hiếm.
Do đó, khi Dataset mất cân bằng cần xem xét:
- Confusion Matrix.
- Precision.
- Recall.
- F1-score.
- ROC-AUC hoặc các metric phù hợp khác.
- Class weighting.
- Resampling.
Cách xử lý phụ thuộc vào mục tiêu của bài toán và chi phí của False Positive và False Negative.
22. Random Split có phải lúc nào cũng đúng?
Không.
Đây là một trong những điểm người mới dễ bỏ qua.
Random train/test split phù hợp với nhiều Dataset, nhưng không phải mọi Dataset đều có thể được chia ngẫu nhiên.
22.1. Dữ liệu theo thời gian
Ví dụ dự đoán doanh thu tháng tiếp theo.
Nếu dữ liệu từ năm 2025 đến 2026, việc lấy ngẫu nhiên các tháng để tạo train/test có thể khiến model được training trên dữ liệu “tương lai” và test trên dữ liệu “quá khứ”.
Cách tiếp cận hợp lý hơn có thể là:
Quá khứ --------------------→ Tương lai
Training Data
|------------------|
Validation
|------|
Test
|------|
Trong các bài toán time series, cách chia dữ liệu cần tôn trọng thứ tự thời gian.
22.2. Dữ liệu có Group
Giả sử Dataset có nhiều giao dịch của cùng một khách hàng.
Nếu một khách hàng xuất hiện trong cả Training Set và Test Set, model có thể học được đặc điểm riêng của khách hàng đó và làm kết quả đánh giá trở nên quá lạc quan.
Trong trường hợp này có thể cần Group-based splitting để các observation của cùng một group không bị phân tán tùy tiện giữa train và test.
Scikit-learn cung cấp các phương pháp như GroupKFold cho những trường hợp dữ liệu có cấu trúc group. :chatgpt-content-reference{index=”5″}
23. Stratified Split là gì?
Trong Classification, đặc biệt khi class không cân bằng, chúng ta có thể sử dụng Stratified Split.
Ý tưởng là duy trì tỷ lệ các class tương đối giống nhau giữa các tập dữ liệu.
Original Dataset
↓
Class A = tỷ lệ X
Class B = tỷ lệ Y
↓
Stratified Split
↓
Train: giữ tương đối X / Y
Test: giữ tương đối X / Y
Scikit-learn cung cấp stratify trong train_test_split() và các phương pháp như StratifiedKFold cho các trường hợp Classification phù hợp. :chatgpt-content-reference{index=”6″}
24. Cross-Validation là gì?
Cross-Validation là phương pháp đánh giá model bằng cách chia dữ liệu thành nhiều phần và thực hiện quá trình training/validation nhiều lần.
Ví dụ với 5-Fold Cross-Validation:
Dataset
│
├── Fold 1 → Validation
├── Fold 2 → Training
├── Fold 3 → Training
├── Fold 4 → Training
└── Fold 5 → Training
Sau đó thay đổi:
Fold 2 → Validation
Các Fold khác → Training
...
Lặp lại cho đến khi mỗi Fold
được sử dụng làm Validation.
Kết quả cuối cùng thường được tổng hợp từ các lần đánh giá.
Scikit-learn mô tả K-Fold là cách chia các samples thành K groups hoặc folds, trong đó mỗi fold lần lượt được sử dụng làm phần kiểm tra trong khi các fold còn lại được dùng để training. :chatgpt-content-reference{index=”7″}
24.1. Vì sao cần Cross-Validation?
Nếu Dataset tương đối nhỏ, một lần chia Train/Test có thể phụ thuộc khá nhiều vào cách chia.
Cross-Validation giúp chúng ta quan sát model qua nhiều cách phân chia dữ liệu thay vì chỉ dựa vào một split.
Tuy nhiên, Cross-Validation không có nghĩa là Test Set không còn cần thiết. Một quy trình có thể sử dụng Cross-Validation trên training data để lựa chọn model và giữ một Test Set độc lập cho đánh giá cuối cùng.
25. Pipeline trong Machine Learning
Khi dự án có nhiều bước preprocessing, việc quản lý thứ tự xử lý rất quan trọng.
Ví dụ:
Raw Data
↓
Imputation
↓
Scaling
↓
Feature Transformation
↓
Model
↓
Prediction
Scikit-learn cung cấp Pipeline để kết hợp preprocessing và estimator thành một workflow thống nhất. Điều này đặc biệt hữu ích trong Cross-Validation vì giúp các bước preprocessing được fit đúng trên phần training của từng fold, hạn chế Data Leakage. :chatgpt-content-reference{index=”8″}
25.1. Ví dụ Pipeline
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
model = make_pipeline(
StandardScaler(),
LogisticRegression()
)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
Điểm quan trọng ở đây không phải cú pháp Python mà là tư duy: preprocessing và model cần được xem như một phần của cùng một quy trình Machine Learning.
26. Feature Engineering là gì?
Feature Engineering là quá trình tạo, biến đổi hoặc lựa chọn feature nhằm cung cấp cho model thông tin phù hợp hơn.
Ví dụ Dataset có:
Order Date
2026-10-08
Có thể tạo các feature:
- Year.
- Month.
- Day.
- Day of Week.
- Is Weekend.
Hoặc từ:
Total Revenue
Number of Orders
có thể xây dựng:
Average Order Value
= Total Revenue / Number of Orders
Feature Engineering cần dựa trên hiểu biết về domain. Một feature chỉ hữu ích nếu nó mang thông tin phù hợp và có thể tồn tại tại thời điểm model thực hiện prediction.
27. Feature Selection là gì?
Feature Selection là quá trình lựa chọn những feature phù hợp để đưa vào model.
Không phải càng nhiều feature thì model càng tốt.
Một Dataset có thể chứa:
- Feature hữu ích.
- Feature dư thừa.
- Feature nhiễu.
- Feature không liên quan.
- Feature gây leakage.
Feature Selection có thể giúp model đơn giản hơn, giảm noise và trong một số trường hợp cải thiện khả năng generalization.
28. Correlation có đồng nghĩa với Feature quan trọng không?
Không.
Correlation là một công cụ thống kê hữu ích nhưng không phải định nghĩa đầy đủ về feature importance.
Một feature có correlation thấp với target vẫn có thể hữu ích nếu:
- Mối quan hệ với target là phi tuyến.
- Feature tương tác với feature khác.
- Feature giúp phân biệt một nhóm observation cụ thể.
Ngược lại, một feature có correlation cao cũng không đồng nghĩa với việc nó nên được đưa vào model. Cần xem xét nguyên nhân, thời điểm thu thập và khả năng sử dụng feature trong thực tế.
29. Data Quality ảnh hưởng đến Model như thế nào?
Có thể hình dung quá trình Machine Learning như sau:
Business Problem
↓
Data
↓
Data Quality
↓
Features
↓
Model
↓
Prediction
↓
Business Decision
Nếu dữ liệu đầu vào sai, model có thể học sai pattern.
Một model phức tạp không thể tự động biến dữ liệu kém chất lượng thành thông tin chính xác trong mọi trường hợp.
Do đó, Data Understanding và Data Quality cần được xem là một phần cốt lõi của Machine Learning chứ không phải công việc phụ trước khi “thực sự bắt đầu ML”.
30. Một Dataset tốt cần những đặc điểm gì?
Không có một tiêu chuẩn duy nhất áp dụng cho mọi bài toán, nhưng một Dataset tốt thường cần xem xét các yếu tố sau:
| Yếu tố | Câu hỏi cần đặt ra |
|---|---|
| Relevance | Dữ liệu có liên quan trực tiếp đến bài toán không? |
| Representativeness | Dữ liệu có đại diện cho môi trường thực tế không? |
| Quality | Dữ liệu có lỗi, thiếu hoặc bất thường không? |
| Label Quality | Label có đáng tin cậy không? |
| Coverage | Các nhóm quan trọng có được đại diện không? |
| Timeliness | Dữ liệu có phù hợp với thời điểm triển khai không? |
| Leakage | Có thông tin tương lai hoặc thông tin không hợp lệ không? |
31. Một ví dụ hoàn chỉnh từ Dataset đến Model
Giả sử một ngân hàng muốn dự đoán khách hàng có khả năng rời bỏ dịch vụ.
Bước 1: Xác định Dataset
Dataset chứa thông tin lịch sử của khách hàng.
Customer ID
Age
Income
Tenure
Monthly Spend
Transactions
Complaints
Churn
Bước 2: Xác định Feature và Label
Features:
Age
Income
Tenure
Monthly Spend
Transactions
Complaints
Label:
Churn
Bước 3: Kiểm tra dữ liệu
Kiểm tra:
- Missing values.
- Duplicate.
- Outliers.
- Class imbalance.
- Data types.
- Feature leakage.
Bước 4: Chia dữ liệu
Dataset
│
├── Training
│
├── Validation
│
└── Test
Bước 5: Preprocessing
Categorical variables được encoding nếu cần. Numerical variables có thể được scaling tùy theo thuật toán.
Bước 6: Training
Thử một số model phù hợp như Logistic Regression, Decision Tree hoặc Random Forest.
Bước 7: Evaluation
Không chỉ xem Accuracy. Nếu mục tiêu là phát hiện khách hàng có nguy cơ churn, có thể cần xem Precision, Recall, F1-score và các metric phù hợp với business objective.
Bước 8: Test cuối cùng
Sau khi hoàn thành quá trình lựa chọn model, Test Set được sử dụng để đánh giá cuối cùng trên dữ liệu chưa được sử dụng để đưa ra quyết định trong quá trình phát triển.
32. Những lỗi phổ biến khi xử lý dữ liệu Machine Learning
32.1. Chia dữ liệu quá muộn
Một lỗi phổ biến là preprocessing toàn bộ Dataset trước rồi mới chia Train/Test.
Ví dụ:
Toàn bộ Dataset
↓
Scaling
↓
Feature Selection
↓
Train/Test Split
Cách này có thể khiến thông tin từ Test Set ảnh hưởng đến quá trình xử lý.
Tư duy an toàn hơn là:
Dataset
↓
Train/Test Split
↓
Fit preprocessing trên Train
↓
Transform Train và Test
32.2. Đưa ID vào model một cách máy móc
Customer ID hoặc Order ID thường chỉ là định danh. Không nên mặc định rằng mọi cột đều là feature có ý nghĩa.
Đôi khi ID có thể vô tình chứa thông tin hoặc thứ tự liên quan đến cách Dataset được tạo. Vì vậy cần hiểu ý nghĩa của từng cột trước khi đưa vào model.
32.3. Sử dụng dữ liệu tương lai
Trong bài toán dự báo, đây là lỗi đặc biệt nghiêm trọng.
Nếu prediction được thực hiện tại thời điểm T, model chỉ nên sử dụng thông tin có thể biết tại thời điểm T.
Quá khứ ─────── T ─────── Tương lai
↑
Prediction
Features phải tồn tại
trước hoặc tại thời điểm T.
32.4. Chỉ quan tâm đến số lượng dữ liệu
Dataset lớn nhưng label sai hoặc không đại diện vẫn có thể tạo ra model không đáng tin cậy.
33. Data Leakage và Generalization: Hai khái niệm cần nhớ
Nếu chỉ nhớ hai ý quan trọng sau bài viết này, hãy nhớ:
Thứ nhất: Model cần generalize.
Model phải hoạt động trên dữ liệu mới chứ không chỉ trên dữ liệu đã học.
Thứ hai: Test data phải thực sự chưa được sử dụng để đưa ra quyết định.
Nếu chúng ta liên tục xem Test Set rồi thay đổi feature, preprocessing hoặc hyperparameter để cải thiện kết quả, Test Set dần trở thành một phần của quá trình model selection.
Scikit-learn cảnh báo rằng việc điều chỉnh model nhiều lần dựa trên Test Set có thể làm thông tin từ Test Set “leak” vào quá trình xây dựng model và khiến metric không còn phản ánh khách quan khả năng generalization. :chatgpt-content-reference{index=”9″}
34. Dataset, Feature, Label và Train/Test liên kết với nhau như thế nào?
Có thể tổng hợp toàn bộ bài viết bằng sơ đồ sau:
DATASET
│
┌────────┴────────┐
↓ ↓
Features Label
│ │
└────────┬────────┘
↓
Labeled Data
│
Train/Test Split
│
┌────────────┴────────────┐
↓ ↓
Training Set Test Set
↓ ↓
Model Train Evaluation
│
↓
Validation /
Cross-Validation
│
↓
Model Selection
│
↓
Final Evaluation
Đây là mối quan hệ nền tảng mà người mới học Machine Learning cần nắm chắc trước khi đi sâu vào các thuật toán.
35. Kết luận
Dữ liệu trong Machine Learning là nền tảng quyết định model có thể học được gì và đánh giá được đến đâu. Dataset cung cấp các observation; Feature mô tả thông tin đầu vào; Label hoặc Target đại diện cho kết quả cần dự đoán trong Supervised Learning.
Training Set được sử dụng để model học, Validation Set hỗ trợ lựa chọn và điều chỉnh model, còn Test Set được giữ lại để đánh giá khả năng generalization trên dữ liệu chưa được sử dụng trong quá trình phát triển.
Tuy nhiên, chia dữ liệu đúng không chỉ đơn giản là chọn tỷ lệ 80/20. Với dữ liệu mất cân bằng có thể cần Stratified Split; với dữ liệu theo thời gian cần tôn trọng temporal order; với dữ liệu có group cần cân nhắc Group-based Split. Đồng thời, preprocessing phải được thực hiện đúng cách để tránh Data Leakage.
Hiểu rõ Dataset, Feature, Label và Train/Test sẽ giúp người học chuyển từ việc “chạy một thuật toán Machine Learning” sang tư duy đúng hơn: xây dựng một quy trình Machine Learning có khả năng đánh giá và generalize đáng tin cậy.
36. Tài liệu tham khảo
- Google for Developers – Machine Learning Glossary: Fundamentals
- Scikit-learn – Cross-validation: evaluating estimator performance
- Scikit-learn – train_test_split
- Scikit-learn – Preprocessing data
- Scikit-learn – Getting Started
37. Học Data, AI và Python cùng MCNA
Nếu bạn đang xây dựng nền tảng từ Data Analysis đến AI và Machine Learning, việc kết hợp kiến thức nền tảng với thực hành Python, dữ liệu và các bài toán thực tế sẽ giúp quá trình học hiệu quả hơn.
Combo 5 khóa AI & Power BI
Khóa học phù hợp với người muốn xây dựng nền tảng về AI, Data và Business Intelligence.
Xem Combo 5 khóa AI & Power BI
Combo Python
Phù hợp với người muốn củng cố Python để xử lý dữ liệu và chuẩn bị nền tảng cho Data Science và Machine Learning.
Xem Combo Python
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

