Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH


KHOA CƠ KHÍ CHẾ TẠO MÁY


BÁO CÁO CUỐI KỲ


MÔN HỌC: MACHINE LEARNING
ĐỀ TÀI: MÔ HÌNH DỰ ĐOÁN GIÁ VÀNG

GVHD: TS. VŨ QUANG HUY

HỌ TÊN & MSSV:

MAO ĐÌNH HUÂN - 21146463

NGUYỄN HUỲNH HỮU NGHỊ - 21146487

Mã lớp học: MALE337029_23_2_05CLC

Thành phố Hồ Chí Minh, Tháng 5 năm 2024


MỤC LỤC

LỜI CẢM ƠN ........................................................................................................................... 3


CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ............................................................................ 4
1.1. Giới thiệu đề tài và lý do chọn đề tài ....................................................................4
1.2. Quy trình thực hiện ............................................................................................... 4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ........................................................................................ 6
2.1. Random Forest Regressor .....................................................................................6
2.1.1. Giới thiệu thuật toán .......................................................................................6
2.1.2. Mô tả thuật toán .............................................................................................. 6
2.1.3. Ưu & nhược điểm ...........................................................................................7
2.1.4. Ứng dụng ........................................................................................................7
2.2. Linear Regression..................................................................................................8
2.2.1. Giới thiệu thuật toán .......................................................................................8
2.2.2. Mô tả thuật toán .............................................................................................. 8
2.2.3. Ưu & nhược điểm ...........................................................................................9
2.2.4. Ứng dụng ........................................................................................................9
2.3. K-Neighbors Regressor .......................................................................................11
2.3.1. Giới thiệu thuật toán .....................................................................................11
2.3.2. Mô tả thuật toán ............................................................................................ 11
2.3.3. Ưu & nhược điểm .........................................................................................12
2.3.4. Ứng dụng ......................................................................................................12
CHƯƠNG 3: DỮ LIỆU HUẤN LUYỆN .............................................................................. 13
3.1. Mô tả về dữ liệu huấn luyện và nguồn của dữ liệu huấn luyện ..........................13
3.2. Mô tả các đặc trưng đầu vào và đầu ra................................................................ 13
3.3. Phân tích về cấu trúc và tính chất của tập dữ liệu ...............................................14
3.4. Các bước tiền xử lý dữ liệu trước khi đưa vào huấn luyện mô hình...................15
CHƯƠNG 4: LƯU ĐỒ THUẬT TOÁN ĐỂ HUẤN LUYỆN MÔ HÌNH ......................... 20
4.1. Lưu đồ giải thuật .................................................................................................20
4.2. Giải thích hoạt động của lưu đồ giải thuật ..........................................................21
CHƯƠNG 5: CODE CHƯƠNG TRÌNH HUẤN LUYỆN .................................................. 22
5.1. Nhập thư viện ......................................................................................................22
5.2. Đọc file dữ liệu và hiển thị các thông tin cần thiết .............................................22
5.3. Tiền xử lý dữ liệu ................................................................................................ 25

1
5.4. Chia dữ liệu .........................................................................................................27
5.5. Huấn luyện mô hình ............................................................................................ 29
5.6. Đánh giá chất lượng mô hình ..............................................................................30
CHƯƠNG 6: PHÂN TÍCH ĐÁNH GIÁ KẾT QUẢ MÔ HÌNH ĐẠT ĐƯỢC ................. 35
6.1. Random Forest Regressor ...................................................................................35
6.2. Linear Regression................................................................................................ 36
6.3. K-Neighbors Regressor .......................................................................................38
6.4. So sánh, đánh giá và lựa chọn thuật toán tốt nhất cho mô hình ..........................39
CHƯƠNG 7: KẾT LUẬN ...................................................................................................... 41
7.1. Danh sách các công việc thực hiện và kết quả đạt được .....................................41
7.2. Nhược điểm của mô hình huấn luyện .................................................................41
7.3. Giải pháp đề xuất ................................................................................................ 42
TÀI LIỆU THAM KHẢO...................................................................................................... 43

2
LỜI CẢM ƠN

Để hoàn thành bài báo cáo này, lời đầu tiên chúng con xin chân thành cảm ơn
sự động viên và hỗ trợ của gia đình trong suốt thời gian học tập. Đặc biệt, chúng con
xin gửi lời trân trọng nhất đến ba mẹ, người đã sinh ra và nuôi dưỡng chúng con
nên người. Sự quan tâm, lo lắng và hy sinh lớn lao của ba mẹ luôn là nguồn động lực
cho chúng con cố gắng phấn đấu trên con đường học tập của mình.

Chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Vũ Quang Huy đã tận tình
hướng dẫn, chia sẻ nhiều kinh nghiệm quý báu trong suốt quá trình chúng em thực hiện
đề tài cuối kỳ.

Chúng em cũng xin chân thành cảm ơn quý thầy, cô trường Đại Học Sư Phạm
Kỹ Thuật TP.HCM, đặc biệt là các thầy cô trong khoa Cơ khí chế tạo máy đã nhiệt tình
giúp đỡ, truyền đạt kiến thức trong suốt quá trình học tập của nhóm. Vốn kiến thức được
tiếp thu trong quá trình học tập không chỉ là nền tảng cho quá trình thực hiện đề tài
báo cáo mà còn là hành trang quý báu cho chúng em lập nghiệp sau này.

Cuối cùng, chúng em xin cảm ơn sự hỗ trợ và giúp đỡ của bạn bè trong thời gian
học tập và trong quá trình hoàn thành đề tài này.

Xin chân thành cảm ơn!

Sinh viên thực hiện


Đình Huân – Hữu Nghị

3
NỘI DUNG
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN

1.1. Giới thiệu đề tài và lý do chọn đề tài


- Trong thời đại hiện đại, thị trường vàng không chỉ là một phần quan trọng của
nền kinh tế toàn cầu mà còn là một trong những cơ hội đầu tư hấp dẫn. Việc hiểu và
dự đoán biến động của giá vàng có thể đóng vai trò quan trọng trong việc đưa ra
quyết định đầu tư hiệu quả. Thị trường vàng không chỉ ảnh hưởng đến các nhà đầu tư
và các doanh nghiệp mà còn là một chỉ số quan trọng của sức khỏe kinh tế toàn cầu.
Việc nắm bắt được xu hướng giá vàng có thể giúp dự báo được tình hình kinh tế và
tài chính trong tương lai. Mô hình dự đoán giá vàng có thể được áp dụng trong nhiều
lĩnh vực khác nhau, từ đầu tư vàng đến quản lý rủi ro tài chính và dự báo kinh tế. Việc
phát triển một mô hình dự đoán giá vàng có thể mang lại lợi ích lớn cho cả cộng đồng
đầu tư và kinh doanh, giúp họ đưa ra các quyết định thông minh và cân nhắc.

