HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN 2 TÌM HIỂU VỀ THUẬT TOÁN DỰ ĐOÁN GIÁ TRỊ TIỀN ĐIỆN TỬ INVESTIGATE CRYPTOCURRENCY PRICE PREDICTION
Cơ sở lý thuyết
Bài toán dự đoán giá trị
Có thể hiểu đơn giản bài toán dự đoán là việc gửi đầu vào là các dữ liệu cũ, có thể là các thông tin trên thị trường, … và trả về kết quả dự đoán cho những ngày tiếp theo mà người dùng mong đợi Điều khó khăn ở đây là làm thế nào xác định được công thức để tính toán ra kết quả dự đoán dựa trên những thông tin đầu vào nêu trên Các thuật toán dự đoán sẽ dựa trên một vài đặc trưng, thông tin nhất định để đưa ra kết quả mong muốn
Một đặc điểm nổi bật của bài toán dự đoán là sự kết hợp của hai bài toán Đầu tiên là bài toán thu thập dữ liệu và tiền xử lý dữi liệu– hệ thống máy tính cố gắng để thu thập dữ liệu và trích xuất các dữ liệu có thể được tổ chức trong hệ thống máy tính
Thứ hai là bài toán xây dựng mô hình dự đoán dựa trên những dữ liệu đã được xử lý trước – hệ thống máy tính lấy các dữ liệu đã được tổ chức trong hệ thống máy tính và chuyển thành các giá trị kết quả trước khi hiển thị ra cho người dùng.
Các hướng tiếp cận bài toán dự đoán
2.2.1 Hướng tiếp cận ngây thơ
Cách thức dự đoán cơ bản gồm hai thành phần chính:
- Hệ thống xử lý thông tin đầu vào
- Hệ thống biên soạn thông tin đầu ra
Về cơ bản, hệ thống sẽ được lập trình để kiểm tra so khớp thông tin đầu vào và sử dụng một công thức đã định nghĩa sẵn, sau đó trả ra kết quả Rõ ràng cách xử lý này còn bộc lộ nhiều hạn chế cần được giải quyết
2.2.2 Hướng tiếp cận mạng nơron Ở đây mạng nơron được nhắc đến là mạng nơron hồi quy – Recurrent Neural Network) Nguyên lý cơ bản của mạng nơron hồi quy đó là hệ thống sẽ bao gồm một lớp dữ liệu đầu vào, một số lớp dữ liệu ẩn, và một lớp dữ liệu đầu ra Mỗi lớp (layer)
4 sẽ có một số nút là một hàm số (thường là các hàm số có đồ thị hình chữ S như hàm sigmoid, hàm tanh, …) và một trọng số Mạng nơron sẽ được huấn luyện bằng cách đưa một tập dữ liệu đầu vào, và kết quả mong đợi ở đầu ra Nhiệm vụ của mạng nơron là điều chỉnh các trọng số trong mỗi nút ẩn để đưa ra được kết quả như mong đợi trong tập huấn luyện và sử dụng phương pháp truyền ngược sai số (Back Propagation)
Hình 2-1 Minh họa Mạng nơ ron
Có thể hiểu đơn giản đầu vào của mạng nơron là thể hiện của các số liệu và đầu ra là trọng số tương đương với mong muốn của người dùng Để có thể thực hiện việc huấn luyện cho mạng nơron một cách có hiệu quả, nên thực hiện các bước tiền xử lý cho dữ liệu đầu vào:
- Chuẩn hóa (Normalization): Việc chuyển đổi dữ liệu thô về chung một cấu trúc dữ liệu (Ví dụ lọc các dữ liệu cần thiết từ đồ thị nến, trích xuất thông tin từ các thông tin trên thị trường)
Có thể thấy rằng với hướng tiếp cận này, việc phân tích dữ liệu đầu vào trở nên phức tạp hơn, nhờ đó đêm lại kết quả chính xác hơn so với hướng tiếp cận trước Việc quan tâm đến các thông tin ngoài lề, thông tin tiền tệ, … giúp cho hệ thống có thể học sâu hơn về thông tin người dùng đưa vào
2.2.3 Hướng tiếp cận sử dụng mô hình mạng nơron nâng cấp - LSTM
Mạng nơron hồi quy có một vấn đề gặp phải đó là vấn đề phụ thuộc xa Điểm nổi bật của RNN là kết nối các thông tin phía trước để dự đoán cho hiện tại Tuy nhiên
5 trong một vài trường hợp, xem lại thông tin vừa có thôi là không đủ, khi này khoảng cách thông tin cần xem xét là một khoảng dài Khi này một mô hình thuật toán mới – Long Short-Term Memory ra đời để khắc phục vấn đề của mạng nơron hồi quy truyền thống Kiến trúc của LSTM tương tự với mạng RNN thuần, tuy nhiên cấu trúc khác Thay vì chỉ có một tầng mạng nơ-ron, chúng có tới 4 tầng tương tác với nhau một cách đặc biệt
Hình 2-2 Minh họa mạng nơ-ron hồi quy truyền thống
Chìa khóa của LSTM là trạng thái tế bào (cell state), nó chạy xuyên suốt tất cả các mắt xích, LSTM có khả năng bỏ đi hoặc thêm các thông tin cần thiết cho trạng thái tế bào, chúng được điều chỉnh bởi các cổng (gate) Các cổng đó bao gồm “tầng cổng quên” (forget gate layer) sẽ quyết định thông tin nào được bỏ đi, “tầng cổng vào” (input gate layer) quyết định giá trị nào được cập nhật, cuối cùng là một cổng đầu ra để quyết định giá trị nào được xuất ra
Hình 2-3 Minh họa mạng nơ-ron LSTM
Jupyter Notebook
Jupyter là một nền tảng tính toán khoa học mã nguồn mở, với khả năng cho phép tương tác trực tiếp với những dòng code, hỗ trợ hơn 40 ngôn ngữ lập trình, trong đó tập trung vào 3 ngôn ngữ là Julia, Python và R Bên cạnh đó, Jupyter cũng là một công cụ hoàn toàn miễn phí, được tạo ra với mục đích nhắm đến khoa học dữ liệu và giáo dục
Jupyter Notebook cơ bản là một ứng dụng chạy trên nền web cho phép chạy
Interactive Python Người dùng có thể đưa cả code Python và các thành phần văn bản phức tạp như hình ảnh, công thức, video, biểu thức, … vào trong một file giúp cho việc trình bày trở nên dễ hiểu, giống như một file trình chiếu nhưng lại có thể thực hiện chạy code tương tác trên đó, cốt lõi của việc này chính là Markdown Các file “notebook” có thể được chia sẻ với mọi người và có thể thực hiện lại các công đoạn một cách nhanh chóng và chính xác những gì đã làm trong quá trình tạo file
Google Colab
Hình 2-5 Google Colab (Colaboratory)
Colaboratory hay Google Colab là một dạng Jupyter Notebook tùy biến cho phép thực thi Python trên nền tảng đám mây, được cung cấp bởi Google Người dùng có thể chạy các notebook ở bất kỳ thiết bị nào có kết nối internet mà không cần cài đặt, ngoài ra cung cấp phương thức chia sẻ, làm việc nhóm dễ dàng, sử dụng miễn phí GPU, TPU cho các dự án liên quan đến khoa học dữ liệu, học máy và giáo dục
Colab cung cấp các thư viện có sẵn như Numpy, Pandas, … hay các thư viện liên quan đến machine learning như Keras, Pytorch, Tensorflow, … Các thông tin sẽ được lưu trữ trên đám mây, chúng được lưu trong tài khoản Google Drive tương tự như Google Docs và Google Sheets Tương tự vậy, tính năng chia sẻ cũng được áp dụng một cách hiệu quả cho các nhà phát triển với Google Colab Notebook.
Yahoo Finance
Yahoo Finance là một nền tảng truyền thông, là một phần của mạng lưới Yahoo Nó cung cấp các tin tức tài chính, dữ liệu và các bài viết bao gồm giá cả chứng khoán, thông cáo báo chí, báo cáo tài chính, và các nội dung khác Nó cũng cung cấp một
8 vài công cụ online cho quản lý tài chính cá nhân Ngoài các bài viết có nội dung từ các đối tác, bản thân nền tảng cũng đăng tải các thông tin bởi đội ngũ nội bộ Yahoo Finance được xếp hạng 20 trong danh sách các website tin tức và truyền thông lớn nhất bởi SimilarWeb
Liên quan đến nội dung tìm hiểu, Yahoo Finance cung cấp bộ dữ liệu cho các đồng tiền điện tử bao gồm các thông tin giao dịch hằng ngày, các tin tức liên quan và đặc biệt là lịch sử giao dịch từ ngày bắt đầu lên sàn cho tới ngày hiện tại Qua đó cung cấp một khối lượng lớn các thông tin cần thiết phục vụ cho các mục đích học thuật, nghiên cứu, …
Phân tích dữ liệu
Thu thập dữ liệu
- Tổng số ngày trong bộ dữ liệu: 2995
- Tổng số trường thông tin trong bộ dữ liệu: 7
- Dữ liệu trong 5 ngày đầu tiên:
Hình 3-1 Bộ dữ liệu trong 5 ngày đầu
- Dữ liệu trong 5 ngày cuối cùng
Hình 3-2 Bộ dữ liệu trong 5 ngày cuối cùng
Hình 3-3 Thông tin tổng quát về bộ dữ liệu
- Biểu đồ giá Open và Close trong từng tháng
Hình 3-4 Biểu đồ giá Open và Close các tháng năm 2014
- Biểu đồ giá Open, High, Low và Close trong năm 2014
Hình 3-5 Biểu đồ dữ liệu trong năm 2014
- Biểu đồ giá Open và Close trong từng tháng
Hình 3-6 Biểu đồ giá Open và Close trong các tháng năm 2015
- Biểu đồ giá Open, High, Low và Close trong năm 2015
Hình 3-7 Biểu đồ dữ liệu trong năm 2015
- Biểu đồ giá Open và Close trong từng tháng
Hình 3-8 Biểu đồ giá Open và Close trong các tháng năm 2016
- Biểu đồ giá Open, High, Low và Close trong năm 2016
Hình 3-9 Biểu đồ dữ liệu trong năm 2016
- Biểu đồ giá Open, Close trong từng tháng
Hình 3-10 Biểu đồ giá Open và Close các tháng năm 2017
- Biểu đồ giá Open, High, Low và Close trong năm 2017
Hình 3-11 Biểu đồ dữ liệu trong năm 2017
- Biểu đồ giá Open, Close trong từng tháng
Hình 3-12 Biểu đồ giá Open và Close các tháng năm 2018
- Biểu đồ giá Open, High, Low và Close trong năm 2018
Hình 3-13 Biểu đồ dữ liệu trong năm 2018
- Biểu đồ giá Open, Close trong từng tháng
Hình 3-14 Biểu đồ giá Open và Close các tháng năm 2019
- Biểu đồ giá Open, High, Low, Close trong năm 2019
Hình 3-15 Biểu đồ dữ liệu trong năm 2019
- Biểu đồ giá Open, Close trong từng tháng
Hình 3-16 Biểu đồ giá Open và Close các tháng năm 2020
- Biểu đồ giá Open, High, Low và Close trong năm 2020
Hình 3-17 Biểu đồ dữ liệu trong năm 2020
- Biểu đồ giá Open, Close trong từng tháng
Hình 3-18 Biểu đồ giá Open và Close các tháng năm 2021
- Biểu đồ giá Open, High, Low và Close trong năm 2021
Hình 3-19 Biểu đồ dữ liệu trong năm 2021
- Biểu đồ giá Open, Close trong từng tháng
Hình 3-20 Biểu đồ giá Open và Close các tháng năm 2022
- Biểu đồ giá Open, High, Low và Close trong năm 2022
Hình 3-21 Biểu đồ dữ liệu trong năm 2022
Hình 3-22 Biểu đồ tổng quát dữ liệu trong khoảng năm 2014-2022
Tiền xử lý dữ liệu và chuẩn hóa dữ liệu
3.2.1 Thu thập dữ liệu về giá Close
Hình 3-23 Biểu đồ dữ liệu giá Close
Chuẩn hóa là một kỹ thuật thường được áp dụng như một phần của quá trình chuẩn bị dữ liệu cho máy học Mục tiêu của chuẩn hóa là thay đổi giá trị của các cột số trong tập dữ liệu để sử dụng thang đo chung mà không làm biến dạng sự khác biệt trong phạm vi giá trị hoặc làm mất thông tin
Với phạm vi nghiên cứu, sử dụng MinMaxScaler Đối với mỗi giá trị trong một đối tượng đặc trưng, MinMaxScaler trừ đi giá trị tối thiểu trong đối tượng đặc trưng rồi chia cho phạm vi Phạm vi là sự khác biệt giữa mức tối đa ban đầu và mức tối thiểu ban đầu MinMaxScaler giữ nguyên hình dạng của bản phân phối ban đầu
Thực thi thuật toán và kết quả
Thực hiện thuật toán
Sau bước tiền xử lý dữ liệu, cần chia bộ dữ liệu thành một bộ nhằm mục đích huấn luyện và một bộ nhằm mục đích kiểm thử mô hình đã được huấn luyện, đồng thời cần chuẩn hóa bộ dữ liệu sao cho khớp với yêu cầu đầu vào của thuật toán LSTM
Sau khi hoàn thành các bước trên, tiến hành xây dựng mô hình học máy dựa trên LSTM Ở bước kế tiếp, thực hiện huấn luyện mô hình dựa trên bộ dữ liệu và các thông số đã được cấu hình cho mô hình Trong quá trình tìm hiểu, nhóm sử dụng số bước huấn luyện là 200
Hình 4-1 Các bước huấn luyện mô hình học máy
Khi này, có thể thấy giá trị loss và validation loss đủ nhỏ để có thể kết luận mô hình đã được huấn luyện một cách chính xác Từ đây, sử dụng mô hình đã được huấn luyện để áp dụng cho bộ dữ liệu kiểm thử:
Hình 4-2 Biểu đồ so sánh giá trị thực và các kết quả dự đoán
Dựa trên kết quả từ biểu đồ trên, có thể đưa ra một vài kết luận về bộ dữ liệu và mô hình đã được huấn luyện:
- Với bộ dữ liệu huấn luyện, biến động dữ liệu không lớn, tuy nhiên khi đến với bộ dữ liệu kiểm thử, có một khoảng biến động lớn trong dữ liệu Vì vậy ở khoảng biến động đó, kết quả dự đoán của mô hình còn có sự chênh lệch so với giá trị thực tế
- Với những phần dữ liệu ít có biến động, mô hình dự đoán chính xác một cách lương đối và liền mạch
- Có thể sử dụng mô hình để dự đoán giá trị trong tương lai
Với nhu cầu thực tế cũng như đảm bảo tính mức độ tin cậy của kết quả dự đoán, trong bài nghiên cứu này chỉ dự đoán giá trị trong 2 ngày kế tiếp
Hình 4-3 Biểu đồ kết quả dự đoán 2 ngày kế tiếp
Có thể thấy rằng, tùy thuộc vào khoảng thời gian làm cơ sở để dự đoán, kết quả dự đoán sẽ có sai lệch (kết quả chi tiết sẽ đề cập ở phần sau) Ở bước cuối cùng, kết hợp kết quả dự đoán với bộ dữ liệu gốc
Hình 4-4 Biểu đồ giá trị Close có kết hợp giá trị dự đoán
Kết quả thực hiện dự đoán
Khoảng thời gian dự đoán: từ ngày 01/11/2022 tới ngày 30/11/2022
Sau khi ghi nhận kết quả dự đoán và kết quả thực tế về giá của tiền điện tử Bitcoin, nhóm đã cho ra kết quả sau đây:
4.2.1 Khoảng thời gian cơ sở để dự đoán là 15 ngày
Giá trị thực tế 1 ngày sau (USD)
Giá trị thực tế 2 ngày sau (USD)
Bảng 4-1 Kết quả dự đoán với số ngày cơ sở là 15
Hình 4-5 Bảng so sánh kết quả thực tế và kết quả dự đoán ngày tiếp theo với 15 ngày cơ sở
Predict 1 day after Actual 1 day after
Hình 4-6 Bảng so sánh kết quả thực tế và kết quả dự đoán ngày thứ 2 tiếp theo với
4.2.2 Khoảng thời gian cơ sở để dự đoán là 30 ngày
Predict 2 days after Actual 2 days after
Giá trị thực tế 1 ngày sau (USD)
Giá trị thực tế 2 ngày sau (USD)
Bảng 4-2 Kết quả dự đoán với số ngày cơ sở là 30
Hình 4-7 Bảng so sánh kết quả thực tế và kết quả dự đoán ngày tiếp theo với 30 ngày cơ sở
Predict 1 day after Actual 1 day after
Hình 4-8 Bảng so sánh kết quả thực tế và kết quả dự đoán ngày thứ 2 tiếp theo với
Predict 2 days after Actual 2 days after
Kết quả dự án
Giới thiệu sản phẩm
Như vậy, sau 4 tháng thực hiện đồ án, nhóm tìm hiểu và ứng dụng được thuật toán
LSTM nhằm dự đoán giá trị dựa trên dữ liệu giao dịch trong lịch sử và đưa ra được sự so sánh giữa kết quả dự đoán và kết quả thực tế
Từ quá trình thực hiện đồ án, nhóm phát triển đã rút ra được nhiều kinh nghiệm và kiến thức:
• Kinh nghiệm làm việc nhóm
• Kinh nghiệm tìm hiểu và thu thập nguồn dữ liệu, chuẩn hóa dữ liệu
• Kinh nghiệm tìm hiểu về các thuật toán dự đoán
• Kinh nghiệm sử dụng mạng nơ ron nhằm phục vụ các bài toán học máy
• Kinh nghiệm thống kê, phân tích dữ liệu
Môi trường triển khai
Sử dụng Google Colab để thực thi Jupyter Notebook
Kết luận kết quả
Sau khi thực hiện thuật toán và nhận được kết quả, nhóm đưa ra một số kết luận về kết quả như sau:
• Với mỗi số lượng ngày cơ sở khác nhau, kết quả dự đoán khác nhau
• Với những khoảng giá trị có biến động lớn, giá trị dự đoán còn chưa đạt được độ chính xác cao
• Với những khoản giá trị có ít biến động, giá trị dự đoán đã đạt được độ chính xác tương đối
• Kết quả dự đoán chỉ mang tính chất học thuật, không nên sử dụng vào thực tế