
CHƯƠNG 4
HỌC KHÔNG GIÁM SÁT
Trong chương này, người học sẽ thảo luận về những thuật toán học không giám sát cơ bản
bao gồm chuẩn hoá dữ liệu, giảm chiều dữ liệu, sắp xếp dữ liệu giữa các miền, và cuối cùng
là bài toán phân cụm dữ liệu.
Những nội dung chính của chương này.
1. Chuẩn hoá dữ liệu.
2. Giảm chiều dữ liệu (ví dụ: PCA).
3. Sắp xếp dữ liệu giữa các miền khác nhau (ví dụ: LLE).
4. Phân cụm dữ liệu.
4.1 Chuẩn hóa dữ liệu
4.1.1 Cơ sở lý thuyết
Hình 4.1: Ảnh hưởng của chuẩn hoá dữ liêu. (a) Gradient Descent không sử dụng chuẩn hoá dữ liệu. (b)
Gradient Descent sau khi sử dụng chuẩn hoá dữ liệu.
Khi làm việc với bài toán có nhiều đặc trưng, mỗi đặc trưng sẽ có nhận giá trị ở những
khoảng biên độ (range) khác nhau. Hiện tượng này bắt nguồn từ việc mỗi đặc trưng đều khác
biệt về mặt ý nghĩa vật lý hoặc đơn vị. Điều này gây khó khăn cho những thuật toán học máy
vì đa phần các thuật toán này đều dựa vào kỹ thuật gradient descent để hiệu chỉnh các trọng
số. Bởi vì vector gradient là cố định cho mỗi bước cập nhập, việc học cho các đặc trưng có
176

CHƯƠNG 4. HỌC KHÔNG GIÁM SÁT
khoảng biên độ (range) lớn sẽ chậm hơn việc học cho các đặc trưng có khoảng biên độ nhỏ.
Để khắc phục tình trạng này, một giải pháp được sử dụng là chuẩn hoá dữ liệu. Mục đích của
việc này là đảm bảo các đặc trưng sẽ có giá trị trong một khoảng giống nhau. Hình 4.1 mô
tả lợi ích của việc chuẩn hoá dữ liệu thông qua bài toán huấn luyện bằng hai đặc trưng. Ở
Hình 4.1a khi hai đặc trưng có khoảng giá trị khác nhau, quá trình gradient descent sẽ không
trực tiếp đi vào vị trí có giá trị hàm mục tiêu nhỏ nhất mà sẽ dao động theo giá trị của trục
biến θ1. Ngược lại, nếu thực hiện việc chuẩn hoá dữ liệu thì bộ nghiệm sẽ di chuyển vào vị
trí điểm cực tiểu theo một đường thẳng. Do đó, quá trình học sẽ hội tụ nhanh hơn.
Có 2 kiểu chuẩn hoá dữ liệu thường dùng là: Normalization và Standardization.
•Normalization: là một kỹ thuật nhằm đảm bảo mỗi đặc trưng sẽ có giá tri nằm trong
khoảng từ 0 đến 1. Kỹ thuật này còn được gọi là Min-Max scaling. Phương trình 3.1
mô tả đặc tính của feature scaling.
x0=x−min(x)
max(x)−min(x)(4.1)
•Standardization: là một kỹ thuật nhằm đảm bảo các giá trị trung bình và độ lệch chuẩn
của một đặc trưng sẽ tuân theo phân phối chuẩn N(x;0,1). Điều này khắc phục nhược
điểm của normalization là thay vì chỉ tập trung vào giáo trị lớn nhất và nhỏ nhất của
đặc trưng đó, ta sẽ tập trung vào toàn bộ dữ liệu. Phương trình 3.2 môt tả phương pháp
này.
x0=x−x
σ(4.2)
4.1.2 Các phương pháp chuẩn hoá dữ liệu.
Có nhiều các thức khác nhau để chuẩn hoá dữ liệu. Thư viện Sklearn hỗ trợ các lớp sau phục
vụ cho quá trình chuẩn hoá dữ liệu:
•MinMaxScaler.
•minmax_scale.
•MaxAbsScaler.
•StandardScaler.
•RobustScaler.
•Normalizer.
•QuantileTransformer.
•PowerTransformer.
Trong những kỹ thuật chuẩn hoá trên, đa số các phương pháp đều chuẩn hoá dữ liệu dựa trên
đặc trưng của chúng, tức là làm cho phân phối của các loại đặc trưng trở nên giống nhau.
Tuy nhiên, cũng có các ngoại lệ là Quantile Transformer và PowerTransformer. Không
giống như các phép biến đổi trước đó, quá trình chuẩn hóa đề cập đến một phép biến đổi
177