- Mục tiêu của đề tài này là xây dựng một mô hình dự đoán giá vàng chính xác và
tin cậy, dựa trên các phương pháp và kỹ thuật hiện đại của khoa học dữ liệu và machine
learning. Hy vọng rằng dự án này sẽ mang lại những kết quả tích cực và cung cấp cho
cộng đồng một công cụ hữu ích để hiểu và dự đoán thị trường vàng.

1.2. Quy trình thực hiện


- Để triển khai xây dựng mô hình dự đoán giá vàng, nhóm nghiên cứu đã dựa theo
các quy trình như sau:

+ Bước 1_Thu thập dữ liệu: Thu thập dữ liệu về giá vàng từ các nguồn tin cậy như trang
web tài chính, cơ sở dữ liệu thị trường, hoặc API từ các sàn giao dịch. Đây sẽ là cơ sở
dữ liệu chính để có thể huấn luyện mô hình dự đoán trong tương lai.

+ Bước 2_ Tiền xử lý dữ liệu: Tiền xử lý dữ liệu bằng cách loại bỏ các giá trị thiếu,
chuẩn hóa dữ liệu, và chuyển đổi dữ liệu sang định dạng phù hợp cho việc huấn luyện
mô hình. Như vậy, dữ liệu sau khi thu thập sẽ bám sát hơn với mô hình, giúp giảm thiểu
các sai số khi dự đoán do lỗi từ các dữ liệu cơ sở.

4
+ Bước 3_ Phân tích dữ liệu: Phân tích dữ liệu dựa vào các đặc trưng quan trọng
ảnh hưởng đến giá vàng như: tỷ giá mua bán, tỷ giá hối đoái, chỉ số thị trường, lạm phát
kinh tế,…. Việc phân tích làm cho mô hình biết và hiểu được những đặc trưng nào là
quan trọng để có thể dựa vào giá trị đó mà tiến hành huấn luyện.

+ Bước 4_ Chia tập dữ liệu: Chia dữ liệu thành tập huấn luyện và tập kiểm tra để đánh
giá hiệu suất của mô hình. Bước này trong quy trình xây dựng mô hình ML là quan trọng
để đảm bảo rằng mô hình của bạn được đánh giá một cách khách quan và có thể
tổng quát hóa tốt cho dữ liệu mới.

• Tập huấn luyện: Được sử dụng để huấn luyện mô hình. Mô hình sẽ học từ các
mẫu dữ liệu trong tập huấn luyện và điều chỉnh các tham số để phù hợp với
dữ liệu.
• Tập kiểm tra: Được sử dụng để đánh giá hiệu suất của mô hình. Sau khi mô hình
đã được huấn luyện, bạn sẽ sử dụng tập kiểm tra để đánh giá khả năng dự đoán
của nó trên dữ liệu mới mà nó chưa từng thấy.

+ Bước 5_ Tiến hành huấn luyện: Tiến hành huấn luyện mô hình từ dữ liệu ở “Tập
huấn luyện”. Tại đây cần tìm ra được đâu là thuật toán tối ưu nhất cho mô hình đang
xây dựng. Đối với mô hình dự đoán giá vàng, ba thuật toán Random Forest Regressor,
Linear Regression, Kneighbors Regressor đang là tối ưu nhất để huấn luyện.

+ Bước 6_Đánh giá mô hình: Sau khi huấn luyện, cần đánh giá hiệu suất của mô hình
bằng cách sử dụng các tiêu chuẩn như Mean Absolute Error (MAE), Mean Squared
Error (MSE) và R-squared (R²) trên tập kiểm tra.

5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1. Random Forest Regressor


2.1.1. Giới thiệu thuật toán
- Random Forest Regressor: là một thuật toán trong ML thuộc nhóm Ensemble
Learning, nó sử dụng “rừng” ngẫu nhiên để dự đoán giá trị của biến liên tục (hay
còn gọi là biến mục tiêu) dựa trên các biến đặc trưng.

2.1.2. Mô tả thuật toán


- Random Forest Regressor hoạt động bằng cách tạo ra một tập hợp các cây
quyết định, mỗi cây được huấn luyện trên các tập hợp con của dữ liệu gốc. Trong
quá trình huấn luyện, mỗi cây được xây dựng ngẫu nhiên chọn một tập hợp con các
tính năng từ tập dữ liệu. Tính ngẫu nhiên này giúp giảm thiểu việc trang bị quá mức và
tăng khả năng khái quát hóa của mô hình. Khi đưa ra dự đoán, Random Forest Regressor
kết hợp kết quả đầu ra của tất cả các cây riêng lẻ để đưa ra dự đoán cuối cùng. Tên của
thuật toán xuất phát từ thực tế là nó giới thiệu tính ngẫu nhiên cả trong việc tạo ra
cây quyết định và trong việc lựa chọn các tính năng.

6
2.1.3. Ưu & nhược điểm
*Ưu điểm:

- Nó có hiệu suất dự đoán cao, thường vượt trội so với các phương pháp học máy
khác do khả năng xử lý các khối lượng lớn và các tập dữ liệu phức tạp. Nó có thể xử lý
hiệu quả các dữ liệu bị thiếu và các dữ liệu ngoại lệ, giúp nó trở nên mạnh mẽ hơn trong
việc tiếng ồn và sự không nhất quán. Random Forest Regressor cũng cung cấp cơ chế
lựa chọn tính năng nội tại, cho phép chúng tôi xác định các biến quan trọng nhất
góp phần vào dự đoán.

*Nhược điểm:

- Có một số lưu ý khi làm việc với Random Forest Regressor. Đây là một
phương pháp tập hợp, nó đòi hỏi nhiều tài nguyên tính toán hơn và có thể chậm hơn
trong quá trình đào tạo và dự đoán so với các cây quyết định riêng lẻ. Giải thích kết quả
của mô hình có thể ít đơn giản hơn vì nó kết hợp nhiều cây. Ngoài ra, Random Forest
Regressor có xu hướng gặp khó khăn với các tập dữ liệu mất cân bằng, trong đó
tầng lớp thiểu số có thể không được đại diện đầy đủ, có khả năng dẫn đến những
dự đoán sai lệch.

2.1.4. Ứng dụng


- Random Forest Regressor được tìm thấy ứng dụng trong nhiều lĩnh vực khác nhau
trong các tình huống thực tế. Trong chăm sóc sức khỏe, nó có thể được sử dụng để dự
đoán kết quả bệnh, chẳng hạn như xác định nguy cơ cao bệnh nhân về các tình trạng cụ
thể hoặc đánh giá sự thành công của một số phương pháp điều trị nhất định. Trong tài
chính, thuật toán được sử dụng để chấm điểm tín dụng, phát hiện gian lận và dự đoán
thị trường chứng khoán. Nó cũng tìm thấy ứng dụng trong mô hình sinh thái, phân khúc
khách hàng, phân tích tình cảm và nhiều các lĩnh vực khác yêu cầu dự đoán chính xác
và hiểu biết sâu sắc từ các bộ dữ liệu phức tạp.

