
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
GIÁO TRÌNH
MACHINE LEARNING
TS. Nguyễn Mạnh Hùng
TP. HCM, Ngày 6 tháng 8 năm 2024

Mục lục
1 GIỚI THIỆU VỀ HỌC MÁY 3
1.1 Địnhnghĩavềhọcmáy .................................... 3
1.1.1 Họccógiámsát.................................... 4
1.1.2 Họckhônggiámsát ................................. 5
1.1.3 Họctăngcường.................................... 5
1.2 Quy trình phát triển mô hình học máy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Quy trình KDD: Khám phá kiến trúc cơ sở dữ liệu . . . . . . . . . . . . . . . . . 6
1.2.2 QuytrìnhSEMMA.................................. 10
1.3 Hướng dẫn cài đặt python và các thư viện hỗ trợ . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.1 GiớithiệuPython................................... 12
1.3.2 GiớithiệuSKlearn .................................. 12
1.3.3 Giới thiệu Jupyter Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.4 Các thư viện cơ bản cần dùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Hướng dẫn huấn luyện mô hình cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1 Khảosáttậpdữliệu ................................. 18
1.4.2 Chuẩn bị tập huấn luyện (training) và tập kiểm tra (testing) . . . . . . . . . . . . . 20
1.4.3 Khảo sát đặc tính của dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.4 Xây dựng mô hình phân loại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.5 Thực hiện dự đoán cho một mẫu mới . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.6 Đánh giá độ chính xác của mô hình trên dữ liệu đánh giá hiện tại . . . . . . . . . . 25
1.5 Tómtắt ............................................ 26
2 TIỀN XỬ LÝ DỮ LIỆU 29
2.1 THƯVIỆNNUMPY ..................................... 29
2.1.1 GiớithiệuvềNumpy................................. 29
2.1.2 NumPy ndarray: Đối tượng mảng đa chiều. . . . . . . . . . . . . . . . . . . . . . 31
2.1.3 Các phép toán số học với mảng NumPy. . . . . . . . . . . . . . . . . . . . . . . . 36
2.1.4 Truy vấn phần tử trong mảng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1.5 Hàm phổ quát (Universal function) . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.6 Lậptrìnhhướngmảng................................. 47
2.1.7 Nhập và xuất dữ liệu với mảng. . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1.8 Các phép toán đại số tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.2 THƯVIỆNPANDAS..................................... 57
2.2.1 Giới thiệu thư viện Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.2 Các cấu trúc dữ liệu của Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.2.3 Các phương thức/ hàm thường dùng của Pandas . . . . . . . . . . . . . . . . . . . 69
2.2.4 Xửlýdữliệutrùnglắp................................. 89
2.2.5 Thống kê trên các tập dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.2.6 Xửlýdữliệubịmất. ................................. 95
1

