You are on page 1of 62

ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN TIN

ỨNG DỤNG MÔ HÌNH HỌC MÁY


CHO BÀI TOÁN DỰ BÁO THỜI TIẾT

ĐỒ ÁN II
Chuyên ngành: Hệ thống thông tin quản lý
Chuyên sâu: Tin học

Giảng viên hướng dẫn: ThS. Lê Quang Hòa


Chữ kí của GVHD
Sinh viên thực hiện: Đỗ Văn Hùng
Mã số sinh viên: 20206283

HÀ NỘI, 1/2024
ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA TOÁN TIN

ỨNG DỤNG MÔ HÌNH HỌC MÁY


CHO BÀI TOÁN DỰ BÁO THỜI TIẾT

ĐỒ ÁN II
Chuyên ngành: Hệ thống thông tin quản lý
Chuyên sâu: Tin học

Giảng viên hướng dẫn: ThS. Lê Quang Hòa


Chữ kí của GVHD
Sinh viên thực hiện: Đỗ Văn Hùng
Mã số sinh viên: 20206283

HÀ NỘI, 1/2024
i

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

1. Mục tiêu và nội dung của đồ án

(a) Mục tiêu:

(b) Nội dung:

2. Kết quả đạt được

(a)

(b)

(c)

3. Ý thức làm việc của sinh viên:

(a)

(b)

(c)

Hà Nội, ngày 25 tháng 1 năm 2024


Giảng viên hướng dẫn

ThS. Lê Quang Hòa


ii

Nội dung đồ án gồm 3 phần

1. Kiến thức cơ sở.

Tìm hiểu về những kiến thức cơ sở và nền tảng phục vụ cho đề tài nghiên
cứu.

2. Cây quyết định và các thuật toán cải tiến

Tìm hiểu về thuật toán cây quyết định và các thuật toán cải tiến khác trên
cơ sở thuật toán cây quyết định.

3. Ứng dụng cho bài toán dự báo thời tiết

(a) Thu thập và xử lý dữ liệu

(b) Thử nghiệm, lựa chọn mô hình học máy phù hợp

(c) Tối ưu hiệu suất của mô hình để cho ra kết quả dự báo tốt nhất

Hà Nội, tháng 1 năm 2024


Tác giả đồ án

Đỗ Văn Hùng
iii

Mục lục

Danh sách hình vẽ 1

Chương 1. Kiến thức cơ sở 5


1.1 Học máy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Học kết hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Học đóng gói . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Học tăng cường . . . . . . . . . . . . . . . . . . . . . . . . 8

Chương 2. Cây quyết định và các thuật toán cải tiến 9


2.1 Cây quyết định . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Một số khái niệm cơ bản về cây quyết định . . . . . . . . . 10
2.1.2 Tiêu chí đánh giá . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.3 Các tham số của mô hình . . . . . . . . . . . . . . . . . . 11
2.2 Rừng ngẫu nhiên . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Cây quyết định tăng cường độ dốc . . . . . . . . . . . . . . . . . 16
2.4 Các phương pháp đánh giá mô hình học máy phân lớp . . . . . . 18
2.4.1 Ma trận nhầm lẫn (Confusion Matrix) . . . . . . . . . . . 18
2.4.2 Độ đo Accuracy, Precision, Recall và F1 Score . . . . . . . 19
2.4.3 Đường cong ROC và chỉ số AUC . . . . . . . . . . . . . . 21
2.4.4 Độ mất mát và độ lỗi . . . . . . . . . . . . . . . . . . . . . 22

Chương 3. Ứng dụng cho bài toán dự báo thời tiết 24


3.1 Bộ dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
iv

3.1.1 Thu thập dữ liệu . . . . . . . . . . . . . . . . . . . . . . . 24


3.1.2 Tổng quan về bộ dữ liệu . . . . . . . . . . . . . . . . . . . 26
3.2 Tiền xử lý dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 Tổng hợp dữ liệu . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.2 Xử lý các dữ liệu bị thiếu . . . . . . . . . . . . . . . . . . 28
3.2.3 Xử lý dữ liệu thời gian . . . . . . . . . . . . . . . . . . . . 30
3.2.4 Chuẩn bị dữ liệu cho yêu cầu cụ thể của bài toán . . . . . 30
3.2.5 Kiểm tra lại dữ liệu . . . . . . . . . . . . . . . . . . . . . . 32
3.3 Khám phá dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.1 Biến mục tiêu . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.2 Phân phối một số biến đặc trưng . . . . . . . . . . . . . . 34
3.3.3 Xu hướng theo mùa của các đặc trưng . . . . . . . . . . . 37
3.3.4 Ma trận hệ số tương quan giữa các biến . . . . . . . . . . 39
3.4 Xây dựng các mô hình dự đoán . . . . . . . . . . . . . . . . . . . 41
3.4.1 Mục tiêu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.2 Phân chia bộ dữ liệu . . . . . . . . . . . . . . . . . . . . . 41
3.4.3 Chuẩn hóa dữ liệu đầu vào cho mô hình . . . . . . . . . . 42
3.4.4 Huấn luyện mô hình . . . . . . . . . . . . . . . . . . . . . 42
3.5 Lựa chọn và tối ưu mô hình . . . . . . . . . . . . . . . . . . . . . 44
3.5.1 Lựa chọn biến đặc trưng . . . . . . . . . . . . . . . . . . . 45
3.5.2 Tối ưu siêu tham số bằng BayesSearchCV . . . . . . . . . 47
3.5.3 Early stopping . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6 Đánh giá và nhận xét . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.6.1 Báo cáo đánh giá về mô hình . . . . . . . . . . . . . . . . 49
3.6.2 Biểu đồ độ mất mát và độ lỗi . . . . . . . . . . . . . . . . 51
3.6.3 Đường cong ROC và chỉ số AUC . . . . . . . . . . . . . . 52
3.6.4 Nhận xét . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Tổng kết 54
1

Danh sách hình vẽ

1.1 Học kết hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6


1.2 Quá trình học đóng gói . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Quá trình học tăng cường . . . . . . . . . . . . . . . . . . . . . . 8

2.1 Mô tả cây quyết định . . . . . . . . . . . . . . . . . . . . . . . . . 9


2.2 Tham số max_dept . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Tham số min_samples_split . . . . . . . . . . . . . . . . . . . . . 12
2.4 Mô tả rừng ngẫu nhiên . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Ma trận nhầm lẫn . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Chỉ số đánh giá mô hình phân loại ROC - AUC . . . . . . . . . . 22
2.7 Biểu đồ Error and Loss Log . . . . . . . . . . . . . . . . . . . . . 23

3.1 Thu thập dữ liệu từ nguồn website . . . . . . . . . . . . . . . . . 25


3.2 Quá trình thu thập dữ liệu . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Địa điểm ghi nhận các quan trắc thời tiết . . . . . . . . . . . . . 26
3.4 Dữ liệu được thu thập . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5 Hợp nhất các tệp dữ liệu thành một . . . . . . . . . . . . . . . . . 28
3.6 Loại bỏ đi những bản ghi chứa nhiều giá trị thiếu . . . . . . . . . 29
3.7 Số lượng và tỉ lệ dữ liệu bị thiếu ở các cột . . . . . . . . . . . . . 29
3.8 Xử lý dữ liệu thời gian . . . . . . . . . . . . . . . . . . . . . . . . 30
3.9 Thêm 2 cột dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.10 Kiếm tra lại dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.11 Phân bố biến mục tiêu . . . . . . . . . . . . . . . . . . . . . . . . 34
2

3.12 Phân phối lượng mưa . . . . . . . . . . . . . . . . . . . . . . . . . 35


3.13 Phân phối tốc độ gió trung bình ở 2m . . . . . . . . . . . . . . . 35
3.14 Phân phối độ ẩm riêng ở 2m . . . . . . . . . . . . . . . . . . . . . 35
3.15 Phân phối nhiệt độ bề mặt trái đất . . . . . . . . . . . . . . . . . 35
3.16 Sự thay đổi tốc độ gió ở các độ cao . . . . . . . . . . . . . . . . . 36
3.17 Lượng mưa trung bình một ngày hàng năm . . . . . . . . . . . . 37
3.18 Lượng mưa trung bình một ngày theo từng tháng . . . . . . . . . 37
3.19 Nhiệt độ không khí cao nhất và thấp nhất theo thời gian . . . . . 38
3.20 Ma trận hệ số tương quan giữa các biến . . . . . . . . . . . . . . 39
3.21 Phân chia tập dữ liệu train/test/validation . . . . . . . . . . . . . 42
3.22 Dữ liệu sau khi chuẩn hóa . . . . . . . . . . . . . . . . . . . . . . 42
3.23 Báo cáo tổng quan từng mô hình . . . . . . . . . . . . . . . . . . 43
3.24 Mức độ quan trọng của các biến với mô hình theo thứ tự giảm dần 45
3.25 Duyệt qua các ngưỡng của độ quan trọng và lựa chọn biến đặc trưng 46
3.26 Độ chính xác trên tập dữ liệu train và test . . . . . . . . . . . . . 46
3.27 Siêu tham số được lựa chọn . . . . . . . . . . . . . . . . . . . . . 47
3.28 Độ chính xác của mô hình trên các tập dữ liệu . . . . . . . . . . . 47
3.29 Sử dụng kỹ thuật early stopping để giảm học quá khớp . . . . . . 48
3.30 Báo cáo chi tiết mô hình XGBoost . . . . . . . . . . . . . . . . . 49
3.31 Biểu đồ độ mất mát và độ lỗi . . . . . . . . . . . . . . . . . . . . 51
3.32 Đường cong ROC và chỉ số AUC . . . . . . . . . . . . . . . . . . 52
3