7
2.2. Linear Regression
2.2.1. Giới thiệu thuật toán
- Thuật toán Linear Regression là một phương pháp trong thống kê và ML được
sử dụng để dự đoán giá trị của một biến phụ thuộc dựa trên các biến độc lập. Nó thường
được sử dụng khi có một mối quan hệ tuyến tính giữa các biến độc lập và biến phụ thuộc.

2.2.2. Mô tả thuật toán


- Trong Linear Regression, chúng ta cố gắng tìm một đường thẳng (trong trường hợp
đa chiều, đường phẳng hoặc siêu phẳng) sao cho tổng bình phương của sai số giữa
giá trị dự đoán và giá trị thực tế là nhỏ nhất. Điều này thường được thực hiện bằng cách
sử dụng phương pháp của bình phương tối thiểu hay phương pháp tối ưu hóa để
điều chỉnh các tham số của đường thẳng nhằm giảm thiểu sai số.

- Đầu tiên, chúng ta cần có dữ liệu. Dữ liệu bao gồm ít nhất một biến độc lập
(hoặc nhiều biến độc lập trong trường hợp của Linear Regression đa chiều) và một
biến phụ thuộc. Mục tiêu của Linear Regression là tìm một đường thẳng sao cho
tổng bình phương của các sai số giữa giá trị dự đoán và giá trị thực tế là nhỏ nhất.
Đường thẳng này được biểu diễn bởi một phương trình tuyến tính:

y = mx + b

Trong đó: y là giá trị dự đoán.

m là hệ số góc của đường thẳng.

x là biến độc lập.

b là điểm cắt trục y.

8
2.2.3. Ưu & nhược điểm
*Ưu điểm:

- Linear Regression là một trong những mô hình đơn giản nhất trong machine
learning, dễ hiểu và dễ triển khai. Người dùng không cần phải có kiến thức chuyên sâu
về toán học hoặc lập trình phức tạp để sử dụng nó. Mặc dù đơn giản, Linear Regression
có thể được áp dụng trong nhiều bài toán khác nhau, từ dự đoán giá cổ phiếu đến dự báo
doanh số bán hàng. Phương trình tuyến tính của Linear Regression dễ dàng diễn giải.
Điều này có nghĩa là bạn có thể hiểu được cách mỗi biến độc lập ảnh hưởng đến
biến phụ thuộc ra sao. Trong các tình huống mà mối quan hệ giữa biến độc lập và
biến phụ thuộc là tuyến tính và không có nhiều biến độc lập hoặc biến phụ thuộc
phức tạp, Linear Regression có thể cho kết quả tốt.

*Nhược điểm:

- Một trong những hạn chế lớn nhất của Linear Regression là nó giả định mối
quan hệ giữa các biến là tuyến tính. Trong thực tế, có nhiều tình huống mà mối quan hệ
không phải lúc nào cũng là tuyến tính, và việc sử dụng Linear Regression có thể dẫn đến
kết quả không chính xác. Linear Regression nhạy cảm với nhiễu trong dữ liệu. Nếu
dữ liệu có các giá trị ngoại lệ (outliers), nó có thể ảnh hưởng đến mô hình một cách lớn
và dẫn đến kết quả không chính xác. Trong các tình huống mà mối quan hệ giữa
biến độc lập và biến phụ thuộc là phức tạp, Linear Regression có thể không đủ mạnh mẽ
để mô hình hóa mối quan hệ đó. Linear Regression cũng có thể dẫn đến hiện tượng
overfitting (quá mức) hoặc underfitting (thiếu mức) tùy thuộc vào việc mô hình có đủ
phức tạp để biểu diễn mối quan hệ giữa các biến hay không.

2.2.4. Ứng dụng


- Dự đoán giá nhà: Trong lĩnh vực bất động sản, Linear Regression có thể được
sử dụng để dự đoán giá của các căn nhà dựa trên các yếu tố như diện tích, số phòng ngủ,
vị trí, và các tiện ích xung quanh.

- Dự báo doanh số bán hàng: Các doanh nghiệp có thể sử dụng Linear Regression để
dự đoán doanh số bán hàng trong tương lai dựa trên các yếu tố như chiến lược tiếp thị,
giá cả, và kinh tế chung.

9
- Dự đoán lượng truy cập trang web: Trong marketing số, Linear Regression có thể
được áp dụng để dự đoán lượng truy cập trang web dựa trên các chiến lược quảng cáo
trực tuyến, nội dung, và các yếu tố khác.

- Dự đoán doanh thu: Linear Regression có thể được sử dụng để dự đoán doanh thu
của một công ty dựa trên các yếu tố như chi phí quảng cáo, số lượng khách hàng, và
biến động của thị trường.

10
2.3. K-Neighbors Regressor
2.3.1. Giới thiệu thuật toán
- K-Neighbors Regressor là một thuật toán trong ML được sử dụng cho các bài toán
dự đoán giá trị của biến liên tục dựa trên phương pháp "K-Nearest Neighbors" (KNN),
tức là dự đoán giá trị mới dựa trên giá trị của các điểm dữ liệu lân cận gần nhất.

2.3.2. Mô tả thuật toán


- Thuật toán K-Nearest Neighbors (KNN) không cần quá trình huấn luyện như các
thuật toán Supervised learning khác. Thay vào đó, khi cần dự đoán giá trị cho một điểm
dữ liệu mới, K-Neighbors Regressor sẽ tìm ra điểm dữ liệu gần nhất trong tập huấn luyện
(theo độ đo khoảng cách) và sử dụng giá trị của các điểm này để tính toán giá trị dự đoán
cho điểm mới.

- K-Neighbors Regressor thường được sử dụng trong các tình huống mà không có
sự giả định cụ thể về phân phối của dữ liệu và khi không có nhiều yếu tố phức tạp
ảnh hưởng đến mối quan hệ giữa biến đầu vào và biến đầu ra. Tuy nhiên, việc lựa chọn
phù hợp và hiệu suất của thuật toán có thể phụ thuộc nhiều vào đặc điểm của dữ liệu và
cần được kiểm tra và điều chỉnh một cách cẩn thận.

11
2.3.3. Ưu & nhược điểm
*Ưu điểm:

- KNN là một thuật toán đơn giản và dễ hiểu. Không cần quá nhiều giả định về
dữ liệu hoặc quá trình huấn luyện, điều này làm cho việc triển khai KNN trở nên
đơn giản. KNN không yêu cầu quá trình huấn luyện phức tạp. Một khi đã có dữ liệu
huấn luyện, không cần phải tiến hành bất kỳ xử lý nào để huấn luyện mô hình. KNN
có thể được sử dụng cho cả bài toán phân loại (classification) và bài toán dự đoán
(regression). Nó cũng có thể được áp dụng cho các bài toán có số lượng biến đầu vào
lớn. Nó thường hoạt động tốt với các tập dữ liệu nhỏ hoặc có cấu trúc đơn giản, nơi
các mối quan hệ giữa các biến đầu vào và biến đầu ra là rõ ràng.