CHƯƠNG 4. HỌC KHÔNG GIÁM SÁT
trên mỗi mẫu thay vì một phép biến đổi trên mỗi đặc trưng. Cụ thể:
•Quantile Transformer cung cấp các phép biến đổi phi tuyến tính trong đó khoảng
cách giữa các giá trị ngoại lai và giá trị nội tại được thu hẹp lại.
•PowerTransformer cung cấp các phép biến đổi phi tuyến tính trong đó dữ liệu được
ánh xạ tới một phân phối chuẩn để ổn định phương sai và giảm thiểu độ lệch.
Ví dụ sau sẽ so sánh sự ảnh hưởng của các phương pháp chuẩn hoá dữ liệu lên quá trình huấn
luyện. Trong ví dụ này, bộ dữ liệu California Housing được sử dụng. Đặc trưng thứ 0 (thu
nhập trung bình trong một khu nhà) và đặc trưng thứ 5 (công suất sử dụng nhà trung bình)
của bộ dữ liệu nhà ở California có ngưỡng chạy rất khác nhau và chứa một số ngoại lệ rất
lớn. Hai đặc trưng này dẫn đến khó khăn trong việc trực quan hóa dữ liệu và quan trọng hơn
là chúng có thể làm giảm hiệu suất dự đoán của nhiều thuật toán học máy. Dữ liệu không
được chia tỷ lệ cũng có thể làm chậm hoặc ngăn chặn sự hội tụ của nhiều mô hình phân loại
dựa trên độ dốc gradient.
Để sử dụng kỹ thuật chuẩn hoá dữ liệu, trước hết cần khai báo sử dụng các class tương ứng.
import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib import cm
from sklearn.preprocessing import MinMaxScaler,
from sklearn.preprocessing import minmax_scale
from sklearn.preprocessing import MaxAbsScaler
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import RobustScaler
from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import QuantileTransformer
from sklearn.preprocessing import PowerTransformer
from sklearn.datasets import fetch_california_housing
Đoạn mã sau lựa chọn hai đặc trưng ["MedInc", "AveOccup"] (thu nhập trung bình trong
một khu nhà và công suất sử dụng nhà trung bình) để tiến hành phân tích.
dataset = fetch_california_housing()
X_full, y_full = dataset.data, dataset.target
feature_names = dataset.feature_names
feature_mapping = {
"MedInc":"Median income in block",
"HousAge":"Median house age in block",
"AveRooms":"Average number of rooms",
"AveBedrms":"Average number of bedrooms",
"Population":"Block population",
"AveOccup":"Average house occupancy",
"Latitude":"House block latitude",
"Longitude":"House block longitude",
}
# Take only 2 features to make visualization easier
# Feature MedInc has a long tail distribution.
# Feature AveOccup has a few but very large outliers.
features = ["MedInc","AveOccup"]
178

CHƯƠNG 4. HỌC KHÔNG GIÁM SÁT
features_idx = [feature_names.index(feature) for feature in features]
X = X_full[:, features_idx]
Sau khi chuẩn bị dữ liệu, các thuật toán chuẩn hoá dữ liệu sẽ được lựa chọn. Mỗi kỹ thuật
chuẩn hoá dữu liệu sẽ được thực thi bởi các đối tượng tương ứng. Đoạn mã sau định nghĩa
nhiều đối tượng khác nhau cho tác vụ chuẩn hoá dữ liệu. Mỗi đối tượng sử dụng một phương
pháp chuẩn hoá dữ liệu khác nhau tương ứng với thuật toán đại diện cho chúng.
distributions = [
("Unscaled data", X),
("Data after standard scaling", StandardScaler().fit_transform(X)),
("Data after min-max scaling", MinMaxScaler().fit_transform(X)),
("Data after max-abs scaling", MaxAbsScaler().fit_transform(X)),
(
"Data after robust scaling",
RobustScaler(quantile_range=(25, 75)).fit_transform(X),
),
(
"Data after power transformation (Yeo-Johnson)",
PowerTransformer(method="yeo-johnson").fit_transform(X),
),
(
"Data after power transformation (Box-Cox)",
PowerTransformer(method="box-cox").fit_transform(X),
),
(
"Data after quantile transformation (uniform pdf)",
QuantileTransformer(output_distribution="uniform").fit_transform(X),
),
(
"Data after quantile transformation (gaussian pdf)",
QuantileTransformer(output_distribution="normal").fit_transform(X),
),
("Data after sample-wise L2 normalizing", Normalizer().fit_transform(X)),
]
Để hỗ trợ cho việc trực quan hoá dữ liệu, các chương trình con create_axes và plot_distribution
đã được chuẩn bị. Chi tiết của các chương trình con này sẽ được đề cập trong phụ lục A.1 và
phụ lục A.2. Ngoài ra, phụ lục A.3 cũng sẽ giới thiệu chương trình con make_plot dùng để
vẽ hai biểu đồ hiển thị kết quả chuẩn hoá dữ liệu tương ứng với thuật toán được chọn. Để lựa
chọn thuật toán được sử dụng, người dùng có thể sử dụng một chỉ số đánh dấu thức tự của
thuật toán được khai báo trong danh sách distributions. Trong kết quả hiển thị, hình bên trái
sẽ hiển thị biểu đồ phân tán của toàn bộ tập dữ liệu trong khi hình bên phải sẽ loại trừ các
giá trị ngoại lai và chỉ xem xét 99 % tập dữ liệu, không bao gồm các giá trị ngoại lệ biên.
Ngoài ra, các biểu đồ phân phối cận biên cho từng đặc trưng sẽ được hiển thị trên các mặt
của biểu đồ phân tán. Trong những kết quả đó, màu sắc sẽ thể hiện giá trị của căn nhà. Màu
tím hiển thị các căn nhà có giá trị cao và màu vàng hiển thị căn nhà có giá thấp hơn.
179