Mở đầu

Vấn đề thực tế và lý do chọn đề tài

Dự báo thời tiết đóng một vai trò quan trọng trong quản lý tài nguyên tự
nhiên, sản xuất nông nghiệp, đảm bảo an toàn và sự ổn định của đời sống xã
hội. Đặc biệt trong những năm gần đây, khí hậu thay đổi theo chiều hướng rất
khắc nghiệt, vì vậy việc nâng cao khả năng dự báo thời tiết trở thành một ưu
tiên hàng đầu để ứng phó với những thách thức mới và đối mặt với biến đổi khí
hậu. Chính vì những lý do trên, em đã lựa chọn đề tài "Ứng dụng mô hình
học máy cho bài toán dự báo thời tiết" để áp dụng những kiến thức về học
máy cho bài toán dự báo thời tiết với mục đích hỗ trợ dự đoán, cảnh báo những
thay đổi bất thường của thời tiết để ứng phó với những thảm họa thiên nhiên có
thể xảy ra.

Mục tiêu và nội dung nghiên cứu

Mục tiêu của em khi thực hiện đồ án này là có thể xây dựng được mô hình
học máy có khả năng dự đoán lượng mưa của một ngày tiếp theo dựa trên dữ
liệu đầu vào về các chỉ số thời tiết của khu vực miền Trung Việt Nam. Đây là
khu vực quanh năm bị ảnh hưởng bởi thiên tai, bão lũ khiến đời sống nhân dân
nơi đây gặp muôn vàn khó khăn. Nội dung nghiên cứu của em sẽ tập trung vào
việc xây dựng và đánh giá các mô hình học máy trên dữ liệu thời tiết, lựa chọn
mô hình học máy phù hợp sau đó tối ưu hóa và đào tạo mô hình để dự báo lượng
mưa một cách hiệu quả.
4

Lời cảm ơn
Em xin chân thành cảm ơn các Thầy, Cô Giảng viên tại Khoa Toán - Tin Đại
học Bách khoa Hà Nội. Thầy, Cô đã giúp em trang bị những kiến thức để có thể
hoàn thành đồ án. Qua quá trình thực hiện nghiên cứu, bản thân em cũng đã
học được rất nhiều điều cả về kiến thức chuyên môn cũng như các kỹ năng mềm
cần thiết khác để phục vụ học tập và công việc.
Đặc biệt em xin gửi lời cảm ơn sâu sắc đến ThS. Lê Quang Hòa. Thầy là
người đã trực tiếp hướng dẫn em nghiên cứu đề tài này.
Em xin trân trọng cảm ơn!
5

Chương 1

Kiến thức cơ sở

1.1 Học máy

Học máy là một lĩnh vực trong trí tuệ nhân tạo nghiên cứu và phát triển các
phương pháp và thuật toán mà máy tính có thể sử dụng để tự học từ dữ liệu.
Mục tiêu của học máy là phát triển các mô hình và hệ thống có khả năng tự cải
thiện và tự điều chỉnh dựa trên kinh nghiệm.
Có hai loại chính của học máy:

• Học máy giám sát: Trong loại này, mô hình được huấn luyện trên một tập
dữ liệu mà mỗi ví dụ điển hình được đánh nhãn. Mục tiêu là dự đoán hoặc
phân loại các dữ liệu mới dựa trên những gì mô hình đã học từ tập dữ liệu
huấn luyện.

• Học máy không giám sát: Ở đây, mô hình được huấn luyện trên một tập dữ
liệu không có nhãn hoặc không có thông tin đánh giá nào trước. Mục tiêu
là khám phá cấu trúc, quy luật hoặc mối quan hệ trong dữ liệu mà không
có sự hướng dẫn cụ thể.

Học máy đã đóng vai trò quan trọng trong nhiều lĩnh vực, bao gồm nhận dạng
giọng nói, xử lý ngôn ngữ tự nhiên, thị giác máy tính, dự đoán tài chính, y tế và
nhiều lĩnh vực khác.
6

1.2 Học kết hợp

Học kết hợp là một kỹ thuật kết hợp nhiều mô hình học máy để cải thiện hiệu
suất dự đoán tổng thể. Ý tưởng cơ bản là một nhóm mô hình học máy yếu có
thể tập hợp lại với nhau để tạo thành một mô hình học máy tốt hơn. Mô hình
học kết hợp thường bao gồm 2 bước:

• Đào tạo nhiều mô hình học máy.

• Dự đoán của các mô hình được tổng hợp để đưa ra dự đoán tốt hơn.

Hình 1.1: Học kết hợp

1.2.1 Học đóng gói

Học đóng gói hay còn gọi là Bagging, là một phương pháp học kết hợp được
sử dụng để cải thiện độ chính xác của các mô hình học máy. Học đóng gói là
một phương pháp tổng hợp bao gồm đào tạo nhiều mô hình một cách độc lập
trên tập con ngẫu nhiên của dữ liệu và tổng hợp các dự đoán của chúng thông
qua bỏ phiếu hoặc lấy kết quả trung bình.
7

Hình 1.2: Quá trình học đóng gói

Cụ thể, mỗi mô hình được huấn luyện trên một tập hợp con ngẫu nhiên của
dữ liệu được lấy mẫu thay thế, nghĩa là các điểm dữ liệu riêng lẻ có thể được
chọn nhiều lần. Tập hợp con ngẫu nhiên này được gọi là mẫu boostrap. Bằng
cách đào tạo các mô hình liên quan đến các mẫu boostrap khác nhau, việc đóng
gói làm giảm sự khác biệt của các mô hình riêng lẻ, nó cũng tránh việc học quá
khớp bằng cách hiển thị các mô hình cấu thành cho các thành phần khác nhau
của tập dữ liệu.
Các dự đoán từ tất cả các mô hình được lấy mẫu sau đó được kết hợp thông
qua phép tính trung bình đơn giản để đưa ra dự đoán tổng thể hoặc bỏ phiếu
để lựa chọn mô hình con tốt nhất. Bằng cách này, mô hình tổng hợp các điểm
mạnh của từng điểm riêng lẻ và loại bỏ các lỗi của chúng.
Học đóng gói được sử dụng để làm giảm phương sai của mô hình dự đoán.
Việc đóng gói tránh tình trạng quá khớp dữ liệu và được sử dụng cho cả mô hình
hồi quy và phân loại, đặc biệt cho các thuật toán cây quyết định.
8

1.2.2 Học tăng cường

Học tăng cường là một phương pháp học kết hợp phổ biến khác thường được
so sánh với đóng gói. Sự khác biệt chính nằm ở cách đào tạo các mô hình thành
phần. Trong quá trình học tăng cường, các mô hình được huấn luyện tuần tự,
mỗi mô hình học hỏi từ các lỗi của mô hình trước đó.

Hình 1.3: Quá trình học tăng cường

Đầu tiên, một mô hình được xây dựng từ dữ liệu huấn luyện. Sau đó, mô hình
thứ hai được xây dựng để cố gắng sửa các lỗi có trong mô hình đầu tiên. Quy
trình này được tiếp tục và các mô hình được thêm vào cho đến khi bộ dữ liệu
huấn luyện hoàn chỉnh được dự đoán chính xác hoặc số lượng mô hình con tối
đa được thêm vào.
9

Chương 2

Cây quyết định và các thuật toán


cải tiến

2.1 Cây quyết định

Cây quyết định hay còn gọi là Decision Tree, là một thuật toán học máy có
giám sát được sử dụng cho cả những bài toán phân loại và hồi quy. Chúng được
sử dụng rộng rãi và có nhiều ứng dụng thực tế trong bối cảnh ngày nay. Cây
quyết định có thể được biểu diễn dưới dạng cây lộn ngược.

Hình 2.1: Mô tả cây quyết định


10

2.1.1 Một số khái niệm cơ bản về cây quyết định

• Root node: Là điểm bắt đầu của cây quyết định, đây là nút đầu tiên tạo
nên nền tảng của toàn bộ cây. Nó được tạo thành bằng cách chia tập dữ
liệu trên một điều kiện liên quan đến một tính năng cụ thể.

• Decison node: Là nút quyết định, chúng kiểm tra tập dữ liệu trên một tính
năng cụ thể và chia dữ liệu thành hai hoặc nhiều tập con dựa trên kết quả
của tập kiểm tra. Mỗi tập con có thể được chia thành nhiều tập con hơn
bằng một thử nghiệm khác ở nút tiếp theo. Các nút quyết định thể hiện các
quy tắc quyết định được sử dụng để phân loại hoặc hồi quy tập dữ liệu.

• Termial node: hay còn gọi là nút lá. Các nút lá là các nút dưới cùng của cây
tạo nên kết quả cuối cùng. Chúng chứa một lớp hoặc giá trị hồi quy. Sau
khi tập dữ liệu được phân chia dựa trên một quy tắc hoặc một điều kiện cụ
thể, kết quả phân loại hoặc hồi quy sẽ thu được ở các nút lá này.

