Chuẩn bị dữ liệu cho machine learning trong Python
Mô hình machine learning học từ các con số, và học tốt hơn khi các đặc trưng có thang đo tương tự nhau. Chuẩn hóa giúp co giãn dữ liệu, còn phép nhân ma trận là cách mô hình kết hợp nhiều đặc trưng cùng lúc.
Khái niệm bằng lời đơn giản
Mô hình machine learning học từ các con số, và học tốt hơn khi các đặc trưng có thang đo tương tự nhau. Chuẩn hóa giúp co giãn dữ liệu, còn phép nhân ma trận là cách mô hình kết hợp nhiều đặc trưng cùng lúc.
Co giãn đặc trưng bằng chuẩn hóa min-max và z-score, và tự nhân ma trận bằng tay.
Ý chính
- Đặc trưng có thang đo quá khác nhau sẽ khiến các số lớn lấn át mô hình.
- Min-max giữ giá trị trong khoảng 0 đến 1; z-score giữ hình dạng nhưng dời tâm về 0.
- Tính các giá trị co giãn trên dữ liệu huấn luyện rồi dùng lại cho dữ liệu mới.
- Tích ma trận A × B cần số cột của A bằng số hàng của B.
Khi nào nên sử dụng?
- Hiểu điều gì diễn ra bên trong mạng nơ-ron và các thư viện AI.
- Nắm ý tưởng trước khi tự cài đặt nó trong các thử thách tương ứng.
- Chuẩn bị cho khóa học machine learning, phỏng vấn và dự án.
Xem trực quan
Kéo x5 để tạo một giá trị ngoại lai và so sánh cách min-max và z-score phản ứng. Trỏ vào một ô của A·B để xem nó dùng hàng và cột nào.
Code ví dụ
import statistics
heights = [150, 160, 170, 180, 190]
# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])
# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])
# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)
Kết quả dự kiến
min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]
Cách hoạt động
Co giãn min-max đưa chiều cao nhỏ nhất về 0 và lớn nhất về 1. Z-score trừ đi giá trị trung bình rồi chia cho độ lệch chuẩn, nên các giá trị xoay quanh 0. Trong tích ma trận, mỗi ô là một hàng của A nhân từng phần tử với một cột của B rồi cộng lại.
Thay đổi giá trị và chạy chương trình bằng trình chạy Python online của CodeUtility mà không cần cài Python.
Bài tập mở rộng
Hãy sửa code theo các bài tập dưới đây để hiểu rõ cách hoạt động thay vì chỉ sao chép kết quả.
- Đổi đầu vào hoặc trọng số và đoán kết quả trước khi chạy.
- In các giá trị trung gian để theo dõi từng bước tính toán.
- Giải các thử thách được liên kết bên dưới để tự cài đặt ý tưởng.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Nhân ma trận Nhân hai ma trận, phép tính đứng sau mọi lớp của mạng nơ-ron. Dễ
- Chuẩn hóa min-max Co giãn một đặc trưng để giá trị nhỏ nhất thành 0 và lớn nhất thành 1. Dễ
- Chuẩn hóa z-score Dời một đặc trưng về trung bình 0 và co giãn về độ lệch chuẩn 1. Dễ