CHƯƠNG 4. HỌC KHÔNG GIÁM SÁT
Bộ dữ liệu gốc:
Bộ dữ liệu gốc được hiển thị như Hình 4.2. Mỗi trục trên biểu đồ hiển thị một đặc trưng của
bộ dữ liêụ. Biểu đồ bên trái hiển thị toàn bộ tập dữ liệu và biểu đồ bên phải được phóng to
để hiển thị tập dữ liệu không có các ngoại lệ biên. Ở bộ dữ liệu gốc, phần lớn các mẫu được
tập hợp thành một phạm vi cụ thể, ví dụ thu nhập trung bình nằm trong khoảng [0,10]và
công suất thuê nhà trung bình ở trong khoảng [0,6]. Lưu ý rằng có một số ngoại lệ cận biên
(một số khối nhà ở có công suất thuê trung bình trên 1200). Chính vì vậy, hiển thị toàn bộ
dữ liệu làm cho dữ liệu bị hẹp lại đáng kể ở chiều dọc và không thể hiện tốt phân phối của
dữ liệu. Do đó, việc tiền xử lý và loại bỏ các ngoại lệ cụ thể sẽ rất có lợi tùy thuộc vào ứng
dụng. Sau đây, tài liệu trình bày một số phương pháp tiền xử lý khi không và có loại bỏ các
giá trị ngoại lệ cận biên.
make_plot(0)
Kết qủa:
Hình 4.2: Bộ dữ liệu gốc. Bên trái: chứa dữ liệu ngoại lệ. Bên phải: Không chứa dữ liệu ngoại lệ.
Chuẩn hoá tiêu chuẩn (phương trình 4.2):
Bộ chuẩn hoá tiêu chuẩn loại bỏ giá trị trung bình và tỷ lệ chia dữ liệu . Kết qủa được hiển
thị như Hình 4.3. Kết quả sau khi sử dụng phương pháp này sẽ đảm bảo các mẫu có trị trung
bình bằng 0 và phương sai của mỗi đặc trương sẽ là phương sai đơn vị. Kỹ thuật chuẩn hoá
tiêu chuẩn sẽ thu hẹp phạm vi của các giá trị đối tượng như minh họa trong hình bên trái
bên dưới. Tuy nhiên, các giá trị ngoại lệ có ảnh hưởng khi tính toán giá trị trung bình thực
nghiệm và độ lệch chuẩn. Đặc biệt, cần lưu ý rằng do các giá trị ngoại lệ trên mỗi đặc trưng
có độ lớn khác nhau nên mức độ phân tán của dữ liệu được chuyển đổi trên mỗi đặc trưng
là rất khác nhau. Như kết quả ở Hình 4.3, hầu hết dữ liệu nằm trong phạm vi [−2,4]đối với
đặc trưng thu nhập trung bình sau khi được chuẩn hoá. Ngoài ra, đặc trưng về công suất sử
dụng nhà trung bình được nén trong phạm vi [−0,2,0,2]nhỏ hơn đối với đặc trưng về thu
nhập trung bình. Một cách tổng quát, phương pháp chuẩn hoá tiêu chuẩn như phương trình
(4.2) không thể đảm bảo tỷ lệ tính năng cân bằng khi có các ngoại lệ .
make_plot(1)
Kết qủa:
180