2.1.2 Tiêu chí đánh giá

Xác định tiêu chí được sử dụng để đo lường chất lượng phân tách của cây
quyết định.
Gini
Chỉ số Gini là thước đo chất lượng phân tách được sử dụng bởi thuật toán
cây quyết định. Chỉ số này giúp đánh giá mức độ đồng nhất (chứa các ví dụ từ
các lớp khác nhau) của một tập dữ liệu. Chỉ số Gini tính toán tính đồng nhất
của một nút khi nó được phân chia bằng cách sử dụng một tính năng và giá trị
ngưỡng cụ thể. Lý tưởng nhất là chỉ số Gini của nút bằng 0, biểu thị rằng tất cả
các mẫu thuộc về cùng một lớp. Chỉ số Gini càng thấp thì sự phân chia càng tốt
vì nó thể hiện tính đồng nhất cao hơn.
n
X
Gini = 1 − p2i (2.1)
i=1

Trong đó:
11

• n là số lớp phân loại.

• pi là tỉ lệ phần trăm của lớp i trong tổng số mẫu.

Emtropy
Từ một góc độ tổng quát, có thể định nghĩa Emtropy là thước đo mức độ
nhiễu của một hệ thống. Trong trường cụ thể của thuật toán cây quyết định,
Entropy là thước đo tạp chất trong sự phân chia.
n
X
Entropy(S) = − pi log2 (pi ) (2.2)
i=1

Trong đó:

• n là số lớp phân loại.

• pi là tỉ lệ phần trăm của lớp i trong tổng số mẫu.

2.1.3 Các tham số của mô hình

max_dept
Tham số này xác định độ sâu tối đa của cây quyết định. Nó kiểm soát độ sâu
mà cây có thể phát triển, max_dept lớn hơn sẽ tạo ra một cây phức tạp và chi
tiết hơn nhưng có thể làm tăng nguy cơ học quá khớp.

Hình 2.2: Tham số max_dept


12

min_samples_split
Tham số min_samples_split đặt số mẫu tối thiểu cần thiết để phân chia một
nút. Tham số này hạn chế sự phân chia sâu hơn trong cây và có thể giúp giảm
nguy cơ học quá khớp.

Hình 2.3: Tham số min_samples_split

max_features
Tham số max_features là một tham số xác định số lượng đặc trưng tối đa
cần xem xét ở mỗi bước phân tách cây quyết định. Tham số này được sử dụng
để kiểm soát số lượng đặc trưng mà mô hình sẽ xem xét trong mỗi bước phân
chia. Nó đặc biệt hữu ích cho các tập dữ liệu lớn. Giả sử tập dữ liệu có 50 đặc
trưng khác nhau và tham số max_features được đặt là 10. Trước khi phân chia,
mô hình sẽ chọn ngẫu nhiên 10 tính năng và chọn tính năng tốt nhất trong 10
tính năng đó. Tham số này có thể được điều chỉnh để ngăn việc học quá khớp
của mô hình.
class_weight
Tham số class_weight được sử dụng với các mục đích sau:
13

• Cân bằng các lớp trong tập dữ liệu không cân bằng: Nếu một số lớp trong
tập dữ liệu có ít mẫu quan sát hơn các lớp khác, có thể sử dụng trọng số
lớp để gán nhiều trọng số hơn cho các lớp thiểu số, cho phép mô hình học
các lớp này tốt hơn.

• Chú trọng hơn đến các lớp cụ thể: Nếu muốn sử dụng một số lớp nhất định
có tác động lớn hơn đến việc học của mô hình, có thể chỉ định trọng số cao
hơn cho các lớp này.

Thông thường, tham số class_weight được sử dụng theo hai cách:

• class_weight = "balance": Tùy chọn này tự động xác định trọng số của lớp.
Các trọng số được tính tỉ lệ nghịch với tần suất của từng lớp trong tập dữ
liệu. Điều này đảm bảo việc tự động gán trọng số phù hợp khi có sự mất
cân bằng giữa các lớp.

• Đặc tả thủ công class_weight = (0 : 1, 1 : 2): Người dùng có thể đặt trọng
số của các lớp theo cách thủ công. Điều này rất hữu ích, đặc biệt khi ưu
tiên một lớp cụ thể khác hoặc khắc phục tình trạng mất cân bằng dữ liệu.

sample_weight
Tham số sample_weight được sử dụng để xác định tầm quan trọng của từng
điểm dữ liệu riêng lẻ. Ví dụ, khi phát triển mô hình chẩn đoán y tế, có thể tin
rằng việc chẩn đoán cho một số bệnh nhân quan trọng hơn những bệnh nhân
khác. Xem xét các tình huống ví dụ sau:

• Ví dụ 1 (Bệnh nhân A): Bệnh nhân đang trong tình trạng nguy kịch và việc
chẩn đoán chính xác là rất quan trọng.

• Ví dụ 2 (Bệnh nhân B): Anh ấy/cô ấy có tình trạng bệnh ít nguy kịch hơn
và việc chẩn đoán chính xác là quan trọng nhưng không phải là ưu tiên hàng
đầu.

Bằng cách sử dụng sample_weight, có thể gán trọng số cao hơn cho Ví dụ 1,
giúp mô hình chú ý hơn đến việc chẩn đoán các trường hợp nghiêm trọng.
14

2.2 Rừng ngẫu nhiên

Rừng ngẫu nhiên (Random Forest) được xây dựng từ nhiều cây quyết định
(Decision Tree). Một cây quyết định là một cấu trúc cây có nhiều nút, trong đó
mỗi nút đại diện cho một quyết định hoặc một quy tắc. Các lá của cây là các
kết quả dự đoán cuối cùng.
Tuy nhiên, một cây quyết định đơn thường có khả năng học quá khớp với dữ
luyện huấn luyện và không tốt trên dữ liệu mới. Rừng ngẫu nhiên giải quyết vấn
đề này bằng cách xây dựng nhiều cây quyết định ngẫu nhiên và kết hợp kết quả
của chúng. Rừng ngẫu nhiên là thuật toán tiêu biểu cho phương pháp học kết
hợp và cụ thể hơn là học đóng gói giúp cải thiện hiệu suất dự đoán cũng như
giảm nguy cơ học quá khớp.

Hình 2.4: Mô tả rừng ngẫu nhiên

Mỗi cây trong rừng ngẫu nhiên được huấn luyện trên một phần nhỏ và ngẫu
nhiên của dự liệu huấn luyện, mỗi cây đưa ra một dự đoán và dự đoán cuối cùng
sẽ được quyết định bằng cách bỏ phiếu bình chọn hoặc lấy trung bình.
Về cơ bản, rừng ngẫu nhiên sử dụng bộ tham số tương tự với cây quyết định.
15

Tuy nhiên nhiên có một vài tham số riêng cần quan tâm trong quá trình huấn
luyện và sử dụng mô hình:
n_estimators
Đây là một trong những tham số quan trọng nhất của mô hình rừng ngẫu
nhiên, và nó xác định số lượng cây quyết định sẽ được xây dựng trong rừng. Điều
này ảnh hưởng đến khả năng dự đoán của mô hình và cũng có ảnh hưởng đến
thời gian huấn luyện của mô hình.
Một số điểm cần lưu ý:

• Tăng số lượng cây quyết định thường làm tăng độ chính xác của mô hình
trên tập dữ liệu đào tạo. Tuy nhiên, cần lưu ý rằng tăng quá mức có thể
dẫn đến việc tăng thời gian đào tạo và có thể làm giảm hiệu suất trên tập
dữ liệu kiểm tra do học quá khớp.

• Tăng số lượng cây quyết định có thể làm gia tăng đáng kể thời gian đào tạo
và việc sử dụng tài nguyên tính toán.

• Sau một số lượng cây quyết định nhất định, cây thêm mới có thể không cải
thiện hiệu suất mô hình. Việc theo dõi và đánh giá sự hội tụ của hiệu suất
có thể giải quyết vấn đề tối ưu cho n_estimators.

boostrap
Tham số trên xác định liệu mẫu được lấy để huấn luyện cây quyết định con
có được hoàn lại hay không.

• Nếu tham số được đặt là True thì mỗi cây sẽ được huấn luyện trên một tập
mẫu ngẫu hiện được lấy từ tập dữ liệu đào tạo.

• Ngược lại nếu tham số được đặt là False, mỗi cây sẽ được huấn luyện trên
toàn bộ tập dữ liệu đào tạo, không sử dụng bootstrap sampling. Điều này có
thể dẫn đến việc mỗi cây sẽ thấy toàn bộ tập dữ liệu và không có sự trùng
lặp giữa các mẫu đào tạo của các cây khác nhau.
16

2.3 Cây quyết định tăng cường độ dốc