*Nhược điểm:

- KNN yêu cầu tính toán khoảng cách giữa điểm dữ liệu dự đoán và tất cả các điểm
trong tập huấn luyện. Điều này có thể làm cho việc dự đoán trở nên chậm chạp, đặc biệt
là với các tập dữ liệu lớn. KNN có thể không hiệu quả khi một số biến đầu vào không
quan trọng hoặc không ảnh hưởng đến kết quả dự đoán. Việc này có thể làm tăng
độ phức tạp của mô hình mà không cải thiện hiệu suất. Việc lựa chọn số lượng
điểm láng giềng K là một thách thức. Một giá trị K không phù hợp có thể dẫn đến
overfitting hoặc underfitting của mô hình. KNN không hoạt động tốt trên các tập dữ liệu
có phân phối không đồng đều, trong đó có quá nhiều điểm dữ liệu trong một lớp và
quá ít điểm dữ liệu trong các lớp khác.

2.3.4. Ứng dụng


- Thuật toán K-Nearest Neighbors có thể được sử dụng trong các hệ thống nhận diện
vật thể để phân loại các đối tượng trong hình ảnh dựa trên đặc trưng của chúng.
Như được sử dụng trong phân tích hình ảnh y tế để phát hiện các bất thường hoặc
các điểm dữ liệu nổi bật trong hình ảnh y tế. Bên cạnh đó, KNN có thể được sử dụng để
xác định và loại bỏ nhiễu từ dữ liệu bằng cách xác định các điểm nhiễu dựa trên
khoảng cách tới các điểm lân cận. Nó có thể được sử dụng để phân tích cấu trúc
không gian của dữ liệu bằng cách ánh xạ các điểm dữ liệu vào không gian nhiều chiều
và xác định mối quan hệ giữa các điểm.

12
CHƯƠNG 3: DỮ LIỆU HUẤN LUYỆN

3.1. Mô tả về dữ liệu huấn luyện và nguồn của dữ liệu huấn luyện


- Trong dự án này, chúng em sử dụng tập dữ liệu “Gold Price Data” được lấy từ
Kaggle. Đây là một tập dữ liệu về các giá trị của một số chỉ số tài chính quan trọng và
tỷ giá trao đổi ngoại tệ. Cụ thể, nó chứa thông tin về các yếu tố sau: Date (Ngày), SPX
(Chỉ số S&P 500), GLD (Giá quỹ ETF GLD), USO (Giá quỹ ETF USO), SLV (Giá quỹ
ETF SLV), EUR/USD (Tỷ giá ngoại tệ EUR/USD). Tập dữ liệu này có thể được sử dụng
để xây dựng các mô hình học máy nhằm dự đoán giá vàng dựa trên các chỉ số tài chính
được cung cấp trong dataset. Mô hình này có thể mang lại nhiều lợi ích, đặc biệt trong
lĩnh vực tài chính và đầu tư. Cụ thể hơn nó sẽ giúp cho các nhà đầu tư nghiên cứu
kỹ càng và đưa ra các chiến lược đầu tư thông minh hơn.

3.2. Mô tả các đặc trưng đầu vào và đầu ra


*Đặc trưng đầu vào:
- Date (Ngày): Đây là cột chứa Thời gian các giá trị được ghi nhận, giúp theo dõi
sự biến động theo thời gian. Có thể được sử dụng để phân tích xu hướng theo thời gian.
Ngày được định dạng theo MM/DD/YYYY (tháng/ngày/năm).

- SPX (Chỉ số S&P 500): Chỉ số S&P 500 là một chỉ số thị trường chứng khoán
đo lường hiệu suất của 500 công ty lớn nhất được niêm yết trên các sàn giao dịch

13
chứng khoán ở Hoa Kỳ. Chỉ số này được sử dụng rộng rãi như một thước đo chính của
thị trường chứng khoán Hoa Kỳ.

- Giá quỹ ETF GLD (Gold): Đây là giá của quỹ hoán đổi danh mục (ETF) SPDR
Gold Shares (GLD). Quỹ này theo dõi giá vàng và cho phép các nhà đầu tư mua cổ phần
của quỹ thay vì mua vàng vật chất.

- Giá quỹ ETF USO (Dầu): Đây là giá của quỹ hoán đổi danh mục (ETF) United
States Oil Fund (USO). Quỹ này theo dõi giá dầu thô và cho phép các nhà đầu tư mua
cổ phần của quỹ thay vì mua dầu thô vật chất.

- Giá quỹ ETF SLV (Bạc): Đây là giá của quỹ hoán đổi danh mục (ETF) iShares
Silver Trust (SLV). Quỹ này theo dõi giá bạc và cho phép các nhà đầu tư mua cổ phần
của quỹ thay vì mua bạc vật chất.

- EUR/USD (Tỷ giá ngoại tệ EUR/USD): Đây là tỷ giá hối đoái giữa đồng Euro
(EUR) và đồng Đô la Mỹ (USD). Tỷ giá này cho biết số lượng Đô la Mỹ cần thiết để
mua một Euro.

*Đặc trưng đầu ra:

- Đầu ra cụ thể sẽ phụ thuộc vào mục tiêu phân tích hoặc dự đoán. Cụ thể hơn là
dự báo giá của một trong các chỉ số tài chính (SPX, GLD, USO, SLV) hoặc dự báo
tỷ giá hối đoái EUR/USD. Ở đây, tụi em chọn dự đoán giá vàng.

3.3. Phân tích về cấu trúc và tính chất của tập dữ liệu
*Cấu trúc của tập dữ liệu:

- Dạng dữ liệu: Bảng

- Số lượng cột: 6 cột (1 cột về thời gian và 5 cột về giá trị tài chính)

- Số lượng hàng: 2290 hàng

*Tính chất của tập dữ liệu:

- Date:

+ Kiểu dữ liệu: datetime

14
+ Mức độ biến động: Liên tục theo ngày

- SPX, GLD, USO, SLV, EUR/USD:

+ Kiểu dữ liệu: float

+ Mức độ biến động: Các giá trị biến động theo thời gian, phản ánh sự thay đổi của
thị trường tài chính và các yếu tố kinh tế.

+ Tính chất đặc biệt:

• SPX: Có thể biến động mạnh trong các giai đoạn khủng hoảng tài chính hoặc
tăng trưởng kinh tế.
• GLD: Thường có xu hướng ngược chiều với các chỉ số chứng khoán trong
thời kỳ bất ổn.
• USO: Bị ảnh hưởng mạnh bởi giá dầu toàn cầu, chính sách của OPEC và các
sự kiện địa chính trị.
• SLV: Biến động theo giá bạc, có thể có mối tương quan với GLD.
• EUR/USD: Bị ảnh hưởng bởi chính sách tiền tệ, sự khác biệt lãi suất giữa
Eurozone và Mỹ, và các yếu tố kinh tế vĩ mô khác.

3.4. Các bước tiền xử lý dữ liệu trước khi đưa vào huấn luyện mô hình
- Đọc dữ liệu: Đọc dữ liệu từ file CSV vào một DataFrame của pandas.

- Kiểm tra dữ liệu:

+ Hiển thị 5 hàng đầu tiên của DataFrame. Giúp kiểm tra nhanh cấu trúc và các giá trị
đầu tiên của dữ liệu.

15
+ Hiển thị 5 hàng cuối cùng của DataFrame. Kiểm tra các giá trị cuối cùng để đảm bảo
dữ liệu đã được đọc đúng và đầy đủ.

+ Hiển thị kích thước của DataFrame (số hàng và số cột). Trả về một tuple gồm
(số hàng, số cột), giúp hiểu rõ quy mô của dữ liệu.

+ Hiển thị thông tin tổng quan về DataFrame. Cung cấp thông tin về các cột, loại
dữ liệu, và số lượng giá trị không rỗng trong mỗi cột.

+ Kiểm tra và đếm số lượng giá trị bị thiếu trong mỗi cột. Trả về một Series với số lượng
giá trị bị thiếu (null) trong mỗi cột, giúp nhận diện các cột cần xử lý thiếu dữ liệu.

16
+ Tạo ra một bảng thống kê mô tả các đặc trưng cơ bản của dữ liệu số. Cung cấp các
thống kê như trung bình (mean), độ lệch chuẩn (std), giá trị tối thiểu (min), các
percentiles (25%, 50%, 75%), và giá trị tối đa (max).

- Loại bỏ cột không cần thiết: Loại bỏ cột 'Date' khỏi DataFrame và tạo ra một
DataFrame mới với cột 'Date' bị loại bỏ, vì cột này không cần thiết cho các phân tích
tương quan.

- Tính toán ma trận tương quan: Tính toán ma trận tương quan giữa các cột trong
DataFrame. Tính toán hệ số tương quan giữa các cột số, cho biết mức độ và hướng
mối quan hệ giữa các biến.

17
- Vẽ ma trận tương quan: Vẽ biểu đồ ma trận tương quan dưới dạng heatmap.

- In ra hệ số tương quan giữa GLD và các cột khác: Giúp kiểm tra nhanh mối
quan hệ giữa GLD và các biến số khác trong dữ liệu.

18
- Vẽ biểu đồ phân phối giá trị GLD: Sử dụng seaborn để tạo một biểu đồ phân phối
giúp trực quan hóa phân phối của giá GLD.

- Tách dữ liệu thành đầu vào (X) và đầu ra (Y): (X) chứa tất cả các cột ngoại trừ
'Date' và 'GLD', (Y) chứa chỉ cột 'GLD'. Việc này chuẩn bị dữ liệu cho quá trình
huấn luyện mô hình, với (X) là đầu vào và (Y) là mục tiêu dự đoán.

- Chia dữ liệu thành tập huấn luyện và tập kiểm tra: Với 80% cho huấn luyện và 20%
cho kiểm tra. Random_state = 2 đảm bảo việc chia dữ liệu là ngẫu nhiên nhưng tái lập
lại được để có kết quả nhất quán khi chạy lại.

19
CHƯƠNG 4: LƯU ĐỒ THUẬT TOÁN ĐỂ HUẤN LUYỆN MÔ HÌNH

4.1. Lưu đồ giải thuật

20
4.2. Giải thích hoạt động của lưu đồ giải thuật
1. Start:

- Thực hiện các import cần thiết cho pandas, numpy, matplotlib, seaborn, và các
mô hình học máy từ sklearn.

2. Nhập dữ liệu và tiền xử lý dữ liệu:

- Đọc dữ liệu từ file CSV vào DataFrame.

- Hiển thị các thông tin cơ bản của dữ liệu nhằm mục đích kiểm tra dữ liệu để hiểu
cấu trúc và tính chất.

- Tính toán ma trận tương quan giữa các biến.

- Vẽ biểu đồ heatmap của ma trận tương quan để trực quan hóa mối quan hệ giữa
các biến.

- Vẽ biểu đồ phân phối của giá GLD.

3. Chia dữ liệu thành tập huấn luyện và kiểm tra:

- Tách dữ liệu thành các biến đầu vào (features) và biến mục tiêu (target).

- Chia dữ liệu thành tập huấn luyện và tập kiểm tra.

4. Huấn luyện mô hình:

- Huấn luyện và dự đoán với các mô hình học máy khác nhau (Random Forest, Linear
Regression, KNN).

5. Đánh giá mô hình:

- Đánh giá hiệu suất của các mô hình bằng các chỉ số như MAE, MSE, và R-squared.

6. End:

- Quy trình kết thúc sau khi các mô hình được đánh giá.

21
CHƯƠNG 5: CODE CHƯƠNG TRÌNH HUẤN LUYỆN

5.1. Nhập thư viện


- Nhập các thư viện cần thiết cho việc xây dựng mô hình huấn luyện:

• numpy: Thư viện tính toán mảng và số học.


• pandas: Thư viện xử lý và phân tích dữ liệu.
• matplotlib.pyplot: Thư viện vẽ biểu đồ.
• seaborn: Thư viện vẽ biểu đồ nâng cao dựa trên matplotlib.
• sklearn.metrics: Cung cấp các hàm tính toán chỉ số đánh giá mô hình.
• sklearn.model_selection.train_test_split: Chia dữ liệu thành tập huấn luyện và
kiểm tra.
• sklearn.ensemble.RandomForestRegressor: Mô hình học máy Random Forest
để hồi quy.
• sklearn.linear_model.LinearRegression: Mô hình học máy Linear Regression.
• sklearn.neighbors.KNeighborsRegressor: Mô hình học máy K-Nearest
Neighbors (KNN) để hồi quy.

*Code nguồn có bổ sung thêm hai thư viện Linear Regression và K-Nearest Neighbors.

5.2. Đọc file dữ liệu và hiển thị các thông tin cần thiết
- Đọc dữ liệu từ file “gld_price_data.csv” vào DataFrame của pandas.

*Code nguồn.

22
- gold_data.head(): Hiển thị 5 hàng đầu tiên của DataFrame. Giúp kiểm tra nhanh
cấu trúc và các giá trị đầu tiên của dữ liệu.

*Code nguồn.

- gold_data.tail(): Hiển thị 5 hàng cuối cùng của DataFrame. Kiểm tra các giá trị
cuối cùng để đảm bảo dữ liệu đã được đọc đúng và đầy đủ.

