Professional Documents
Culture Documents
Mao Đình Huân - REPORT
Mao Đình Huân - REPORT
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.
3
NỘI DUNG
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN
- 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.
+ 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
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.
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.
- Đầ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
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.
- 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.
- 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.
12
CHƯƠNG 3: DỮ LIỆU HUẤN LUYỆN
- 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.
- Đầ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:
- 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)
- Date:
14
+ Mức độ biến động: Liên tục theo ngày
+ 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ế.
• 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.
+ 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
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.
- 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.
- 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.
- Tách dữ liệu thành các biến đầu vào (features) và biến mục tiêu (target).
- 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).
- Đá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
*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.
*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:
*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.
25
*Code nguồn.
*Code nguồn.
26
*Code nguồn.
*Code nguồn.
27
• print(X): Hiển thị các biến đầu vào.
*Code nguồn.
*Code nguồn.
*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:
*Code nguồn.
*Code nguồn.
*Code bổ sung.
29
- Huấn luyện mô hình sử dụng thuật toán K-Neighbors Regressor:
*Code bổ sung.
• 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:
*Code bổ sung.
*Code bổ sung.
34
CHƯƠNG 6: PHÂN TÍCH ĐÁNH GIÁ KẾT QUẢ MÔ HÌNH ĐẠT ĐƯỢC
*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.
• 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.
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.
• 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ị.
*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.
• Đườ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.
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:
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:
• 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
- 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.
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
[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