Tăng cường độ dốc hay Gradient Boosting, là một trong những thuật toán
học máy phổ biến nhất. Ý tưởng chính của việc tăng cường là xây dựng các yếu
tố dự đoán yếu sau đó sử dụng thông tin của các yếu tố dự đoán được xây dựng
trước đó để nâng cao hiệu suất của mô hình.
Để tăng cường độ dốc, các yếu tố dự đoán này là cây quyết định. So với rừng
ngẫu nhiên, độ sâu của cây quyết định được sử dụng thường nhỏ hơn rất nhiều
trong việc tăng cường độ dốc. Điều này rất quan trọng vì các cây riêng lẻ có thể
dễ dàng khớp dữ liệu quá mức và trong khi rừng ngẫu nhiên giải quyết vấn đề
này bằng cách lấy trung bình dự đoán của tất cả các cây riêng lẻ, tăng cường độ
dốc được xây dựng dựa trên kết quả của cây được xây dựng trước đó. Do đó,
các cây được trang bị quá mức riêng lẻ có thể có tác dụng lớn trong việc tăng
cường độ dốc. Do độ sâu nhỏ, các cây riêng lẻ được xây dựng trong quá trình
tăng cường độ dốc có thể sẽ có độ lệch lớn hơn.

Thuật toán tăng cường độ dốc có thể được mô tả qua các bước sau đây:
Tập huấn luyện {(xi , yi )}ni=1 , với một hàm mất mát khả vi L(yi , F (x)), số lần
lặp là M.
Bước 1: Khởi tạo mô hình và đưa ra dự đoán ban đầu:
n
X
F0 (x) = arg min L(yi , γ) (2.3)
γ
i=1

Bước 2: Lặp lại các bước với m từ 1 đến M

• Tính toán sai số cho từng mẫu bằng cách lấy đạo hàm của hàm mất mát
đối với giá trị dự đoán:
 
∂L(yi , F (xi ))
rim =− i = 1...n (2.4)
∂F (xi ) F (x)=Fm−1 (x)

Chỉ số dưới F (x) = Fm−1 (x) biểu thị rằng các giá trị của cây trước đó được
sử dụng để dự đoán lỗi của cây hiện tại. Nói tóm lại lỗi của một mẫu là sự
khác biệt giữa giá trị quan sát được và giá trị dự đoán ở cây trước đó.
17

• Sử dụng trình học cơ sở (có thể là cây quyết định) để dự đoán thành phần
mất mát hm (x), tức là dự đoán hàm mất mát bằng cách sử dụng tập huấn
luyện {(xi , rim )}ni=1 .

• Tính hệ số nhân bằng cách giải bài toán tối ưu một chiều:
n
X
γm = arg min L (yi , Fm−1 (xi ) + γhm (xi )) (2.5)
γ
i=1

• Cập nhật mô hình:

Fm (x) = Fm−1 (x) + γm hm (x) (2.6)

Bước 3: Kết quả đầu ra: FM (x)

Các tham số của mô hình

• n_estimators: Tham số này xác định số lượng cây quyết định mà mô hình
sẽ sử dụng trong quá trình huấn luyện.

• learning_rate: quy định tốc độ học của mô hình. Tham số này xác định đến
mức độ mà mô hình được cập nhật dựa trên độ lỗi của các dự đoán trước
đó.

• max_dept: Khi xây dựng một cây quyết định, mô hình sẽ tách dữ liệu thành
các nhóm (hoặc nút) dựa trên các đặc trưng, max_depth kiểm soát đến độ
sâu mà cây có thể phát triển.

• min_samples_split: Khi xây dựng cây, một nút có thể được chia tách
thành các nhánh con nếu số lượng mẫu tại nút đó vượt qua giới hạn
được xác định bởi min_samples_split. Nếu số lượng mẫu tại nút là ít hơn
min_samples_split, quá trình chia tách sẽ dừng lại và nút đó trở thành một
nút lá và không thể chia thêm.
18

Một số thuật toán cải tiến dựa trên tăng cường độ dốc

• XGBoost: Một thư viện mở rộng của Gradient Boosting, nổi tiếng với hiệu
suất và tốc độ cao. Hỗ trợ nhiều tính năng như kiểm soát quá mức, xử lý
giá trị thiếu và tối ưu hóa hàm mất mát.

• LightGBM: Một thuật toán tăng cường độ dốc sử dụng quy hoạch bin, được
thiết kế để tối ưu hóa việc xây dựng cây quyết định và hỗ trợ xử lý dữ liệu
lớn.

• CatBoost: Một thuật toán tăng cường độ dốc được tối ưu hóa cho dữ liệu
hạng mục, tự động xử lý các biến hạng mục mà không cần mã hóa trước.

2.4 Các phương pháp đánh giá mô hình học máy phân
lớp

Mô hình phân lớp đóng vai trò quan trọng trong nhiều ứng dụng học máy, nơi
chúng được sử dụng để dự đoán lớp hoặc nhóm mà một quan sát nào đó thuộc
về. Để đảm bảo mô hình hoạt động hiệu quả và có khả năng tổng quát hóa, các
phương pháp đánh giá chặt chẽ là cần thiết. Dưới đây là một số phương pháp
quan trọng để đánh giá mô hình phân lớp.

2.4.1 Ma trận nhầm lẫn (Confusion Matrix)

Khi thực hiện dự đoán phân loại, có bốn kết quả có thể xảy ra:

• True Positives (TP): Dự đoán đúng rằng một quan sát thuộc về một lớp và
thực tế nó cũng thuộc về lớp đó.

• True Negatives (TN): Dự đoán đúng rằng một quan sát không thuộc về một
lớp và thực tế nó cũng không thuộc về lớp đó.

• False Positives (FP): Dự đoán sai rằng một quan sát thuộc về một lớp trong
khi thực tế nó không thuộc về lớp đó.
19

• False Negatives (FN): Dự đoán sai rằng một quan sát không thuộc về một
lớp trong khi thực tế nó thuộc về lớp đó.

Bốn kết quả trên được biểu diễn qua ma trận nhầm lẫn. Ma trận nhầm lẫn là
một công cụ mạnh mẽ giúp hiểu rõ hiệu suất của mô hình phân lớp. Ma trận
này thể hiện sự so sánh giữa dự đoán của mô hình và thực tế. Bằng cách phân
loại dự đoán thành các ô như True Positives, True Negatives, False Positives và
False Negatives, chúng ta có thể tính toán các chỉ số quan trọng như độ chính
xác, độ nhạy, độ chính xác dương tính và độ chính xác tiêu cực.
Dưới đây là ví dụ về ma trận nhầm nhẫn của một mô hình phân loại đa lớp.

Hình 2.5: Ma trận nhầm lẫn

2.4.2 Độ đo Accuracy, Precision, Recall và F1 Score

Các độ đo như Accuracy, Precision, Recall và F1 Score cung cấp cái nhìn sâu
sắc hơn vào hiệu suất của mô hình
Accuracy
Accuracy là một thước đo để đánh giá hiệu suất của mô hình phân loại và đo
lường tỉ lệ dự đoán đúng so với tổng số lượng mẫu. Công thức tính accuracy như
sau:
20

Số lượng dự đoán đúng


Accuracy = (2.7)
Tổng số mẫu
Precision và Recall
Precision đo lường tỷ lệ của các trường hợp dự đoán đúng tích cực (True
Positives) so với tổng số các trường hợp được dự đoán là tích cực (True Positives
và False Positives)

True Positives
P recision = (2.8)
True Positives + False Positives
Recall đo lường tỷ lệ của các trường hợp dự đoán đúng tích cực (True
Positives) so với tổng số các trường hợp thực sự là tích cực (True Positives +
False Negatives).

True Positives
Recall = (2.9)
True Positives + False Negatives
F1 Score
F1 Score là một thước đo kết hợp giữa Precision và Recall, được tính thông
qua trung bình điều hòa của hai giá trị này. Thường được áp dụng khi muốn
đồng thời đánh giá cả độ chính xác và độ nhạy của một mô hình phân loại.
Khi cả Precision và Recall đều có ý nghĩa quan trọng và không muốn ưu tiên
một yếu tố nào hơn yếu tố kia, F1 Score trở thành lựa chọn hữu ích. Thay vì
đặt sự chú ý lên một khía cạnh cụ thể, F1 Score tập trung vào việc cân nhắc cả
hai khía cạnh này đồng thời, tạo ra một con số đồng thời phản ánh độ chính xác
và độ phủ của mô hình.

2 x Precision x Recall
F 1-Score = (2.10)
Precision + Recall
21

2.4.3 Đường cong ROC và chỉ số AUC

Đường cong ROC


Đường cong ROC (Receiver Operating Characteristic) là một biểu đồ cho thấy
hiệu suất của mô hình phân loại ở tất cả các ngưỡng phân loại. Đường cong thể
hiện hai tham số:

• Tỉ lệ dương tính thật thực (TPR)


True Positives
TPR = (2.11)
True Positives + False Negatives

• Tỉ lệ dương tính giả (FPR)


False Positives
TPR = (2.12)
False Positives + True Negatives