*Code nguồn.

- gold_data.shape: Hiển thị kích thước của DataFrame (số hàng, số cột).

*Code nguồn.

- gold_data.info(): Hiển thị thông tin tổng quan về DataFrame. Cung cấp thông tin
về các cột, loại dữ liệu, và số lượng giá trị không rỗng trong mỗi cột.

23
*Code nguồn.

- gold_data.isnull().sum(): Đếm số lượng giá trị bị thiếu trong mỗi cột.

*Code nguồn.

- gold_data.describe(): Tạo ra một bảng thống kê mô tả các đặc trưng cơ bản của
dữ liệu số. Cung cấp các thống kê như trung bình (mean), độ lệch chuẩn (std), giá trị
tối thiểu (min), các percentiles (25%, 50%, 75%), và giá trị tối đa (max).

*Code nguồn.

24
5.3. Tiền xử lý dữ liệu
- Tính toán ma trận tương quan:

• date_column = 'Date': Đặt tên cột 'Date' vào biến date_column.


• gold_data_temp = gold_data.drop(columns=[date_column]): Tạo DataFrame
mới mà không có cột 'Date'.
• correlation = gold_data_temp.corr(): Tính toán ma trận tương quan giữa các
cột số.
• print(correlation): In ra ma trận tương quan.

*Code nguồn cải tiến thành tính ma trận tương quan của DataFrame không có cột Date.

- Vẽ biểu đồ ma trận tương quan:

• plt.figure(figsize = (8,8)): Tạo biểu đồ với kích thước 8x8 inches.


• sns.heatmap(correlation, cbar=True, square=True, fmt='.1f', annot=True,
annot_kws={'size':8}, cmap='Blues'): Vẽ biểu đồ heatmap của ma trận
tương quan với thanh màu (color bar), các ô trong heatmap có hình vuông,
các giá trị sẽ được hiển thị với 1 chữ số thập phân, hiển thị giá trị số của hệ số
tương quan trên từng ô của heatmap, kích thước phông chữ của các giá trị
chú thích là 8 và bảng màu 'Blues' để biểu diễn giá trị.

25
*Code nguồn.

- print(correlation['GLD']): In ra hệ số tương quan giữa GLD và các cột khác.


Giúp kiểm tra nhanh mối quan hệ giữa GLD và các biến số khác trong dữ liệu.

*Code nguồn.

- sns.distplot(gold_data['GLD'],color='green'): Vẽ biểu đồ phân phối của giá GLD


với màu xanh lá cây.

26
*Code nguồn.

5.4. Chia dữ liệu


- Tách dữ liệu thành biến đầu vào và biến mục tiêu:

• X = gold_data.drop(['Date','GLD'],axis=1): Biến đầu vào (features) không


bao gồm cột 'Date' và 'GLD'.
• Y = gold_data['GLD']: Biến mục tiêu (target) là cột 'GLD'.

*Code nguồn.

27
• print(X): Hiển thị các biến đầu vào.

*Code nguồn.

• print(Y): Hiển thị biến mục tiêu.

*Code nguồn.

- Chia dữ liệu thành tập huấn luyện và kiểm tra:

• X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2,


random_state=2): Chia dữ liệu thành tập huấn luyện (80%) và tập kiểm tra (20%),
với seed ngẫu nhiên là 2 để đảm bảo kết quả tái lập lại được.

*Code nguồn.

28
5.5. Huấn luyện mô hình
- Huấn luyện mô hình sử dụng thuật toán Random Forest Regressor:

• regressor = RandomForestRegressor(n_estimators=100): Khởi tạo mô hình


Random Forest với 100 cây quyết định.
• regressor.fit(X_train,Y_train): Huấn luyện mô hình trên tập huấn luyện.

*Code nguồn.

- Dự đoán với mô hình với Random Forest Regressor:

• test_data_prediction = regressor.predict(X_test): Dự đoán giá trị trên


tập kiểm tra.
• print(test_data_prediction): In ra các giá trị dự đoán.

*Code nguồn.

- Huấn luyện mô hình sử dụng thuật toán Linear Regression:

• linear_regressor = LinearRegression(): Khởi tạo mô hình Linear Regression.


• linear_regressor.fit(X_train, Y_train): Huấn luyện mô hình trên tập huấn luyện.

- Dự đoán với mô hình với Linear Regression:

• linear_pred = linear_regressor.predict(X_test): Dự đoán giá trị trên tập kiểm tra.


• print(linear_pred): In ra các giá trị dự đoán.

*Code bổ sung.

29
- Huấn luyện mô hình sử dụng thuật toán K-Neighbors Regressor:

• knn_regressor = KNeighborsRegressor(n_neighbors=5): Khởi tạo mô hình


K-Neighbors Regressor với số lượng láng giềng (neighbors) là 5.
• knn_regressor.fit(X_train, Y_train): Huấn luyện mô hình trên tập huấn luyện.

- Dự đoán với mô hình với K-Neighbors Regressor:

• knn_pred = knn_regressor.predict(X_test): Dự đoán giá trị trên tập kiểm tra.


• print(knn_pred): In ra các giá trị dự đoán.

*Code bổ sung.

5.6. Đánh giá chất lượng mô hình


- Vẽ biểu đồ so sánh giữa giá trị thực tế (Actual Value) và giá trị dự đoán (Predicted
Value) của mô hình tương ứng với ba thuật toán Random Forest Regressor, Linear
Regression, K-Neighbors Regressor:

• Y_test = list(Y_test): Chuyển đổi biến Y_test từ kiểu dữ liệu (thường là Series
của pandas) sang danh sách (list) của Python.

*Code nguồn.

• plt.figure(figsize=(10, 6)): Tạo một figure mới với kích thước 10 inch (chiều
rộng) x 6 inch (chiều cao).
• plt.scatter(range(len(Y_test)), Y_test, color='blue', label='Actual Value'): Vẽ
biểu đồ scatter (điểm) của giá trị thực tế (Actual Value).
+ range(len(Y_test)): Trục x, đại diện cho chỉ số của mỗi điểm dữ liệu.
+ Y_test: Trục y, đại diện cho giá trị thực tế của GLD.
+ color='blue': Màu của các điểm là màu xanh dương.

