Limio— Learn your way
🏆 Đấu trường
Đăng nhậpĐăng ký

Thiết kế và phát triển: @Limio team - Khoa Khoa học và Công nghệ Giáo dục, Đại học Bách Khoa Hà Nội

← Fundamental of Machine Learning

Bạn đang xem thử công khai

Đăng nhập để lưu tiến độ, làm bài tập, thảo luận và nhận phản hồi.

Đăng nhập
Module 1: Data Preparation and Model Foundations

Chuẩn hoá đặc trưng và mã hoá biến hạng mục (Feature Scaling & Encoding)

In / Lưu PDF

Chuẩn hoá đặc trưng và mã hoá biến hạng mục

Mô hình chỉ ăn số. Bài này lo hai việc: đưa các cột số về cùng thang, và biến các cột chữ thành số.

Vì sao phải chuẩn hoá thang đo

Giả sử dự đoán giá nhà từ hai đặc trưng:

Đặc trưngKhoảng giá trị
Diện tích (m²)30 – 200
Số phòng ngủ1 – 5

Với thuật toán tính khoảng cách (KNN, SVM) hoặc dùng gradient descent, cột diện tích sẽ áp đảo cột số phòng chỉ vì con số của nó lớn hơn — chứ không phải vì nó quan trọng hơn.

Hai phép chuẩn hoá

Normalization (Min-Max) — ép về đoạn [0, 1]:

x_new = (x − x_min) / (x_max − x_min)

Standardization (z-score) — đưa về trung bình 0, độ lệch chuẩn 1:

x_new = (x − mean) / std

Min-Maxz-score
Khoảng kết quảCố định [0, 1]Không giới hạn
Nhạy với ngoại laiRất nhạy — một giá trị cực lớn ép hết phần còn lại về gần 0Ít nhạy hơn
Hợp khiBiết rõ biên trên/dưới, dữ liệu sạchCó ngoại lai, phân phối gần chuẩn
from sklearn.preprocessing import StandardScaler, MinMaxScaler
scaler = StandardScaler()
x_train = scaler.fit_transform(x_train)   # học mean/std TỪ train
x_test  = scaler.transform(x_test)        # áp cùng mean/std đó lên test

Mã hoá biến hạng mục

One-hot encoding cho biến nominal (không thứ tự) — mỗi hạng mục thành một cột 0/1:

data = pd.get_dummies(data, columns=["city"])
# city → city_Hanoi, city_HCM, city_Hue

Ordinal encoding cho biến có thứ tự — giữ lại quan hệ lớn/nhỏ:

size_map = {"S": 0, "M": 1, "L": 2}
data["size"] = data["size"].map(size_map)

Lỗi thường gặp nhất

Gán số cho biến nominal. Nếu mã Hà Nội = 1, TP.HCM = 2, Huế = 3, mô hình sẽ hiểu rằng Huế > TP.HCM > Hà Nội và khoảng cách Hà Nội–Huế gấp đôi Hà Nội–TP.HCM. Đó là quan hệ hoàn toàn bịa ra. Với biến không thứ tự, phải dùng one-hot.