Đường cong ROC biểu diễn sự đối lập giữa tỷ lệ True Positives (TPR) và tỷ
lệ False Positives (FPR) ở các ngưỡng quyết định khác nhau. Đường cong ROC
thường vẽ giữa giá trị 0 và 1 trên cả hai trục, với đường chéo từ gốc (0,0) đến
điểm (1,1) đại diện cho mô hình phân loại ngẫu nhiên. Một mô hình phân loại
tốt sẽ có đường cong ROC nằm gần phía trên bên trái của đường chéo. Khi diện
tích dưới đường cong ROC lớn, điều này chỉ ra rằng mô hình có khả năng phân
loại tốt ở mức độ độ nhạy và độ chính xác cao.
AUC
AUC là viết tắt của "Area under ROC Curve". Nó cung cấp một phép đo
tổng hợp về hiệu suất trên tất cả các ngưỡng phân loại có thể có. AUC đo lường
hiệu suất tổng thể của mô hình phân loại nhị phân. Vì cả TPR và FPR đều nằm
trong khoảng từ 0 đến 1, nên diện tích sẽ luôn nằm trong khoảng từ 0 đến 1 và
giá trị AUC càng lớn biểu thị hiệu suất mô hình tốt hơn. Mục tiêu chính khi
huấn luyện mô hình là tối đa hóa khu vực này để có TPR cao nhất và FPR thấp
nhất ở ngưỡng nhất định. AUC đo lường xác suất mà mô hình sẽ chỉ định một
trường hợp tích cực được chọn ngẫu nhiên có xác suất dự đoán cao hơn so với
trường hợp tiêu cực được chọn ngẫu nhiên.
22

Hình 2.6: Chỉ số đánh giá mô hình phân loại ROC - AUC

2.4.4 Độ mất mát và độ lỗi

Log Loss (Mất mát Logarithmic)


Log Loss là một thước đo độ không chắc chắn của mô hình phân loại. Nó tính
toán mức độ không chắc chắn của mô hình dự đoán so với thực tế. Giá trị Log
Loss càng thấp, mô hình càng tự tin và chính xác. Log Loss được đo lường trên
dự đoán xác suất của mô hình cho từng lớp. Công thức chung cho một điểm dữ
liệu là:

N M
1 XX
Log Loss = − yij log(pij ) (2.13)
N i=1 j=1

Trong đó:

• N là số lượng điểm dữ liệu.

• M là số lớp.

• yij là biến nhị phân cho việc xác định xem điểm dữ liệu i thuộc lớp j hay
không.

• pij là xác suất mà mô hình dự đoán cho điểm dữ liệu i thuộc lớp j.
23

Error (Độ lỗi)


Độ lỗi đo lường tỷ lệ giữa số lượng dự đoán sai và tổng số lượng dự đoán. Nó
là một thước đo đơn giản nhưng hữu ích để hiểu mức độ chính xác của mô hình.
Giá trị Error càng nhỏ càng tốt, vì Error đo lường tỷ lệ giữa số lượng dự đoán
sai và tổng số lượng dự đoán. Mục tiêu là giảm độ lỗi càng nhiều càng tốt để mô
hình dự đoán chính xác hơn. Độ lỗi được tính bằng công thức:

Tổng số dự đoán sai


Error = (2.14)
Tổng số lượng dự đoán
Độ mất mát và độ lỗi thường được theo dõi qua biểu đồ như sau:

• Biểu đồ Error theo dõi sự thay đổi của độ lỗi trên tập train và tập validation
theo các epochs.

• Biểu đồ Loss theo dõi sự thay đổi của độ mất mát trên tập train và tập
validation theo các epochs.

Hình 2.7: Biểu đồ Error and Loss Log


24

Chương 3

Ứng dụng cho bài toán dự báo thời


tiết

3.1 Bộ dữ liệu

3.1.1 Thu thập dữ liệu

Dữ liệu là một phần cực kì quan trọng đối với bất kì một bài toán học máy
nào và quá trình thu thập, xử lý dữ liệu cũng chiếm một khoảng thời gian khá
lớn trong một dự án. Dữ liệu có thể đến từ nhiều nguồn, nhiều định dạng khác
nhau. Tuy nhiên, cần xác định được rõ nguồn gốc của bộ dữ liệu, cấu trúc dữ
liệu sao cho phù hợp với yêu cầu bài toán đặt ra.
Dữ liệu được sử dụng trong bài toán trên được thu thập tự nguồn website:
https://power.larc.nasa.gov/data-access-viewer/ bằng một chương trình được
viết bằng ngôn ngữ Python.
Đây là một website được phát triển bới NASA - cơ quan hàng không vũ trụ
của Hoa Kỳ, website cung cấp các tập dữ liệu về năng lượng mặt trời và khí hậu
từ các nghiên cứu để hỗ trợ cho các nhu cầu về năng lượng tái tạo, khí tượng
thủy văn và nhu cầu nông nghiệp.
25

Hình 3.1: Thu thập dữ liệu từ nguồn website

Thư viện selenium được sử dụng để tự động hóa quá trình duyệt web và lấy
dữ liệu về một cách tự động.

Hình 3.2: Quá trình thu thập dữ liệu


26

3.1.2 Tổng quan về bộ dữ liệu

Bộ dữ liệu chứa những quan sát về các chỉ số thời tiết được ghi nhận từ 40
địa điểm khác nhau thuộc khu vực thượng lưu và hạ lưu sông Cả từ 1/1/2000 -
24/10/2023. Đây là khu vực có thời tiết phức tạp, khắc nghiệt, quanh năm lũ
lụt gây ảnh hưởng nặng nề đến đời sống nhân dân và kinh tế khu vực.

Hình 3.3: Địa điểm ghi nhận các quan trắc thời tiết

Hình 3.4: Dữ liệu được thu thập


27

Một vài thuộc tính quan trọng của dữ liệu

Tên thuộc tính Mô tả Đơn vị


LAT Vĩ độ của địa điểm quan sát
LON Vĩ độ của địa điểm quan sát
YEAR Năm
DOY Ngày trong năm (từ 1-366)
TS Nhiệt độ bề mặt trái đất °C
T2M Nhiệt độ ở 2m °C
T2M_MAX Nhiệt độ tối đa ở 2m °C
T2M_MIN Nhiệt độ tối thiểu ở 2m °C
... ... ...
PRECTOTCORR Lượng mưa mm/ngày
PS Áp suất bề mặt kPa
ALLSKY_KT Chỉ số độ trong của toàn bộ bầu trời
QV2M Độ ẩm riêng ở mức 2m g/kg
RH2M Độ ẩm tương đối ở mức 2m g/kg
... ... ...
WS2M Tốc độ gió trung bình ở 2m m/s
WS10M Tốc độ gió trung bình ở 10m m/s
WS50M Tốc độ gió trung bình ở 50m m/s
WS10M_MAX Tốc độ gió tối đa ở 10m m/s
WS10M_MIN Tốc độ gió tối thiểu ở 10m m/s
... ... ...

Nhận xét: Dữ liệu thu được gồm 48 tập tin csv khác nhau chứa các thông
tin cần thiết. Tổng cộng bao gồm 347920 quan sát và 35 biến liên quan đến thời
tiết.
28

3.2 Tiền xử lý dữ liệu

Dữ liệu sau khi thu thập cần được xử lý trước khi sử dụng cho mô hình để
loại bỏ đi dữ liệu thiếu, dữ liệu không nhất quán hay những giá trị sai lệch gây
mất cân bằng bộ dữ liệu, tạo đầu vào tốt nhất để huấn luyện mô hình học máy.

3.2.1 Tổng hợp dữ liệu

Từ những tệp dữ liệu thu thập được, hợp nhất thành một tập dữ liệu duy
nhất để tiến hành xử lý ở các bước tiếp theo.

Hình 3.5: Hợp nhất các tệp dữ liệu thành một

3.2.2 Xử lý các dữ liệu bị thiếu

Xử lý dữ liệu bị thiếu ở các hàng


Dữ liệu bị thiếu ở tập dữ liệu được quy định là "-999.0". Có một số bản ghi
thiếu số lượng thuộc tính tương đối lớn, nên ở đây ta sẽ lọc và xóa đi những bản
ghi mà số giá trị bị thiếu chiếm trên 80%.
29

Hình 3.6: Loại bỏ đi những bản ghi chứa nhiều giá trị thiếu

Xử lý dữ liệu bị thiếu ở các cột

Hình 3.7: Số lượng và tỉ lệ dữ liệu bị thiếu ở các cột

• Loại bỏ đi những cột CLRSKY_SFC_SW_DWN, ALLSKY_KT, ALL-


SKY_SFC_PAR_TOT, CLRSKY_SFC_PAR_TOT,ALLSKY_SFC_UVA,
ALLSKY_SFC_UVB,ALLSKY_SFC_UV_INDEX.

• Thay thế các dữ liệu bị thiếu của các cột còn lại bằng giá trị trung bình dữ
liệu của cột.
30

3.2.3 Xử lý dữ liệu thời gian

Trong bộ dữ liệu thu thập được, biến YEAR chỉ năm ghi nhận quan sát, biến
DOY chỉ ngày trong năm ghi nhận quan sát, ví dụ ngày đầu tiên trong năm
là 1/1, giá trị của biến DOY sẽ là 1, ngày 31/12 là ngày cuối cùng trong năm,
giá trị của biến DOY sẽ là 365 (với năm không nhuận) và 366 (với năm nhuận).
Kiểu dữ liệu trên không thuận tiện trong việc xử lý dữ liệu cũng như xây dựng
mô hình nên cần phải chuyển về định dạng dễ sử dụng hơn cho việc phân tích và
huấn luyện mô hình.

Hình 3.8: Xử lý dữ liệu thời gian

