🎯 Mục tiêu bài học
Sau bài này, bạn sẽ:
✅ Hiểu chính xác Machine Learning là gì và phân biệt với AI, Deep Learning
✅ Nắm vững sự khác biệt giữa ML và lập trình truyền thống (có công thức)
✅ Phân biệt 3 loại ML: Supervised, Unsupervised, Reinforcement Learning
✅ Thực hành case study dự đoán giá nhà từ đầu đến cuối (step-by-step)
✅ Hiểu rõ workflow 9 bước chuẩn của một ML project
Thời gian: 45-60 phút | Độ khó: Beginner
📖 Bảng Thuật Ngữ Quan Trọng
| Thuật ngữ | Tiếng Việt | Giải thích đơn giản |
|---|---|---|
| Machine Learning | Học máy | Máy tính học từ dữ liệu mà không lập trình tường minh |
| Artificial Intelligence | Trí tuệ nhân tạo | Phạm vi rộng nhất, bao gồm ML |
| Deep Learning | Học sâu | ML sử dụng mạng neural nhiều lớp |
| Feature | Đặc trưng | Thuộc tính/biến số đầu vào |
| Label | Nhãn | Kết quả/đầu ra cần dự đoán |
| Training | Huấn luyện | Quá trình học từ dữ liệu |
| Model | Mô hình | Hàm đã học để dự đoán |
| Overfitting | Quá khớp | Model học quá chi tiết, kém generalize |
Checkpoint
Bạn đã đọc qua bảng thuật ngữ? Hãy ghi nhớ các khái niệm này!
🧠 Machine Learning là gì?
1.1 Phân biệt AI - Machine Learning - Deep Learning
| Khái niệm | Định nghĩa | Ví dụ |
|---|---|---|
| AI (Trí tuệ nhân tạo) | Máy tính mô phỏng trí thông minh con người | Chatbot, game AI, xe tự lái |
| ML (Học máy) | Máy tính học từ dữ liệu mà không lập trình tường minh | Dự đoán giá nhà, spam filter |
| DL (Học sâu) | ML dùng mạng neural nhiều lớp (deep networks) | Nhận diện khuôn mặt, ChatGPT |
1.2 Định nghĩa chính xác Machine Learning
Machine Learning (Học máy) là một nhánh của AI cho phép máy tính tự động cải thiện hiệu suất trên một tác vụ thông qua kinh nghiệm (dữ liệu), mà không cần lập trình tường minh từng trường hợp cụ thể.
"A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E."
— Tom Mitchell
1.3 So sánh với lập trình truyền thống
Công thức:
Lập trình truyền thống:
Machine Learning:
| Khía cạnh | Lập trình truyền thống | Machine Learning |
|---|---|---|
| Input | Dữ liệu + Quy tắc cố định (code) | Dữ liệu + Kết quả mong muốn (labels) |
| Output | Kết quả | Quy tắc/Model () |
| Update | Thủ công sửa code | Tự động re-train với data mới |
| Độ phức tạp | Giới hạn bởi if-else rules | Học được pattern phi tuyến phức tạp |
| Ví dụ | if "free" in email: spam | Model học từ 10,000 emails |
🏠 Case Study: Dự đoán Giá Nhà (Step-by-Step)
Bài toán thực tế: Bạn là Data Scientist tại công ty bất động sản. Nhiệm vụ: xây dựng hệ thống dự đoán giá nhà tự động.
Bước 1: Hiểu vấn đề
Input (Features - X):
- Diện tích (m²)
- Số phòng ngủ
- Tuổi nhà
- Khoảng cách đến trung tâm (km)
Output (Label - y):
- Giá nhà (triệu VND)
Mục tiêu: Tìm hàm sao cho:
Bước 2: Thu thập dữ liệu
| ID | Diện tích (m²) | Số phòng | Tuổi (năm) | Khoảng cách (km) | Giá (triệu) |
|---|---|---|---|---|---|
| 1 | 50 | 2 | 5 | 10 | 500 |
| 2 | 60 | 2 | 3 | 8 | 600 |
| 3 | 70 | 3 | 10 | 15 | 550 |
| 4 | 80 | 3 | 2 | 5 | 750 |
| 5 | 100 | 4 | 1 | 3 | 900 |
| ... | ... | ... | ... | ... | ... |
→ Tổng: 1000 ngôi nhà (dữ liệu training)
Checkpoint
Bạn đã hiểu sự khác biệt giữa ML và lập trình truyền thống chưa?
📊 Các loại Machine Learning
Machine Learning Types
2.1 Supervised Learning (Học có giám sát)
💡 Dữ liệu có nhãn (label) - biết trước kết quả đúng.
Công thức tổng quát:
Trong đó:
- : Features (đặc trưng đầu vào)
- : Labels (nhãn/kết quả)
- : Hàm mà model cần học
- : Nhiễu
Ví dụ:
- Regression: Dự đoán giá nhà (giá là số liên tục)
- Classification: Phân loại email spam/không spam
2.2 Unsupervised Learning (Học không giám sát)
Dữ liệu không có nhãn - model tự tìm pattern/cấu trúc.
Ví dụ:
- Clustering: Phân nhóm khách hàng
- Dimensionality Reduction: Giảm số features (PCA, t-SNE)
2.3 Reinforcement Learning (Học tăng cường)
Model học thông qua thử và sai, nhận reward/penalty.
Ví dụ: AlphaGo, xe tự lái, game AI
2.4 Bảng tóm tắt các loại ML
| Loại | Input | Output | Ví dụ |
|---|---|---|---|
| Supervised - Regression | X, y (liên tục) | Model dự đoán giá trị | Giá nhà, doanh thu |
| Supervised - Classification | X, y (rời rạc) | Model phân loại | Spam detection, bệnh |
| Unsupervised - Clustering | X (không nhãn) | Nhóm tương tự | Customer segmentation |
| Unsupervised - Dim. Reduction | X (nhiều chiều) | X (ít chiều) | PCA, t-SNE |
| Reinforcement | State, Action | Policy tối ưu | Game AI, Robotics |
Checkpoint
Bạn có thể phân biệt được Supervised, Unsupervised và Reinforcement Learning chưa?
🔄 Workflow chuẩn của ML Project
ML Pipeline - End to End
3.1 ML Pipeline Chi tiết
| Bước | Tên | Mô tả | Công cụ |
|---|---|---|---|
| 1 | Data Collection | Thu thập từ DB, API, Files | SQL, API, Pandas |
| 2 | EDA | Khám phá, visualize | Pandas, Matplotlib, Seaborn |
| 3 | Preprocessing | Missing values, Outliers, Scaling | Pandas, Scikit-learn |
| 4 | Feature Engineering | Tạo features mới | Domain knowledge |
| 5 | Train/Test Split | Chia data 70-30 hoặc 80-20 | train_test_split |
| 6 | Model Selection | Chọn model phù hợp | Scikit-learn |
| 7 | Training | Fit model với training data | model.fit() |
| 8 | Evaluation | Đánh giá trên test data | Metrics (Accuracy, RMSE) |
| 9 | Tuning | GridSearchCV, tuning | Hyperparameter tuning |
| 10 | Deployment | Đưa vào production | Flask, FastAPI, Docker |
📐 Các khái niệm quan trọng
4.1 Features và Labels
- m: Số samples (observations)
- n: Số features
4.2 Training vs Testing
| Training Set | Test Set | |
|---|---|---|
| Mục đích | Huấn luyện model | Đánh giá model |
| Tỷ lệ | 70-80% | 20-30% |
| Model thấy | Có (khi train) | Không (khi train) |
1from sklearn.model_selection import train_test_split23# Chia data4X_train, X_test, y_train, y_test = train_test_split(5 X, y, test_size=0.2, random_state=426)4.3 Overfitting vs Underfitting
| Trạng thái | Train Error | Test Error | Vấn đề |
|---|---|---|---|
| Underfitting | Cao | Cao | Model quá đơn giản (High Bias) |
| Good Fit | Thấp | Thấp | Lý tưởng ✅ |
| Overfitting | Rất thấp | Cao | Model quá phức tạp (High Variance) |
Checkpoint
Bạn đã hiểu về Overfitting, Underfitting và train/test split chưa?
💻 Thực hành: Thiết lập môi trường
5.1 Cài đặt thư viện
Mô tả: Cài đặt các thư viện Python cần thiết cho Machine Learning.
1# Cài đặt các thư viện cần thiết2pip install numpy pandas scikit-learn matplotlib seabornGiải thích:
numpy: Thư viện tính toán số học, xử lý ma trận và arrayspandas: Xử lý và phân tích dữ liệu dạng bảng (DataFrame)scikit-learn: Thư viện ML chính, chứa các thuật toán chuẩnmatplotlib: Trực quan hóa dữ liệu (vẽ biểu đồ)seaborn: Trực quan hóa đẹp hơn, dựa trên matplotlib
Import các thư viện:
1# Import thư viện2import numpy as np3import pandas as pd4from sklearn.model_selection import train_test_split5from sklearn.linear_model import LinearRegression6import matplotlib.pyplot as plt7import seaborn as snsGiải thích import:
numpy as np: Aliasnpđể gọi ngắn gọn (np.array()thay vìnumpy.array())train_test_split: Hàm chia data thành training và test setLinearRegression: Class chứa thuật toán Linear Regressionplt: Alias cho matplotlib.pyplot để vẽ biểu đồ
Bước 3: Train model (Linear Regression)
Công thức Linear Regression:
Trong đó:
- : Giá dự đoán
- : Diện tích, Số phòng, Tuổi, Khoảng cách
- : Hệ số mà model cần học
Bước 4: Code Python hoàn chỉnh
Mô tả: Xây dựng mô hình Linear Regression để dự đoán giá nhà California. Code bao gồm 6 bước: Import → Load data → Split → Train → Predict → Evaluate → Visualize.
1# Bước 4.1: Import libraries2import numpy as np3import pandas as pd4from sklearn.datasets import fetch_california_housing5from sklearn.model_selection import train_test_split6from sklearn.linear_model import LinearRegression7from sklearn.metrics import mean_squared_error, r2_score8import numpy as np910# 1. Load data11housing = fetch_california_housing()12X, y = housing.data, housing.target1314# Xem thông tin15print(f"Số samples: {X.shape[0]}")16print(f"Số features: {X.shape[1]}")17print(f"Feature names: {housing.feature_names}")1819# 2. Train/Test split20X_train, X_test, y_train, y_test = train_test_split(21 X, y, test_size=0.2, random_state=4222)2324print(f"Training set: {X_train.shape}")25print(f"Test set: {X_test.shape}")2627# 3. Train model28model = LinearRegression()29model.fit(X_train, y_train)3031# 4. Predict32y_pred = model.predict(X_test)3334# 5. Evaluate35mse = mean_squared_error(y_test, y_pred)36rmse = np.sqrt(mse)37r2 = r2_score(y_test, y_pred)3839print(f"\n📊 Model Performance:")40print(f"MSE: {mse:.4f}")41print(f"RMSE: {rmse:.4f}")42print(f"R² Score: {r2:.4f}")4344# 6. Visualize predictions45import matplotlib.pyplot as plt4647plt.figure(figsize=(10, 6))48plt.scatter(y_test, y_pred, alpha=0.5)49plt.plot([y_test.min(), y_test.max()], 50 [y_test.min(), y_test.max()], 51 'r--', lw=2)52plt.xlabel('Actual Price')53plt.ylabel('Predicted Price')54plt.title('Actual vs Predicted House Prices')55plt.grid(alpha=0.3)56plt.show()Giải thích chi tiết từng bước:
Bước 1: Load data
1housing = fetch_california_housing() # Tải dataset California housing2X, y = housing.data, housing.target # Tách features (X) và labels (y)X: Ma trận 20,640 x 8 (20,640 ngôi nhà, 8 features)y: Vector 20,640 giá trị (giá nhà từng ngôi)shape[0]: Số rows (samples),shape[1]: Số columns (features)
Bước 2: Train/Test split
1train_test_split(X, y, test_size=0.2, random_state=42)test_size=0.2: 20% data cho test, 80% cho trainingrandom_state=42: Seed để kết quả tái tạo được (reproducible)- Output:
X_train, X_test, y_train, y_test(4 arrays)
Bước 3: Train model
1model = LinearRegression() # Khởi tạo model2model.fit(X_train, y_train) # Học từ training datafit(): Model tự tìm hệ số tối ưu- Sau
fit(), model đã học xong và sẵn sàng dự đoán
Bước 4: Predict
1y_pred = model.predict(X_test) # Dự đoán trên test set- Input:
X_test(data chưa thấy) - Output:
y_pred(giá dự đoán)
Bước 5: Evaluate
1mse = mean_squared_error(y_test, y_pred) # Trung bình bình phương sai số2rmse = np.sqrt(mse) #Can bậc 2 của MSE3r2 = r2_score(y_test, y_pred) # Hệ số xác định- MSE: Sai số bình phương trung bình (nhỏ hơn = tốt hơn)
- RMSE: Sai số trung bình cùng đơn vị với y (dễ hiểu hơn MSE)
- R²: % variance giải thích được (0-1, gần 1 = tốt)
Bước 6: Visualize
1plt.scatter(y_test, y_pred) # Vẽ scatter plot: actual vs predicted2plt.plot([min, max], [min, max], 'r--') # Đường chéo (ideal line)- Nếu điểm nằm gần đường chéo → Dự đoán tốt
- Nếu điểm phân tán xa → Dự đoán kém
Output mẫu:
1Số samples: 206402Số features: 83Feature names: ['MedInc', 'HouseAge', 'AveRooms', ...]4 5Training set: (16512, 8)6Test set: (4128, 8)7 8📊 Model Performance:9MSE: 0.555810RMSE: 0.7455 ← Sai số trung bình ±74,550 USD11R² Score: 0.5757 ← Model giải thích 57.57% varianceBước 5: Giải thích kết quả
✅ Model đã học được gì?
- Với R² = 0.5757 → Model giải thích được 57.57% sự thay đổi giá nhà
- RMSE = 0.7455 → Sai số trung bình khoảng ±$74,550
- Model đã tìm ra được mối quan hệ giữa 8 features với giá nhà 📈 Có thể cải thiện:- Thu thập thêm dữ liệu (hiện có 20,640 samples)
- Thêm features mới (ví dụ: số tầng, có sân vườn không)
- Thử models phức tạp hơn (Random Forest, XGBoost)
- Feature Engineering (tạo feature mới từ features cũ) 💡 Bài học:
- ML không phải "ma thuật" - chỉ là tìm pattern từ dữ liệu
- Model tốt hay không phụ thuộc vào: Chất lượng data > Algorithm
- Cần đánh giá model trên test set (không phải training set)
📊 Tóm tắt: Flow ML Project (9 bước)
ML Workflow - Complete Pipeline
Chi tiết từng bước:
| Bước | Tên | Câu hỏi cần trả lời | Công cụ |
|---|---|---|---|
| 1 | Problem Definition | Bài toán gì? Supervised/Unsupervised? Regression/Classification? | Domain knowledge |
| 2 | Data Collection | Data ở đâu? Đủ không? Chất lượng thế nào? | SQL, API, CSV |
| 3 | EDA | Data có missing values? Outliers? Distribution? | Pandas, Matplotlib |
| 4 | Preprocessing | Làm sạch data, scaling, encoding categorical | Scikit-learn |
| 5 | Train/Test Split | Chia 80-20 hoặc 70-30 | train_test_split() |
| 6 | Model Training | Chọn algorithm nào? Linear Regression? Decision Tree? | Scikit-learn |
| 7 | Evaluation | Model tốt không? MSE? R²? Accuracy? | Metrics |
| 8 | Hyperparameter Tuning | Có thể cải thiện không? | GridSearchCV |
| 9 | Deployment | Đưa model lên production | Flask, FastAPI |
Checkpoint
Bạn đã chạy thử code dự đoán giá nhà chưa?
⚖️ Ưu và nhược điểm của ML
| ✅ Ưu điểm | ❌ Nhược điểm |
|---|---|
| Tự động học từ dữ liệu | Cần nhiều dữ liệu chất lượng |
| Phát hiện pattern phức tạp | Khó giải thích (black box) |
| Tự cải thiện theo thời gian | Cần nhiều tính toán (GPU) |
| Xử lý được bài toán phi tuyến | Dễ bị overfitting |
| Không cần lập trình rules cụ thể | Phụ thuộc vào chất lượng data |
Tóm tắt: ML mạnh ở khả năng tự học pattern phức tạp, nhưng cần dữ liệu tốt và phải cẩn thận với overfitting.
Checkpoint
Bạn đã hiểu ưu nhược điểm của ML? Khi nào nên và không nên dùng ML?
🎯 Quiz: Kiểm tra hiểu biết
Câu 1: Sự khác biệt chính giữa ML và lập trình truyền thống là gì?
Xem đáp án
Đáp án:
- Lập trình truyền thống: Data + Rules → Output
- Machine Learning: Data + Output → Rules (Model học từ data)
Câu 2: Bài toán "Phân nhóm khách hàng theo hành vi mua sắm" thuộc loại ML nào?
Xem đáp án
Đáp án: Unsupervised Learning - Clustering
Vì không có nhãn sẵn, model tự tìm nhóm khách hàng tương tự.
Câu 3: Trong case study dự đoán giá nhà, R² = 0.5757 có nghĩa là gì?
Xem đáp án
Đáp án: Model giải thích được 57.57% sự thay đổi của giá nhà.
Còn 42.43% do các yếu tố khác (features chưa có, noise).
Câu 4: Tại sao phải chia Train/Test set?
Xem đáp án
Đáp án: Để đánh giá model trên data chưa thấy (test set), tránh overfitting.
Nếu đánh giá trên training set → kết quả quá lạc quan, không đáng tin.
Câu 5: Trong 9 bước ML workflow, bước nào QUAN TRỌNG NHẤT?
Xem đáp án
Đáp án: Bước 1-2: Hiểu vấn đề & Thu thập data
Nếu data kém chất lượng hoặc không đủ → Model tốt đến đâu cũng thất bại.
"Garbage in, garbage out"
📝 Bài tập thực hành
Bài tập 1: Phân loại bài toán (5 phút)
Phân loại các bài toán sau là Supervised (Regression/Classification) hay Unsupervised:
| Bài toán | Loại ML | Lý do |
|---|---|---|
| Dự đoán doanh thu tháng sau | Supervised - Regression | Có label (doanh thu), output liên tục |
| Gợi ý sản phẩm cho khách hàng | Unsupervised - Clustering hoặc Supervised | Tùy approach |
| Nhận diện khuôn mặt | Supervised - Classification | Có label (tên người), phân loại |
| Phát hiện bất thường trong giao dịch | Unsupervised - Anomaly Detection | Không có label "bất thường" |
| Dự đoán khách hàng rời bỏ (churn) | Supervised - Classification | Có label (churn/not churn) |
Bài tập 2: Code thực hành (20 phút)
Yêu cầu: Chạy lại code dự đoán giá nhà California và trả lời:
- Model predict giá nhà có diện tích trung bình 6.0 rooms là bao nhiêu?
- Feature nào có hệ số (coefficient) lớn nhất?
- Nếu tăng test_size từ 0.2 lên 0.3, R² thay đổi thế nào?
Bài tập 3: Tìm hiểu (10 phút)
Tìm hiểu thêm về Reinforcement Learning và cho 2 ví dụ thực tế:
- Gợi ý: AlphaGo, xe tự lái, game AI, robot
- Hiểu khái niệm: Agent, Environment, Reward, Policy
Bài tập 4: Case study thực tế (Nâng cao)
Tình huống: Bạn làm Data Scientist cho ngân hàng. Nhiệm vụ: dự đoán khách hàng có vay nợ không trả (default loan).
Câu hỏi:
- Đây là bài toán gì? (Regression/Classification/Clustering)
- Features nào bạn cần? (ít nhất 5 features)
- Metric nào quan trọng nhất? (Accuracy? Precision? Recall? F1?)
- Nếu model dự đoán sai → Hậu quả gì cho ngân hàng?
Gợi ý đáp án
- Classification (binary: default/not default)
- Features: Thu nhập, Lịch sử tín dụng, Số nợ hiện tại, Tuổi, Nghề nghiệp, Số tiền vay, Thời gian vay...
- Recall quan trọng nhất! (Không muốn bỏ sót khách hàng có nguy cơ default)
- False Negative (dự đoán "OK" nhưng thực tế default) → Mất tiền
Checkpoint
Bạn đã hoàn thành các bài tập thực hành chưa?
� Tổng Kết
Key Takeaways:
- 🧠 ML = máy tính học từ dữ liệu, khác với lập trình truyền thống
- 📊 3 loại ML: Supervised (có nhãn), Unsupervised (không nhãn), Reinforcement (reward)
- 🔄 ML Workflow: 9 bước chuẩn từ hiểu vấn đề đến triển khai
- 💻 Thực hành: Đã xây dựng model dự đoán giá nhà với Scikit-learn
Tài liệu tham khảo
| Nguồn | Link |
|---|---|
| Scikit-learn User Guide | scikit-learn.org |
| Google ML Crash Course | developers.google.com |
| Kaggle Learn - Intro to ML | kaggle.com/learn |
Câu hỏi tự kiểm tra
- Machine Learning khác với lập trình truyền thống như thế nào? Hãy giải thích bằng công thức.
- Phân biệt Supervised Learning, Unsupervised Learning và Reinforcement Learning — cho ví dụ mỗi loại.
- Workflow chuẩn của một ML project gồm bao nhiêu bước? Bước nào quan trọng nhất và tại sao?
- Trong case study dự đoán giá nhà, Feature và Label tương ứng là gì?
🎉 Tuyệt vời! Bạn đã hoàn thành bài học Giới thiệu Machine Learning!
Tiếp theo: Cùng tìm hiểu Nền tảng Toán học cho ML — kiến thức nền tảng quan trọng!
Checkpoint
Bạn đã sẵn sàng sang bài tiếp theo — Nền tảng Toán học cho ML?