MỤC LỤC
3 HỌC CÓ GIÁM SÁT 103
3.1 Khái niệm về tính phổ quát, tính kém phù hợp và quá phù hợp của mô hình học máy . . . . 104
3.1.1 Địnhnghĩa ...................................... 104
3.1.2 Ví dụ về hiện tượng quá phù hợp-kém phù hợp trong bài toán phân loại . . . . . . 105
3.1.3 Vídụvềbàitoánhồiquy............................... 112
3.2 Hồiquytuyếntính ...................................... 116
3.2.1 Cơsởlýthuyết .................................... 116
3.2.2 Lập trình hồi quy tuyến tính bằng Python . . . . . . . . . . . . . . . . . . . . . . 119
3.2.3 Sử dụng hồi quy tuyến tính trong sklearn . . . . . . . . . . . . . . . . . . . . . . 121
3.2.4 L2 regularization chống quá phù hợp trong hồi quy tuyến tính . . . . . . . . . . . 122
3.2.5 L1 regulization để chống quá phù hợp trong hồi quy tuyến tính . . . . . . . . . . . 126
3.3 Hồiquynhịphân ....................................... 129
3.3.1 Cơsởlýthuyết .................................... 129
3.3.2 Sử dụng hồi quy nhị phân trong sklearn . . . . . . . . . . . . . . . . . . . . . . . 133
3.4 Mạngnơ-ronnhântạo..................................... 136
3.4.1 Lý thuyết về Mạng nơ-ron nhân tạo . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.4.2 Sử dụng Mạng nơ-ron nhân tạo trong sklearn . . . . . . . . . . . . . . . . . . . . 140
3.5 SupportVectorMachine ................................... 143
3.5.1 CơsởlýthuyếtvềSVM ............................... 143
3.5.2 Sử dụng SVM trong sklearn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.6 Mạngnơ-ronnhânchập(CNN)................................ 155
3.6.1 Cơsởlýthuyết .................................... 155
3.6.2 Ứng dụng Mạng nơ-ron nhân chập bằng Keras . . . . . . . . . . . . . . . . . . . 160
4 HỌC KHÔNG GIÁM SÁT 176
4.1 Chuẩnhóadữliệu....................................... 176
4.1.1 Cơsởlýthuyết .................................... 176
4.1.2 Các phương pháp chuẩn hoá dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . 177
4.1.3 Sử dụng sklearn để chuẩn hoá dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . 184
4.2 Phân tích thành phần cơ bản (PCA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.2.1 CơsởlýthuyếtvềPCA................................ 187
4.2.2 Ứng dụng Sklearn để thực hiện PCA . . . . . . . . . . . . . . . . . . . . . . . . . 188
4.2.3 ỨngdụngcủaPCA. ................................. 192
4.2.4 Nhược điểm PCA và giải pháp sử dụng PCA phi tuyến . . . . . . . . . . . . . . . 199
4.3 Kỹthuậtnhúngdữliệu .................................... 201
4.3.1 ThuậttoánLLE.................................... 202
4.3.2 Cách sử dụng thuật toán LLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
4.4 Phâncụm ........................................... 210
4.4.1 Cơ sở lý thuyết về phân cụm K-mean . . . . . . . . . . . . . . . . . . . . . . . . 210
4.4.2 Sử dụng sklearn để thực hiện kmeans . . . . . . . . . . . . . . . . . . . . . . . . 213
4.4.3 Những lưu ý khi phân cụm với dữ liệu phức tạp . . . . . . . . . . . . . . . . . . . 215
5 LỰA CHỌN VÀ TINH CHỈNH MÔ HÌNH 223
5.1 Đánhgiáchéo......................................... 223
2

MỤC LỤC
5.1.1 Định nghĩa đánh giá chéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
5.1.2 Sử dụng đánh giá chéo trong sklearn . . . . . . . . . . . . . . . . . . . . . . . . . 224
5.1.3 Ưu nhược điểm của việc đánh giá chéo . . . . . . . . . . . . . . . . . . . . . . . 225
5.1.4 Các chiến lược đánh giá chéo k-flod . . . . . . . . . . . . . . . . . . . . . . . . . 226
5.2 Lưới thông số và ứng dụng để lựa chọn mô hình . . . . . . . . . . . . . . . . . . . . . . . 231
5.2.1 Tổng quan về lưới thông số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
5.2.2 Ảnh hưởng của lưới thông số liên quan đến hiện tượng quá phù hợp . . . . . . . . 232
5.2.3 Lựa chọn mô hình dựa vào lưới thông số và kiểm tra chéo . . . . . . . . . . . . . 234
5.3 Ứng dụng Pipeline trong học máy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
5.3.1 Kết hợp chuẩn hoá dữ liệu và mô hình phân loại . . . . . . . . . . . . . . . . . . . 236
5.3.2 Kết hợp bằng cách sử dụng Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . 237
5.3.3 SửdụngclassPipeline ................................ 239
5.3.4 Kết hợp pipeline và lựa chọn các đặc trưng cho mô hình . . . . . . . . . . . . . . 242
PHỤ LỤC 246
A.1 Chương trình con create_axes ................................ 247
A.2 Chương trình con plot_distribution .............................. 247
A.3 Chương trình con make_plot.................................. 248
A.4 Chương trình con plot_embedding............................... 249
i

Danh sách bảng
2.1 Cáchàmtạomảngtiêuchuẩn................................. 34
2.2 CáckiểudữliệuNumPy ................................... 35
2.3 Mộtsốhàmphổdụngcơbản................................. 47
2.4 Các phương pháp thống kê mảng cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.5 Cácphéptoántậphợpmảng ................................. 54
2.6 Các hàm đại số tuyến tính thường dùng trong numpy.linalg . ................ 57
2.7 Đầu vào dữ liệu có thể có cho hàm khởi tạo DataFrame .................. 68
2.8 Các phương thức và thuộc tính của đối tượng Index...................... 70
2.9 Các lựa chọn nội suy trong phương thức Reindex....................... 71
2.10 Đối số điều khiển của hàm reindex .............................. 72
2.11 Các tùy biến cho index của DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2.12 Tùy chọn cho phương pháp giảm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
2.13Thốngkêmôtảvàtómtắt .................................. 93
2.14PhươngpháoxửlýNA .................................... 96
2.15ĐốisốhàmFillna....................................... 101
3.1 Ghichúkýhiệutoánhọc................................... 103
3.2 Một ví dụ về dữ liệu cho bài toán hồi quy nhị phân . . . . . . . . . . . . . . . . . . . . . 130
3.3 MộtsốkernelK(x,z) ..................................... 149
3.4 Đối số khởi tạo của class SVC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
3.5 Phương thức huấn luyện của class SVC. . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
3.6 Các phương thức dự đoán của class SVC. . . . . . . . . . . . . . . . . . . . . . . . . . . 153
4.1 Các phương thức của lớp Kmeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
ii