3.2.4 Chuẩn bị dữ liệu cho yêu cầu cụ thể của bài toán

Trong nhiều trường hợp, dữ liệu thu được có thể chưa phù hợp hoàn toàn với
yêu cầu cụ thể cần thực hiện. Khi đó bước chuẩn bị dữ liệu sao cho phù hợp là
vô cùng quan trọng.
Bài toán đặt ra yêu cầu xây dựng mô hình phân lớp để dự đoán xu hướng
mưa của ngày hôm sau dựa trên dữ liệu đầu vào.
Dựa theo dữ liệu tham khảo từ những nguồn uy tín (Tổng Cục Khí tượng
Thủy văn, Dự báo thời tiết...), có thể phân loại lượng mưa như sau:
31

Phân loại mưa Lượng mưa/24h Kí hiệu Gán nhãn


Không mưa 0 mm no_rain 0
Mưa nhỏ Dưới 6mm small_rain 1
Có Mưa 6mm - dưới 16mm rain 2
Mưa vừa 16mm - dưới 50mm moderate_rain 3
Mưa to 50mm - dưới 100mm heavy_rain 4
Cảnh báo trên 100mm warning 5

Tạo 2 cột dữ liệu mới:

• PRECTOTCORR_TODAY: Chứa dữ liệu lượng mưa của ngày hiện tại đã


phân loại và gán nhãn.

• PRECTOTCORR_1_DAY_AFTER: Chứa dữ liệu lượng mưa của ngày


sau đã phân loại và gán nhãn.

Hình 3.9: Thêm 2 cột dữ liệu


32

3.2.5 Kiểm tra lại dữ liệu

Sau quá trình tiền xử lý, dữ liệu còn 345960 bản ghi, 32 cột chứa các thuộc
tính liên quan và kiểu dữ liệu đã phù hợp để sử dụng cho quá trình huấn luyện
mô hình.

Hình 3.10: Kiếm tra lại dữ liệu


33

3.3 Khám phá dữ liệu

Khám phá dữ liệu (Exploratory Data Analysis - EDA) là quá trình phân tích
và tìm hiểu về dữ liệu một cách tổng quan để hiểu rõ hơn về đặc điểm, mối quan
hệ và tính chất của dữ liệu. Trong bài toán học máy, khám phá dữ liệu đóng vai
trò quan trọng cho việc chuẩn bị dữ liệu cho huấn luyện mô hình. Các hoạt động
khám phá dữ liệu bao gồm:

• Khám phá tổng quan về dữ liệu: Đầu tiên, khám phá dữ liệu bao gồm việc
hiểu cấu trúc tổng thể của bộ dữ liệu, kiểm tra và xử lý giá trị thiếu.

• Kiểm tra phân phối các lớp của biến phân loại mục tiêu. Nếu xảy ra hiện
tượng mất cân bằng dữ liệu, cần có phương án điều chỉnh.

• Khám phá phân phối của các đại lượng bằng biểu đồ histogram, biểu boxplot.

• Trực quan hóa dữ liệu để xem đặc điểm của dữ liệu cũng như các xu thế
theo mùa của dữ liệu.

• Kiểm tra mối tương quan giữa các biến độc lập và biến mục tiêu.

Quá trình khám phá dữ liệu này giúp tạo ra một cái nhìn từ tổng quan tới
chi tiết về tính chất và đặc điểm của dữ liệu, từ đó hỗ trợ quá trình xử lý và lựa
chọn mô hình học máy phù hợp.
34

3.3.1 Biến mục tiêu

Tính toán số lượng phân bố các lớp của biến mục tiêu, kết quả cho thấy có sự
mất cân bằng khá đáng kể giữa các lớp.

Hình 3.11: Phân bố biến mục tiêu

Sự mất cân bằng dữ liệu có thể ảnh hưởng không tốt đến mô hình dự đoán.
Vì vậy trong quá trình huấn luyện mô hình, cần chú ý để giảm thiểu sự ảnh
hưởng từ dữ liệu mất cân bằng đến kết quả dự đoán.

3.3.2 Phân phối một số biến đặc trưng

Xem xét phân phối một số đặc trưng thời tiết thông qua biểu đồ histogram
và biểu đồ boxplot để có cái nhìn toàn diện về phân phối cũng như xu hướng
của thời tiết.
Biểu đồ histogram giúp hiểu rõ hơn về tần suất xuất hiện của các giá trị trong
mỗi đặc trưng, trong khi biểu đồ boxplot cung cấp thông tin về phân phối, giá
trị trung bình, median và sự biến động của dữ liệu.
35

Hình 3.12: Phân phối lượng mưa

Hình 3.13: Phân phối tốc độ gió trung bình ở 2m

Hình 3.14: Phân phối độ ẩm riêng ở 2m

Hình 3.15: Phân phối nhiệt độ bề mặt trái đất


36

• Phân phối lượng mưa: Dựa trên biểu đồ cho thấy lượng mưa trung bình là
4.31mm và tập trung chủ yếu vào khoảng từ 0 - 10mm trên một ngày, hầu
hết các ngày không mưa hoặc có lượng mưa tập trung ở mức thấp. Có một
số lượng mưa đáng kể hơn được thể hiện qua các điểm ngoại lệ qua biểu đồ
boxplot. Các điểm này là các ngày mưa rất lớn so với phần còn lại của dữ
liệu.

• Phân phối tốc độ gió trung bình ở độ cao 2m: Ở độ cao 2m, tốc độ gió chủ
yếu tập trung vào khoảng 0 - 2 m/s thường chỉ là những cơn gió nhẹ, thoảng
qua. Tuy nhiên cũng có một số ngày ghi nhận tốc độ gió cao hơn rất nhiều
so với mức trung bình (lên tới trên 14m/s).

• Phân phối độ ẩm riêng ở độ cao 2m: Ở độ cao 2m, độ ẩm riêng có phân


phối tập trung trong khoảng 80 - 90%. Đây là mức độ ẩm cao có thể liên
quan đến việc xuất hiện mưa hoặc là hiện tượng sương mù.

• Phân phối nhiệt độ bề mặt trái đất: Nhiệt độ bề mặt trái đất trung bình là
23.07 °C. Có một số điểm ngoại lệ xuất hiện ghi nhận nhiệt độ bề mặt rơi
vào khoảng 0 - 5 °C. Đây có thể là những điểm ghi nhận về tình hình thời
tiết cực đoan, giá rét gây ảnh hưởng đến đời sống cũng như hoạt động nông
nghiệp.

Hình 3.16: Sự thay đổi tốc độ gió ở các độ cao

Tốc độ gió ghi nhận cũng có sự thay đổi theo độ cao. Có thể thấy càng lên
cao tốc độ gió càng lớn.
37

3.3.3 Xu hướng theo mùa của các đặc trưng

Hình 3.17: Lượng mưa trung bình một ngày hàng năm

Có thể nhận thấy những năm trở lại đây, mưa có xu hướng nhiều hơn
những năm trước đó. Đặc biệt vào năm 2023 (số liệu ghi nhận từ 1/1/2023 đến
21/10/2023), lượng mưa trung bình có xu hướng tăng cao.

Hình 3.18: Lượng mưa trung bình một ngày theo từng tháng

Mưa thường tập trung nhiều vào khoảng thời gian từ tháng 7 đến tháng 10
hàng năm.
38

Hình 3.19: Nhiệt độ không khí cao nhất và thấp nhất theo thời gian

Dựa vào biểu đồ có thể thấy nhiệt độ phân bố rõ rệt theo mùa ổn và định
qua từng năm. Quan sát một số điểm dữ liệu cho thấy có những ngày ghi nhận
nhiệt độ cao nhất vào mùa hè năm 2003, 2023 (đạt ngưỡng xấp xỉ 38 - 39 °C).
Nhiệt độ thấp nhất được ghi nhận vào mùa đông năm 2015 và mùa xuân năm
2016 (dưới 5 °C). Thực tế cho thấy, đây cũng là những năm ghi nhận những đợt
nắng nóng và những đợt rét đậm rét hại kỉ lục.
39

3.3.4 Ma trận hệ số tương quan giữa các biến

Hình 3.20: Ma trận hệ số tương quan giữa các biến

Ma trận hệ số tương quan cho thấy mối quan hệ giữa các biến trong bộ dữ
liệu. Mối quan hệ tương quan giữa biến mục tiêu và các biến đặc trưng cần được
lưu ý vì nó mang lại những thông tin quan trọng về sự thay đổi của biến mục
tiêu cụ thể ở đây là PRECTOTCORR_1_DAY_AFTER (lượng mưa của ngày
hôm sau) dựa trên sự thay đổi của các biến đặc trưng khác.
40

• PRECTOTCORR_1_DAY_AFTER với PRECTOTCORR và PRECTOT-


CORR_TODAY có hệ số tương quan lần lượt là 0.65 và 0.61.

• PRECTOTCORR_1_DAY_AFTER với QV2M (độ ẩm riêng ở 2m) có hệ


số tương quan là 0.51.

• PRECTOTCORR_1_DAY_AFTER với T2MWET (nhiệt độ ướt ở 2m) có


hệ số tương quan là 0.48.