30
+ label='Actual Value': Nhãn của các điểm dữ liệu thực tế, sẽ xuất hiện trong
phần chú thích (legend).
• plt.plot(range(len(Y_test)), test_data_prediction, color='green', label='Random
Forest Regressor Predicted Value'): Vẽ biểu đồ đường của giá trị dự đoán
(Predicted Value) từ mô hình Random Forest.
+ range(len(Y_test)): Trục x, đại diện cho chỉ số của mỗi điểm dữ liệu.
+ test_data_prediction: Trục y, đại diện cho giá trị dự đoán của GLD từ mô hình
Random Forest.
+ color='green': Màu của đường là màu xanh lá cây.
+ label='RandomForest Regressor Predicted Value': Nhãn của đường dữ liệu
dự đoán, sẽ xuất hiện trong phần chú thích (legend).
• plt.title('RandomForest Regressor: Actual Price vs Predicted Price'): Thêm
tiêu đề cho biểu đồ.
• plt.xlabel('Number of values'): Thêm nhãn cho trục x (số lượng giá trị).
• plt.ylabel('GLD Price'): Thêm nhãn cho trục y (giá GLD).
• plt.legend(): Hiển thị chú thích (legend) cho biểu đồ, giúp phân biệt giữa giá trị
thực tế và giá trị dự đoán.
• plt.show(): Hiển thị biểu đồ.

31
*Code bổ sung.

*Code bổ sung.

32
*Code bổ sung.

- Tính toán và cho hiển thị các chỉ số đánh giá MAE, MSE và R-squared của mô hình
tương ứng với ba thuật toán Random Forest Regressor, Linear Regression, K-Neighbors
Regressor:

• MAE_RF = metrics.mean_absolute_error(Y_test, test_data_prediction): Tính


toán Mean Absolute Error (MAE) giữa giá trị thực tế và giá trị dự đoán.
• print("Mean Absolute Error (MAE) of Random Forest Regressor:", MAE_RF):
In ra giá trị MAE.
• MSE_RF = metrics.mean_squared_error(Y_test, test_data_prediction): Tính
toán Mean Squared Error (MSE) giữa giá trị thực tế và giá trị dự đoán.
• print("Mean Squared Error (MSE) of Random Forest Regressor:", MSE_RF): In
ra giá trị MSE.
• R_squared_RF = metrics.r2_score(Y_test, test_data_prediction): Tính toán hệ số
xác định R-squared (R²) giữa giá trị thực tế và giá trị dự đoán.
• print("R-squared (R^2) of Random Forest Regressor:", R_squared_RF): In ra
giá trị R².
33
*Code bổ sung.

*Code bổ sung.

*Code bổ sung.

34
CHƯƠNG 6: PHÂN TÍCH ĐÁNH GIÁ KẾT QUẢ MÔ HÌNH ĐẠT ĐƯỢC

6.1. Random Forest Regressor

*Chú thích:

• Các điểm màu xanh dương (Actual Value): Giá trị thực tế của GLD từ
tập kiểm tra.
• Đường màu xanh lá cây (RandomForest Regressor Predicted Value): Giá trị
dự đoán của GLD từ mô hình Random Forest Regressor.

- Từ biểu đồ trên, ta có thể thấy được:

• Các điểm màu xanh dương (giá trị thực tế) và đường màu xanh lá cây (giá trị
dự đoán) có sự trùng khớp khá tốt, cho thấy mô hình Random Forest dự đoán gần
với giá trị thực tế.
• Biểu đồ thể hiện sự biến động giá GLD khá lớn, từ khoảng dưới 80 đến trên 180.
• Mặc dù có sự biến động lớn, đường dự đoán vẫn theo sát xu hướng của giá trị
thực tế, chứng tỏ mô hình có khả năng xử lý tốt các biến động trong dữ liệu.

35
• Một số đoạn trên biểu đồ, giá trị dự đoán có sự chênh lệch so với giá trị thực tế,
đặc biệt ở các điểm cực trị (cao nhất hoặc thấp nhất).
• Tuy nhiên, nhìn chung, mức độ sai số không quá lớn và mô hình vẫn duy trì được
độ chính xác cao trong phần lớn các trường hợp.

- Mean Absolute Error (MAE) of Random Forest Regressor: 1.3404583615065466


có nghĩa là trung bình dự đoán của mô hình sai lệch khoảng 1.34 đơn vị so với giá trị
thực tế của GLD.

- Mean Squared Error (MSE) of Random Forest Regressor: 5.52049095470373 có


nghĩa là trung bình bình phương sai số giữa dự đoán của mô hình và giá trị thực tế của
GLD là 5.52.

- R-squared (R^2) of Random Forest Regressor: 0.9895334932597276 có nghĩa là


98.95% biến động của giá trị GLD có thể được dự đoán bởi mô hình Random Forest,
cho thấy mô hình có độ chính xác cao.

6.2. Linear Regression

36
*Chú thích:

• Các điểm màu xanh dương (Actual Value): Giá trị thực tế của GLD từ
tập kiểm tra.
• Đường màu xanh lá cây (RandomForest Regressor Predicted Value): Giá trị
dự đoán của GLD từ mô hình Random Forest Regressor.

- Từ biểu đồ trên, ta có thể thấy được:

• Các điểm màu xanh dương (giá trị thực tế) và đường màu xanh lá cây (giá trị
dự đoán) có sự trùng khớp nhất định.
• Đường màu xanh lá cây có xu hướng theo sau các điểm màu xanh dương nhưng
với nhiều biến động lớn hơn, cho thấy mô hình Linear Regression không dự đoán
chính xác bằng Random Forest.
• Biểu đồ thể hiện sự biến động giá GLD khá lớn, từ khoảng dưới 80 đến trên 180.
• Mặc dù có sự biến động lớn nhưng đường dự đoán vẫn không theo sát xu hướng
của giá trị thực tế như trong mô hình Random Forest, chứng tỏ Linear Regression
không xử lý tốt các biến động trong dữ liệu.
• Có nhiều đoạn trên biểu đồ mà giá trị dự đoán có sự chênh lệch rõ rệt so với
giá trị thực tế.
• Đặc biệt ở các đoạn giá trị thực tế cao hoặc thấp, đường dự đoán có xu hướng
không theo kịp, cho thấy mô hình Linear Regression gặp khó khăn trong việc
dự đoán các giá trị cực trị.

- Mean Absolute Error (MAE) of Linear Regression: 5.9114867357777605 có nghĩa


là trung bình dự đoán của mô hình sai lệch khoảng 5.91 đơn vị so với giá trị thực tế của
GLD.

- Mean Squared Error (MSE) of Linear Regression: 70.78890079721535 có nghĩa là


trung bình bình phương sai số giữa dự đoán của mô hình và giá trị thực tế của GLD là
70.78.

- R-squared (R^2) of Linear Regression: 0.8657886565869236 có nghĩa là 86.57%


biến động của giá trị GLD có thể được dự đoán bởi mô hình Linear Regression, cho thấy
mô hình có độ chính xác cao nhưng kém hơn mô hình Random Forest.
37
6.3. K-Neighbors Regressor

*Chú thích:

• Các điểm màu xanh dương (Actual Value): Giá trị thực tế của GLD từ
tập kiểm tra.
• Đường màu xanh lá cây (RandomForest Regressor Predicted Value): Giá trị
dự đoán của GLD từ mô hình Random Forest Regressor.

- Từ biểu đồ trên, ta có thể thấy được:

• Đường màu xanh lá cây theo sát các điểm màu xanh dương, nhưng có nhiều
dao động và biến động hơn so với mô hình Random Forest, cho thấy mô hình
KNN cũng dự đoán tốt nhưng vẫn có những sai lệch nhất định.
• Biểu đồ thể hiện sự biến động giá GLD khá lớn, từ khoảng dưới 80 đến trên 180.
• Mặc dù có sự biến động lớn, đường dự đoán của KNN có thể theo sát xu hướng
của giá trị thực tế hơn so với Linear Regression, nhưng vẫn kém hơn so với
Random Forest.

38
• Có nhiều đoạn trên biểu đồ mà giá trị dự đoán có sự chênh lệch rõ rệt so với
giá trị thực tế, đặc biệt ở các giá trị cực trị.
• Tuy nhiên, sự sai lệch này không quá lớn và phân bố đều, cho thấy KNN xử lý
tốt hơn Linear Regression nhưng vẫn có một số hạn chế so với Random Forest.

- Mean Absolute Error (MAE) of KNN Regression: 3.975908673362446 có nghĩa là


trung bình dự đoán của mô hình sai lệch khoảng 3.97 đơn vị so với giá trị thực tế của
GLD.

- Mean Squared Error (MSE) of KNN Regression: 34.86469067219383 có nghĩa là


trung bình bình phương sai số giữa dự đoán của mô hình và giá trị thực tế của GLD là
34.86.

- R-squared (R^2) of KNN Regression: 0.9338987197131254 có nghĩa là 93.38%


biến động của giá trị GLD có thể được dự đoán bởi mô hình KNN Regression, cho thấy
mô hình có độ chính xác cao tốt hơn Linear Regression nhưng kém hơn Random Forest.

6.4. So sánh, đánh giá và lựa chọn thuật toán tốt nhất cho mô hình
*So sánh, đánh giá các thuật toán sử dụng cho mô hình:

1. Mean Absolute Error (MAE):


• Mô hình Random Forest có MAE nhỏ nhất, cho thấy dự đoán của nó gần với
giá trị thực tế nhất.
• Mô hình Linear Regression có MAE lớn nhất, cho thấy sai lệch trung bình giữa
giá trị dự đoán và giá trị thực tế là lớn nhất trong ba mô hình.
• Mô hình KNN có MAE trung bình, tốt hơn Linear Regression nhưng kém hơn
Random Forest.
2. Mean Squared Error (MSE):
• MSE của Random Forest là nhỏ nhất, cho thấy nó xử lý tốt nhất các sai số lớn.
• Mô hình Linear Regression có MSE lớn nhất, cho thấy sai lệch bình phương
trung bình giữa giá trị dự đoán và giá trị thực tế là lớn nhất.
• MSE của KNN trung bình, tốt hơn Linear Regression nhưng kém hơn Random
Forest.

39
3. R-squared (R²):
• R² của Random Forest là cao nhất, gần với 1, cho thấy nó dự đoán được nhiều
biến động của giá trị GLD nhất.
• R² của Linear Regression là thấp nhất, cho thấy nó dự đoán được ít biến động của
giá trị GLD nhất.
• R² của KNN trung bình, tốt hơn Linear Regression nhưng kém hơn Random
Forest.

*Kết luận:

- Mô Hình Tốt Nhất: Random Forest Regressor.

• MAE nhỏ nhất: Mô hình Random Forest có sai số tuyệt đối trung bình nhỏ nhất,
cho thấy dự đoán của nó gần với giá trị thực tế nhất.
• MSE nhỏ nhất: Mô hình Random Forest có sai số bình phương trung bình nhỏ
nhất, cho thấy nó xử lý tốt nhất các sai số lớn và ít nhạy cảm với các giá trị
ngoại lệ.
• R² cao nhất: Mô hình Random Forest dự đoán được nhiều biến động của giá trị
GLD nhất, chứng tỏ nó có độ chính xác cao trong việc dự đoán.

40
CHƯƠNG 7: KẾT LUẬN

7.1. Danh sách các công việc thực hiện và kết quả đạt được

STT Nội dung công việc Mức độ hoàn thành

1 Thu thập dữ liệu Tốt

2 Tiền xử lý dữ liệu Tốt

3 Phân tích dữ liệu Tốt

4 Chia tập dữ liệu Tốt

5 Xây dựng mô hình huấn luyện Tốt

6 Đánh giá mô hình huấn luyện Tốt

7 Viết báo cáo Tốt

7.2. Nhược điểm của mô hình huấn luyện


- Chương trình chỉ sử dụng một lần chia dữ liệu thành tập huấn luyện và kiểm tra,
không kiểm tra tính ổn định của mô hình qua nhiều lần chia.

- Chương trình sử dụng các tham số mặc định cho các mô hình học máy mà không
thực hiện điều chỉnh tham số để tối ưu hiệu suất của mô hình.

- Chương trình chỉ tính toán các chỉ số MAE, MSE và R² nhưng không thực hiện
so sánh chi tiết giữa các mô hình hoặc vẽ các biểu đồ khác để đánh giá hiệu suất.

- Chương trình không xem xét hoặc phân tích tầm quan trọng của các đặc trưng
(features) để hiểu rõ hơn về ảnh hưởng của từng đặc trưng đến mô hình.

41
7.3. Giải pháp đề xuất
- K-Fold Cross-Validation: Sử dụng kỹ thuật K-Fold Cross-Validation để kiểm tra
tính ổn định và độ tin cậy của mô hình qua nhiều lần chia dữ liệu khác nhau.

- Grid Search hoặc Random Search: Sử dụng các kỹ thuật tìm kiếm như Grid Search
hoặc Random Search để tìm kiếm và tối ưu các tham số của mô hình.

- Thống Kê So Sánh: Sử dụng các thống kê như t-test hoặc Wilcoxon signed-rank
test để so sánh hiệu suất của các mô hình.

- Feature Importance: Sử dụng các kỹ thuật như Feature Importance từ mô hình


Random Forest hoặc Permutation Importance để xác định các đặc trưng quan trọng và
loại bỏ các đặc trưng không cần thiết.

42
TÀI LIỆU THAM KHẢO

[1]. Andreas C. Müller and Sarah Guido, Introduction to Machine Learning with
Python - A Guide for Data Scientists, 2017

[2]. Chris Albon, Machine Learning with Python Cookbook - Practical Solutions from
Preprocessing to Deep Learning, 2018

[3]. Vũ Hữu Tiệp, Machine Learning cơ bản, 2020

[4]. Siddhardhan, Gold Price Prediction using Machine Learning with Python | Machine
Learning Projects.

Link:
https://www.youtube.com/watch?v=9ffkBvh8PTQ&list=PLfFghEzKVmjvuSA67Lsz
N1dZ-Dd_pkus6&index=92

43

You might also like