• RECTOTCORR_1_DAY_AFTER với ALLSKY_SFC_LW_DWN (lượng


năng lượng bức xạ hồng ngoại truyền xuống trái đất) có hệ số tương quan
0.45.

Một số biến đặc trưng có tương quan khá tốt với biến mục tiêu. Nhưng bên
cạnh đó còn nhiều biến có tương quan thấp. Điều này có thể ảnh hưởng đến kết
quả dự đoán của mô hình.
41

3.4 Xây dựng các mô hình dự đoán

3.4.1 Mục tiêu

Lựa chọn được mô hình học máy tốt nhất cho tập dữ liệu đang có với các tiêu
chí sau:

• Độ chính xác của mô hình

• Thời gian huấn luyện

• Giảm thiểu tối đa hiện tượng học quá khớp

3.4.2 Phân chia bộ dữ liệu

Xác định biến đặc trưng và các biến mục tiêu


Tạo ma trận X là ma trận biến đặc trưng là các biến chứa đặc điểm, thuộc
tính trong tập dữ liệu sẽ được sử dụng để đào tạo mô hình học máy. Tạo ma
trận biến mục tiêu y là biến cần dự đoán.

Chia bộ dữ liệu thu thập được thành các tập train/test/validation


Chia bộ dữ liệu là một phần quan trọng trong quá trình đào tạo và kiểm thử
mô hình học máy, để đảm bảo tính độc lập giữa tập huấn luyện và tập kiểm tra.
Cụ thể, ta chia tập dữ liệu thành 3 phần bằng hàm train_test_split và đảm bảo
tỉ lệ phân phối của các biến mục tiêu là giống nhau ở các tập dữ liệu. Tập train
sẽ chiếm 70%, tập test sẽ chiếm 15% và tập validation sẽ chiếm 15% bộ dữ liệu
ban đầu.

• Tập train: Dùng để huấn luyện mô hình.

• Tập test: Dùng để kiểm tra hiệu suất của mô hình trên một tập dữ liệu mới
chưa được qua đào tạo.

• Tập validation: Dùng để kiểm thử mô hình trong quá trình đào tạo.
42

Hình 3.21: Phân chia tập dữ liệu train/test/validation

3.4.3 Chuẩn hóa dữ liệu đầu vào cho mô hình

Chuẩn hóa dữ liệu đầu vào là một bước quan trọng khi làm việc với mô hình
học máy. Quy trình chuẩn hóa giúp đảm bảo rằng các đặc trưng có cùng tỉ lệ và
đơn vị, từ đó giúp mô hình học máy hội tụ nhanh hơn và đảm bảo rằng không
có đặc trưng nào có ảnh hưởng quá mức đến quá trình đào tạo.
Thư viện Scikit-learn hỗ trợ phương thức StandardScaler - là một phương
thức được sử dụng để chuẩn hóa dữ liệu. Quá trình chuẩn hóa biến đổi dữ liệu
sao cho dữ liệu có trung bình bằng 0 và độ lệch chuẩn bằng 1.

Hình 3.22: Dữ liệu sau khi chuẩn hóa

3.4.4 Huấn luyện mô hình

Tạo lập các mô hình phân loại đa lớp được hỗ trợ bởi thư viện Scikit-learn -
một thư viện mã nguồn mở dành cho học máy:
43

• Decision Tree Classifier: Mô hình cây quyết định.

• Random Forest Classifier: Mô hình rừng ngẫu nhiên.

• Gradient Boosting Classifier: Mô hình cây quyết định tăng cường độ


dốc.

• LightGBM Classifier: Mô hình cây quyết định tăng cường độ dốc cải tiến.

• XGBoost Classifier: Mô hình cây quyết định tăng cường độ dốc cải tiến.

• Cat Boost Classifier: Mô hình cây quyết định tăng cường độ dốc cải tiến.

Sử dụng bộ tham số mặc định của các mô hình trong thư viện Scikit-learn để
tiến hành huấn luyện và đánh giá mô hình, được kết quả báo cáo về các mô hình
như sau:

Hình 3.23: Báo cáo tổng quan từng mô hình


44

Tiếp tục sử dụng các mô hình để dự đoán trên tập test và tập validation để
kiểm tra độ chính xác của mô hình trên các tập dữ liệu khác độc lập với tập
huấn luyện được báo cáo tổng quan như sau:

Mô hình Accuracy Accuracy Accuracy Time


train test validation
LightGBM 0.76342 0.74582 0.75588 7.1s
XGBoost 0.79045 0.75754 0.75589 4.1s
CatBoost 0.78002 0.76242 0.76010 50.5s
GB Boost 0.73620 0.73372 0.75588 685.2s
Random forest 1 0.77438 0.75588 210.9s
Decision tree 1 0.68804 0.75589 14.7s

Đánh giá và nhận xét

• Mô hình Decision Tree Classifier và Random Forest Classifier gặp hiện tượng
học quá khớp do độ chính xác trên tập dữ liệu đào tạo là tuyệt đối, tuy
nhiên độ chính xác trên các tập kiểm tra thấp.

• Mô hình Gradient Boosting Classifier có độ chính xác khá tốt và tương


đương trên cả 3 tập dữ liệu, tuy nhiên thời gian đào tạo khá dài (685.2s).

• Mô hình LightGBM Classifier, Cat Boost Classifier và XGBoost Classifier


có độ chính xác khá cao và tương đương trên cả 3 tập dữ liệu. Tuy nhiên
mô hình XGBoost Classifier vượt trội hơn về độ thời gian huấn luyện (4.1s
thay vì 7.1s của mô hình LightGBM Classifier và 50.5s của mô hình Cat
Boost Classifier).

3.5 Lựa chọn và tối ưu mô hình

Dựa vào kết quả của quá trình huấn luyện, đánh giá và nhận xét, lựa chọn
mô hình XGBoost Classifier cho bài toán dự báo thời tiết.
45

Sau khi chọn được mô hình, cần tối ưu hiệu suất của mô hình để tăng độ
chính xác trong dự báo.

3.5.1 Lựa chọn biến đặc trưng

Lựa chọn biến đặc trưng là quá trình giảm số lượng biến đầu vào khi phát
triển mô hình dự đoán. Phương pháp này giúp làm giảm số chiều dữ liệu, loại
bỏ đi những biến có ít giá trị giúp giảm độ phức tạp, giảm hiện tượng học quá
khớp và giúp mô hình được đào tạo nhanh hơn.
Thuật toán XGBoost của thư viện Scikit-learn cung cấp thuộc tính fea-
ture_importances_ cung cấp thông tin về mức độ quan trọng của các biến đặc
trưng với mô hình.
Mức độ quan trọng của biến đặc trưng được tính bằng số lần xuất hiện của
biến trong tất cả các cây quyết định, càng nhiều lần xuất hiện, trọng số càng
cao.

Hình 3.24: Mức độ quan trọng của các biến với mô hình theo thứ tự giảm dần
46

Khởi tạo mô hình, duyệt qua từng ngưỡng của độ quan trọng và thực hiện
lựa chọn đặc trưng. Huấn luyện mô hình trên tập train, sử dụng tập dữ liệu
validation để đánh giá hiệu suất mô hình dựa trên chỉ số accuracy. Ngưỡng của
độ quan trọng đặc trưng với số accuracy lớn nhất sẽ được lựa chọn. Kết quả ta
có tập dữ liệu mới bao gồm 12 biến đặc trưng quan trọng nhất sẽ được sử dụng
để tiếp tục huấn luyện và tối ưu mô hình.

Hình 3.25: Duyệt qua các ngưỡng của độ quan trọng và lựa chọn biến đặc trưng

Tính toán accuracy trên tập train và tập test, thấy rằng accuracy trên tập
train là 0.78781 và trên tập test là 0.76165.

Hình 3.26: Độ chính xác trên tập dữ liệu train và test

Tuy rằng độ chính xác trên tập train có giảm một chút so với lúc đầu, nhưng
bù lại độ chính xác trên tập validation và test được cải thiện hơn.
47

3.5.2 Tối ưu siêu tham số bằng BayesSearchCV

BayesSearchCV là một công cụ trong thư viện Scikit-optimize được xây dựng
để sử dụng thuật toán tối ưu hóa Bayesian. Thuật toán tối ưu hóa Bayesian được
sử dụng để tìm kiếm không gian siêu tham số một cách thông minh, dựa trên
thông tin thu thập được từ các lần thử nghiệm trước đó.
Cụ thể, BayesSearchCV sử dụng kỹ thuật tối ưu hóa Bayesian để xác định
các giá trị tối ưu cho các siêu tham số mô hình. Quy trình này bao gồm việc
đánh giá các điểm trong không gian siêu tham số dựa trên kết quả của các lần
thử nghiệm trước đó và điều chỉnh các dự đoán thông qua mô hình tương tác
với không gian siêu tham số.

Hình 3.27: Siêu tham số được lựa chọn

Huấn luyện mô hình với bộ tham số trên thu được kết quả báo cáo như sau:

Hình 3.28: Độ chính xác của mô hình trên các tập dữ liệu

Có thể thấy độ chính xác của mô hình là khá tốt, tuy nhiên, sự chênh lệch độ
chính xác giữa tập train với tập test và tập validation là còn khá lớn (khoảng
xấp xỉ 10%). Điều này có thể là dấu hiệu của hiện tượng học quá khớp. Vì vậy,
cần tiếp tục sử dụng một số phương pháp tối ưu khác giúp làm giảm hiện tượng
học quá khớp của mô hình.
48

3.5.3 Early stopping

Early stopping là một kỹ thuật được sử dụng trong quá trình huấn luyện mô
hình máy học để ngừng việc huấn luyện sớm hơn so với khi mô hình bắt đầu quá
khớp. Khi huấn luyện mô hình, early stopping giúp theo dõi hiệu suất của mô
hình trên một tập dữ liệu validation và dừng lại khi hiệu suất trên tập validation
không còn cải thiện.

Hình 3.29: Sử dụng kỹ thuật early stopping để giảm học quá khớp

Quá trình huấn luyện mô hình dừng lại khi số lượng cây quyết định con đạt
đến con số 344 với độ chính xác trên tập train là 0.81092 và trên tập validation
là 0.77842.
Sau khi điều chỉnh và đánh giá độ chính xác của mô hình trên tập train và
tập validation. Tiếp tục đánh giá mô hình trên tập dữ liệu test để đảm bảo mô
hình hoạt động tốt với tập dữ liệu mới chưa qua huấn luyện. Đánh giá trên tập
test cho thấy độ chính xác của mô hình đạt 0.77103.
49

3.6 Đánh giá và nhận xét

3.6.1 Báo cáo đánh giá về mô hình

Đánh giá hiệu suất của mô hình trên tập dữ liệu kiểm tra nhận được báo cáo
chi tiết về mô hình.

Hình 3.30: Báo cáo chi tiết mô hình XGBoost

Báo cáo phân loại cho mô hình XGBoost cho thấy mô hình có độ chính xác
tổng thể là 77,103%.
Precision
Precision là chỉ số cho thấy khả năng mô hình dự đoán chính xác một lớp cụ
thể. Khả năng dự đoán của mô hình tương đối tốt ở một số lớp như 0 (no_rain)
với 77%, 1 (small_rain) với 80%, và 5 (warning) với 80%. Tuy nhiên ở một số lớp
khả năng dự đoán vẫn còn chưa tốt: 2 (rain), 3 (moderate_rain), 4 (heavy_rain)
với lần lượt là 54%. 57% và 62%.
Recall

• Recall của lớp 0 là 0.64, cho thấy mô hình nhận diện được 64% các trường
hợp thực sự thuộc lớp 0.

• Recall của lớp 1 là 0.93, rất cao, chỉ ra mô hình có khả năng nhận diện cao
đối với các trường hợp thực sự thuộc lớp 1.
50

• Recall của lớp 2 là 0.27, thấp, cho thấy mô hình có xu hướng bỏ sót nhiều
trường hợp positive của lớp 2.

• Recall của lớp 3 là 0.35, cũng thấp, mô hình có thể bỏ sót nhiều trường hợp
positive của lớp 3.

• Recall của lớp 4 là 0.21, rất thấp, mô hình khả năng bỏ sót nhiều trường
hợp positive của lớp 4.

• Recall của lớp 5 là 0.36, thấp, mô hình có xu hướng bỏ sót nhiều trường
hợp positive của lớp 5.

F1-Score

• F1-score của lớp 0 là 0.70, cho thấy mô hình có một sự cân bằng tốt giữa
Precision và Recall đối với lớp này.

• F1-score của lớp 1 là 0.86, rất cao, chỉ ra mô hình có hiệu suất tốt đối với
lớp 1.

• F1-score của lớp 2 là 0.36, thấp, chỉ ra rằng mô hình có sự mất cân bằng
giữa Precision và Recall đối với lớp này.

• F1-score của lớp 3 là 0.43, thấp, mô hình có thể cần được cải thiện đối với
lớp 3.

• F1-score của lớp 4 là 0.31, thấp, chỉ ra sự mất cân bằng giữa Precision và
Recall đối với lớp này.

• F1-score của lớp 5 là 0.50, thấp, mô hình có thể cần cải thiện hiệu suất đối
với lớp 5.

Dựa vào các chỉ số đánh giá trên, có thể thấy mô hình có hiệu suất tốt đối với
lớp 1, nhưng có thể cần được cải thiện đối với các lớp khác, đặc biệt là lớp 2, 3,
4 và 5. Điều này có thể đến từ mất cân băng dữ liệu và cần yêu cầu điều chỉnh
mô hình hoặc thêm dữ liệu để cải thiện hiệu suất đối với các lớp này.
51

3.6.2 Biểu đồ độ mất mát và độ lỗi

Hình 3.31: Biểu đồ độ mất mát và độ lỗi

Sự giảm của Error và Log Loss


Cả Error và Log Loss trên tập train và tập validation đều giảm dần. Điều này
có thể là một dấu hiệu tích cực cho thấy mô hình đang học tốt ở tập train và
tổng quát hóa tốt cho một tập dữ liệu mới.

Sự chênh lệch giữa tập huấn luyện và tập xác thực


Tuy nhiên nếu xem xét về sự chênh lệch giữa tập train và tập validation thì
có thể thấy Error và Log Loss trên tập validation đang cao hơn so với tập train,
đây có thể là một dấu hiệu không tốt đối với mô hình, cần tiếp tục kiểm tra,
đánh giá và điều chỉnh.
52

3.6.3 Đường cong ROC và chỉ số AUC

Hình 3.32: Đường cong ROC và chỉ số AUC

Đường cong ROC càng nằm gần góc phần tư thứ tư, mô hình càng có khả năng
phân biệt tốt. Trong trường hợp này, đường cong ROC của mô hình XGBoost
nằm gần góc phần tư thứ tư, cho thấy mô hình có khả năng phân biệt tốt giữa
các lớp.
Chỉ số AUC là một chỉ số đo lường diện tích dưới đường cong ROC. Giá trị
AUC càng lớn, mô hình càng có khả năng phân biệt tốt. Trong trường hợp này,
chỉ số AUC của mô hình XGBoost là 0.97.
53

3.6.4 Nhận xét

Mô hình có độ chính xác khá cao trên cả tập dữ liệu train, test và validation,
nhưng có thể thấy mô hình chỉ phân loại tốt với nhóm dữ liệu chiếm tỉ trọng lớn
đó là những ngày không mưa hoặc mưa nhỏ, còn khả năng phân loại và dự đoán
được những ngày mưa lớn còn chưa tốt. Hơn nữa, sự thay đổi của thời tiết ngày
càng theo chiều hướng bất thường, gây khó khăn cho việc dự đoán.
Vì vậy, khi đặt vào thực tế, cần phải tiếp tục theo dõi, đánh giá, thu thập dữ
liệu và tối ưu, tinh chỉnh mô hình để cho ra kết quả dự đoán tốt nhất.
54

Tổng kết

Đồ án đã hoàn thành được mục tiêu đề ra, xây dựng được mô hình học máy
phù hợp phục vụ dự báo lượng mưa.

Kết quả đạt được

1. Tìm hiểu lý thuyết và nguyên lý hoạt động của thuật toán cây quyết định
và một số thuật toán cải tiến dựa trên cây quyết định.
2. Khai thác dữ liệu từ nguồn internet để phục vụ cho việc đào tạo mô hình.
3. Thử nghiệm nhiều mô hình và lựa chọn mô hình XGBoost phù hợp cho bài
toán dự báo lượng mưa.
4. Huấn luyện mô hình, sử dụng nhiều phương pháp tinh chỉnh và tối ưu hiệu
suất của mô hình.

Kỹ năng đạt được

1. Tính tự giác, tự học hỏi, tìm và đọc tài liệu chuyên ngành.
2. Cải thiện kỹ năng sử dụng ngôn ngữ lập trình Python và tư duy khi làm
việc với dữ liệu.
3. Trình bày báo cáo đồ án bằng Latex.
55

Hướng phát triển đồ án trong tương lai

1. Tiếp tục thu thập thêm dữ liệu để tăng độ chính xác trong dự đoán của
mô hình.
2. Thử nghiệm nhiều phương pháp hạn chế ảnh hưởng của mất cân bằng dữ
liệu.
3. Thu thập dữ liệu từ nhiều nguồn đáng tin cậy để huấn luyện và nâng cao
hiệu suất của mô hình.
56

Tài liệu tham khảo

[1] Trần Quý Nam, "SO SÁNH THUẬT TOÁN TĂNG CƯỜNG ĐỘ DỐC
(XGBOOST) VỚI MỘT SỐ THUẬT TOÁN HỌC MÁY KHÁC", TẠP CHÍ
KHOA HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG, Số 02
(CS.01), 2021.

[2] Abid Ali Awan, What is Bagging in Machine Learning? A Guide With
Examples, 2023.

[3] Burak Karakaya, Decision Trees: Wandering Through the Branches of the
Knowledge Tree, 2023.

[4] Jason Brownlee, Avoid Overfitting by Early Stopping With XGBoost in


Python, 2020.

[5] Jason Brownlee, Feature Importance and Feature Selection With XGBoost
in Python, 2020.

[6] Jerome H. Friedman, GREEDY FUNCTION APPROXIMATION: A GRA-


DIENT BOOSTING MACHINE, 2001.

[7] Jason Brownlee, How to Implement Bayesian Optimization from Scratch in


Python, 2020.

You might also like