1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO TIỂU LUẬN KHAI THÁC DỮ LIỆU DỰ ĐOÁN GIÁ ĐỒNG COIN SỬ DỤNG MÔ HÌNH HỌC MÁY

31 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Dự Đoán Giá Đồng Coin Sử Dụng Mô Hình Học Máy
Tác giả Ngô Văn Minh, Đỗ Minh Nhật, Phan Tấn Sang, Nguyễn Thị Quỳnh Trâm, Trần Nguyễn Khánh Trang
Người hướng dẫn ThS. Trần Anh Tuấn
Trường học Học Viện Hàng Không Việt Nam
Chuyên ngành Khoa Công Nghệ Thông Tin
Thể loại Tiểu Luận
Năm xuất bản 2023 - 2024
Thành phố TP. HCM
Định dạng
Số trang 31
Dung lượng 1,39 MB

Cấu trúc

  • CHƯƠNG I. GIỚI THIỆU (5)
    • 1. Giới thiệu đề tài (5)
    • 2. Lí do chọn đề tài (5)
    • 3. Ứng dụng thực tiễn (6)
  • CHƯƠNG II. CÔNG NGHỆ ỨNG DỤNG/ CƠ SỞ LÝ THUYẾT (7)
    • 1. Tổng quan về khai phá dữ liệu (7)
      • 1.1. Khai phá dữ liệu là gì? (7)
      • 2.2. Quy trình khai phá dữ liệu (7)
      • 2.3. Ứng dụng thực tiễn của khai phá dữ liệu (8)
    • 3. Mô hình học máy là gì? (9)
      • 3.1. Khái niệm (9)
      • 3.2. Phân loại các mô hình học máy (9)
      • 3.3. Mô hình mạng nơ-ron nhân tạo hồi quy (RNN) (9)
      • 3.4. Khái quát về LSTM (Long short term memory) (12)
    • 4. Giới thiệu về Jupyter (14)
    • 5. Các thư viện Python được sử dụng (16)
      • 5.1. Thư viện Pandas (16)
      • 5.2. Thư viện NumPy (16)
      • 5.3. Thư viện Matplotlib (17)
      • 5.4. Thư viện Keras (18)
  • CHƯƠNG III. SẢN PHẨM (20)
    • 1. Dataset (20)
    • 2. Huấn luyện mô hình (24)
    • 3. Trực quan hóa dữ liệu (27)
  • CHƯƠNG IV. KẾT LUẬN (30)
  • TÀI LIỆU THAM KHẢO (31)

Nội dung

Sử dụng các mô hình học máy để dự đoán giá đồng coin đang trở thành một phương pháp hứa hẹn, mở ra nhiều cơ hội mới trong việc phân tích và đưa ra quyết định đầu tư.. Mục tiêu của tiểu l

GIỚI THIỆU

Giới thiệu đề tài

Bùng nổ của thị trường tiền điện tử cùng tiềm năng mạnh mẽ của học máy đã tạo ra động lực mạnh mẽ cho sự nảy sinh của đề tài "Dự đoán giá đồng coin sử dụng mô hình học máy" Đây không chỉ là một dự án nghiên cứu mang tính lý thuyết mà còn là một minh chứng rõ ràng cho sự kết hợp sáng tạo giữa lý thuyết và thực tiễn

Dưới sự hướng dẫn chân thành và tận tình của thầy Trần Anh Tuấn, đề tài không chỉ là một nơi để chúng tôi áp dụng những kiến thức được học mà còn là một cơ hội quý báu để rèn luyện tư duy sáng tạo và khả năng nghiên cứu khoa học Trong quá trình nghiên cứu, chúng tôi đã tiếp cận và áp dụng một loạt các phương pháp và kỹ thuật trong học máy để xây dựng một mô hình dự đoán giá coin chính xác và hiệu quả

Mục tiêu cuối cùng của đề tài là không chỉ xây dựng một mô hình dự đoán có độ chính xác cao mà còn đóng góp vào cộng đồng đầu tư bằng cách cung cấp thông tin và dữ liệu có ích, giúp họ đưa ra các quyết định đầu tư sáng suốt hơn trong một môi trường thị trường tiền điện tử biến động không ngừng Đề tài hi vọng sẽ mang lại những giá trị thực tiễn và góp phần vào sự phát triển bền vững của lĩnh vực này.

Lí do chọn đề tài

Thị trường tiền điện tử hiện nay đang trải qua một giai đoạn phát triển đầy sôi động với sự xuất hiện liên tục của các đồng coin mới Tuy nhiên, điều này cũng đồng nghĩa với sự biến động mạnh mẽ của giá coin, tạo ra một môi trường đầu tư không ổn định và rủi ro Trước thách thức này, việc có khả năng dự đoán giá coin một cách chính xác và đáng tin cậy trở thành một ưu tiên hàng đầu đối với nhà đầu tư Trong bối cảnh này, lĩnh vực học máy nổi lên như một phương tiện mạnh mẽ, có khả năng xử lý và phân tích dữ liệu phức tạp, từ đó đưa ra những dự đoán có tính chính xác cao Điều đáng chú ý là việc áp dụng học máy vào dự đoán giá coin không chỉ là một khái niệm trừu tượng mà còn là một hướng đi cụ thể và tiềm năng Trong số các mô hình học máy, mô hình Random Forest nổi bật với khả năng xử lý dữ liệu lớn và tạo ra những dự đoán có độ chính xác cao Do đó, nghiên cứu này chọn mô hình Random Forest như một công cụ chính để dự đoán giá Bitcoin - một trong những đồng coin được sử dụng và quan tâm nhất trên thị trường

Mục tiêu của nghiên cứu này không chỉ là tìm hiểu về cách thức hoạt động của mô hình Random Forest trong việc dự đoán giá Bitcoin, mà còn là xây dựng một công cụ dự đoán chính xác và hiệu quả Việc này sẽ giúp nhà đầu tư có thêm thông tin và dữ liệu cần thiết để đưa ra những quyết định đầu tư một cách sáng suốt và có căn cứ hơn, từ đó giảm thiểu rủi ro và tăng cơ hội thành công trong môi trường thị trường tiền điện tử đầy biến động này.

Ứng dụng thực tiễn

Mục tiêu cốt lõi của nghiên cứu này là xây dựng một mô hình tiên tiến có khả năng dự đoán chính xác giá trị của đồng Bitcoin - đồng tiền ảo dẫn đầu thị trường Mô hình này không chỉ đơn thuần là một công cụ phân tích, mà còn là một trợ lý đắc lực cho nhà đầu tư và quản lý quỹ hực hiện quyết định đầu tư một cách sáng suốt và linh hoạt hơn Qua việc cung cấp cái nhìn sâu sắc và toàn diện về thị trường cho các nhà đầu tư, nó giúp họ đưa ra những quyết định đầu tư sáng suốt và hiệu quả hơn như mua vào hoặc bán ra đúng thời điểm để tối ưu hóa lợi nhuận hoặc giảm thiểu rủi ro

Với sự phát triển mạnh mẽ của công nghệ và tiến bộ vượt bậc trong phương pháp phân tích dữ liệu, đề tài này không chỉ đem lại những kiến thức giá trị về hành vi thị trường tiền ảo, tâm lý và quan điểm của cộng đồng đối với loại tài sản này, mà còn góp phần tạo ra những công cụ hữu ích hỗ trợ tối ưu cho hoạt động đầu tư trong môi trường biến động không ngừng Điều này đồng nghĩa với việc mô hình được xây dựng có thể áp dụng thực tiễn như được sử dụng để xác định các xu hướng dài hạn và ngắn hạn trên thị trường Bitcoin Bằng cách phân tích dữ liệu lịch sử và dự báo tương lai, nhà đầu tư có thể hiểu rõ hơn về sự biến động của giá trị Bitcoin và điều chỉnh chiến lược đầu tư của họ một cách linh hoạt

Hơn nữa, mô hình còn mang lại giá trị đáng kể cho các nhà đầu tư và quản lý quỹ trong quá trình ra quyết định đầu tư và quản lý rủi ro Bằng cách phân tích các yếu tố ảnh hưởng đến giá Bitcoin và dự đoán sự biến động của nó, quản lý quỹ có thể điều chỉnh tỷ trọng đầu tư vào Bitcoin cũng như các tài sản khác trong danh mục của họ để tối ưu hóa lợi nhuận và giảm thiểu rủi ro tổng thể Đồng thời có thể được tích hợp vào các nền tảng giao dịch và phân tích tài chính tự động, giúp tự động hóa quy trình đầu tư và tối ưu hóa hiệu suất giao dịch Điều này không chỉ giúp tiết kiệm thời gian và công sức của nhà đầu tư mà còn giảm thiểu sai sót do sự can thiệp con người, từ đó tăng tính linh hoạt và hiệu quả của hoạt động đầu tư.

CÔNG NGHỆ ỨNG DỤNG/ CƠ SỞ LÝ THUYẾT

Tổng quan về khai phá dữ liệu

1.1 Khai phá dữ liệu là gì?

Khai phá dữ liệu (KPDL) là một quá trình quan trọng trong lĩnh vực khoa học máy tính và công nghệ thông tin, xuất hiện vào cuối những năm 80 của thế kỷ trước Định nghĩa về KPDL có thể được diễn giải theo nhiều cách khác nhau, tuy nhiên, nó có thể được hiểu một cách đơn giản là quá trình tìm kiếm và phát hiện những thông tin có ích và tiềm năng trong các khối dữ liệu lớn

Mục đích cốt lõi của KPDL là tìm ra tri thức ẩn sau dữ liệu Điều này bao gồm việc sử dụng các giải thuật và phương pháp đặc biệt để khám phá, trích xuất và hiểu các mẫu, quy luật và thông tin mới từ dữ liệu KPDL giúp tìm ra những mẫu mới, thông tin tiềm ẩn và dự đoán chưa được biết đến trước đó, mang lại lợi ích cho người sử dụng thông qua việc đưa ra các dự đoán hoặc quyết định thông minh dựa trên dữ liệu

Trong quá trình khai phá dữ liệu, có nhiều thách thức phải đối mặt, bao gồm việc xử lý và phân tích các khối dữ liệu lớn, đa dạng và phức tạp Các giải thuật KPDL được phát triển để tìm kiếm các mẫu hoặc quy luật trong dữ liệu, đồng thời đảm bảo hiệu suất tính toán chấp nhận được KPDL không chỉ giúp khám phá tri thức tiềm ẩn từ dữ liệu mà còn là công cụ hữu ích để trích xuất thông tin quan trọng từ các khối dữ liệu lớn, từ đó mang lại lợi ích đáng kể cho nhiều lĩnh vực ứng dụng, bao gồm tài chính, y tế, marketing và nhiều lĩnh vực khác

2.2 Quy trình khai phá dữ liệu:

Quy trình khai phá dữ liệu gồm các bước như sau:

Trích chọn dữ liệu (data selection): Là bước trích chọn những tập dữ liệu cần được khai phá từ các tập dữ liệu lớn (databases, data warehouses)

Tiền xử lý dữ liệu (data preprocessing): Là bước làm sạch dữ liệu (xử lý dữ liệu không đầy đủ, dữ liệu nhiễu, dữ liệu không nhất quán, ), rút gọn dữ liệu (sử dụng các phương pháp thu gọn dữ liệu, histograms, lấy mẫu, ), rời rạc hoá dữ liệu (dựa vào histograms, entropy, phân khoảng, …) Sau bước này, dữ liệu sẽ nhất quán, đầy đủ, được rút gọn và được rời rạc hoá

Biến đổi dữ liệu (data transformation): Là bước chuẩn hoá và làm mịn dữ liệu để đưa dữ liệu về dạng thuận lợi nhất nhằm phục vụ cho các kỹ thuật khai phá ở bước sau

Khai phá dữ liệu (data mining): Đây là bước quan trọng và tốn nhiều thời gian nhất của quá trình khám phá tri thức, áp dụng các kỹ thuật khai phá (phần lớn là các kỹ thuật của machine learning) để khai phá, trích chọn được các mẫu (pattern) thông tin, các mối liên hệ đặc biệt trong dữ liệu

Bước 5: Đánh giá và biểu diễn tri thức (knowledge representation & evaluation): Dùng các kỹ thuật hiển thị dữ liệu để trình bày các mẫu thông tin (tri thức) và mối liên hệ đặc biệt trong dữ liệu đã được khai phá ở bước trên biểu diễn theo dạng gần gũi với người sử dụng như đồ thị, cây, bảng biểu, luật, … Đồng thời, bước này cũng đánh giá những tri thức khai phá được theo những tiêu chí nhất định

2.3 Ứng dụng thực tiễn của khai phá dữ liệu:

Hiện nay, việc phát triển công nghệ thông tin đi đôi với sự phát triển của các ứng dụng phần mềm Trong số đó, phần mềm Khai phá Dữ liệu (KPDL) nổi lên như một công cụ quan trọng trong việc phân tích và trích xuất tri thức từ dữ liệu KPDL cung cấp cho người sử dụng khả năng phân tích dữ liệu từ nhiều góc độ khác nhau, phân loại dữ liệu theo các tiêu chí khác nhau và tổng hợp các mối quan hệ đã được khám phá Ứng dụng của kỹ thuật KPDL đã lan rộng vào nhiều lĩnh vực kinh doanh và cuộc sống khác nhau Trong thương mại, KPDL được sử dụng để phân tích dữ liệu bán hàng và thị trường, quyết định đầu tư, kiểm soát gian lận và nhiều ứng dụng khác Trong sản xuất, KPDL giúp điều khiển và lập kế hoạch, quản lý hệ thống và phân tích kết quả thử nghiệm Trong các lĩnh vực khoa học và y tế, KPDL được áp dụng trong dự báo thời tiết, chẩn đoán bệnh, và nhiều công việc khác

Các thành công trong việc áp dụng KPDL đã được chứng minh thông qua nhiều ví dụ thực tế Ví dụ, trong lĩnh vực y tế, việc chẩn đoán bệnh dựa trên kết quả xét nghiệm đã giúp bảo hiểm y tế phát hiện ra nhiều trường hợp xét nghiệm không hợp lý, từ đó cải thiện chất lượng dịch vụ Trong lĩnh vực viễn thông, KPDL đã phát hiện ra nhóm người thường xuyên gọi cho nhau qua điện thoại di động, giúp tăng doanh thu cho các nhà cung cấp dịch vụ Các công ty công nghệ như IBM và các trang web mua bán trực tuyến cũng đã áp dụng KPDL để phân tích sở thích và hành vi của khách hàng, từ đó tối ưu hóa chiến lược tiếp thị và tăng doanh số bán hàng

Những ứng dụng thành công của KPDL không chỉ chứng tỏ giá trị của việc khai phá dữ liệu mà còn mở ra nhiều tiềm năng phát triển trong tương lai, đặc biệt là trong bối cảnh môi trường kinh doanh và công nghệ thông tin ngày càng phát triển và cạnh tranh.

Mô hình học máy là gì?

Mô hình học máy đại diện cho một hệ thống thuật toán có khả năng quét qua một lượng lớn dữ liệu để tìm ra các mẫu hoặc đưa ra dự đoán Được cung cấp với dữ liệu, các mô hình machine learning là "động cơ" toán học của trí tuệ nhân tạo, giúp chúng hiểu và phân tích dữ liệu một cách tự động và liên tục

Một ví dụ điển hình về mô hình machine learning là hệ thống thị giác máy tính có khả năng xác định và phân loại các đối tượng như ô tô và người đi bộ trong video thời gian thực Một ứng dụng khác là mô hình xử lý ngôn ngữ tự nhiên, có khả năng dịch và hiểu các từ và câu từ một ngôn ngữ sang ngôn ngữ khác Ở cơ bản, một mô hình học máy là một biểu diễn toán học của các đối tượng và mối quan hệ của chúng với nhau trong dữ liệu Các đối tượng này có thể là bất cứ thứ gì, từ số liệu như "lượt thích" trên một bài đăng trên mạng xã hội, cho đến các phân tử trong một thí nghiệm ở phòng lab Mô hình học máy sử dụng các phương pháp toán học và thống kê để tự động học và điều chỉnh từ dữ liệu, từ đó tạo ra những dự đoán hoặc phân loại mới dựa trên những gì học được từ dữ liệu đã được cung cấp

3.2 Phân loại các mô hình học máy:

Loại mô hình ML Các trường hợp sử dụng

Phân loại / hồi quy tuyến tính

Các mẫu trong dữ liệu số, chẳng hạn như bảng tính tài chính

Mô hình đồ họa Phát hiện gian lận hoặc nhận thức tình cảm

Mạng nơ-ron học sâu Thị giác máy tính, xử lý ngôn ngữ tự nhiên và hơn thế nữa

3.3 Mô hình mạng nơ-ron nhân tạo hồi quy (RNN):

Mạng nơ-ron hồi quy (RNN) đóng vai trò quan trọng trong lĩnh vực học sâu, với khả năng xử lý và chuyển đổi dữ liệu tuần tự thành đầu ra dữ liệu tuần tự cụ thể Dữ liệu tuần tự, như từ, câu, hoặc chuỗi thời gian, thường chứa các thành phần tuần tự có mối quan hệ tương quan với nhau dựa trên ngữ nghĩa phức tạp và quy tắc cú pháp RNN được cấu trúc như một hệ thống phần mềm gồm nhiều thành phần được kết nối với nhau theo cách con người thực hiện các chuyển đổi dữ liệu tuần tự, như việc dịch văn bản từ một ngôn ngữ sang ngôn ngữ khác

Tuy nhiên, trong thời gian gần đây, một số RNN đang bị thay thế bằng các phương pháp dựa trên trí tuệ nhân tạo (AI), đặc biệt là các công cụ biến đổi và các mô hình ngôn ngữ lớn (LLM) Các công cụ biến đổi, chẳng hạn như GPT (Generative Pre- trained Transformer), đã chứng minh hiệu suất tốt hơn trong việc xử lý dữ liệu tuần tự so với RNN truyền thống LLM, như BERT (Bidirectional Encoder Representations from Transformers), cũng đã được sử dụng rộng rãi trong các ứng dụng xử lý ngôn ngữ tự nhiên và dịch máy với hiệu quả cao

Việc thay thế RNN bằng các phương pháp dựa trên AI và các mô hình LLM đã mang lại nhiều lợi ích, bao gồm hiệu suất cao hơn, khả năng xử lý dữ liệu lớn và độ chính xác tốt hơn trong việc dự đoán và chuyển đổi dữ liệu tuần tự Điều này mở ra những triển vọng mới trong việc phát triển các ứng dụng dựa trên dữ liệu tuần tự và nâng cao khả năng hiểu và tạo ra ngôn ngữ tự nhiên của máy tính

Hình ảnh sau đây cho thấy sơ đồ của một RNN:

Mạng nơ-ron hồi quy (RNN) được cấu tạo từ các nơ-ron, các đơn vị xử lý dữ liệu, được kết nối với nhau để thực hiện các tác vụ phức tạp Các nơ-ron này được tổ chức thành các lớp, bao gồm lớp đầu vào, lớp đầu ra và lớp ẩn Lớp đầu vào nhận thông tin đầu vào để xử lý, lớp đầu ra cung cấp kết quả cuối cùng, trong khi quá trình xử lý, phân tích và dự đoán diễn ra trong lớp ẩn

Tuy nhiên, mặc dù RNN có nhiều ưu điểm, như khả năng xử lý dữ liệu tuần tự và giải quyết các vấn đề liên quan đến chuỗi dữ liệu, nhưng nó cũng mang lại nhiều hạn chế đáng chú ý

+ Trước hết, RNN thường phải thực hiện tuần tự, nghĩa là các phép tính được thực hiện theo từng bước, không thể tận dụng được khả năng tính toán song song của máy tính như GPU/TPU, làm giảm hiệu suất và tốn thời gian

+ Thứ hai, một trong những hạn chế chính của RNN là vấn đề vanishing gradient, hay còn gọi là đạo hàm bị triệt tiêu Điều này xảy ra khi hàm kích hoạt, như tanh hoặc sigmoid, cho kết quả đầu ra nằm trong một khoảng hữu hạn, làm cho đạo hàm của nó cũng nằm trong khoảng đó Khi đạo hàm gần với 0, các nút mạng sẽ bão hòa, dẫn đến việc các bước nhân ma trận sau sẽ làm đạo hàm triệt tiêu, không còn tác dụng đến các nút ở phía trước, làm giảm khả năng học được các phụ thuộc xa trong dữ liệu Vấn đề này không chỉ xảy ra với mạng RNN mà còn áp dụng cho các mạng neural truyền thống với nhiều lớp

Với cách nhìn như trên, ngoài Vanishing gradient, ta còn gặp phải Exploding Gradient (bùng nổ đạo hàm) Tùy thuộc vào hàm kích hoạt và tham số của mạng, vấn đề này xảy ra khi các giá trị của ma trận là lớn (lớn hơn 1) Tuy nhiên, người ta thường nói về vấn đề Vanishing nhiều hơn là Exploding, vì 2 lý do sau:

+ Thứ nhất, bùng nổ đạo hàm có thể theo dõi được vì khi đạo hàm bị bùng nổ thì ta sẽ thu được kết quả là một giá trị phi số NaN làm cho chương trình của ta bị dừng hoạt động

+ Thứ hai, bùng nổ đạo hàm có thể ngăn chặn được khi ta đặt một ngưỡng giá trị trên (tham khảo kỹ thuật Gradient Clipping) Còn rất khó để theo dõi sự mất mát đạo hàm cũng như tìm cách xử lí nó Để khắc phục vấn đề của Vanishing Gradient trong mạng nơ-ron hồi quy (RNN), có hai cách tiếp cận phổ biến được sử dụng

+ Cách đầu tiên là thay thế hàm kích hoạt sigmoid và tanh - những hàm kích hoạt gây ra vấn đề của Vanishing Gradient - bằng hàm kích hoạt ReLU (Rectified

Linear Unit), hoặc các biến thể của nó như Leaky ReLU Hàm ReLU có đặc điểm là đạo hàm của nó luôn là 0 hoặc 1, làm giảm vấn đề mất mát đạo hàm trong quá trình lan truyền ngược Sự đơn giản và hiệu quả của ReLU đã làm cho nó trở thành một lựa chọn phổ biến trong việc giải quyết vấn đề của Vanishing Gradient trong RNN

+ Cách tiếp cận thứ hai là sử dụng các kiến trúc mạng nơ-ron hồi quy cải tiến, như LSTM (Long Short-Term Memory) và GRU (Gated Recurrent Unit) LSTM và GRU được thiết kế để giữ lại thông tin quan trọng trong quá trình lan truyền ngược, giúp mạng RNN có khả năng nhớ thông tin trong thời gian dài hơn và tránh được vấn đề của Vanishing Gradient Các kiến trúc này thường bao gồm các cổng (gate) để kiểm soát luồng thông tin, từ đó giúp mạng RNN có khả năng học và nhớ thông tin dài hạn một cách hiệu quả

Việc sử dụng các hàm kích hoạt như ReLU và các kiến trúc cải tiến như LSTM và GRU đã giúp cải thiện hiệu suất và khả năng học của mạng nơ-ron hồi quy, đồng thời giảm thiểu vấn đề của Vanishing Gradient, làm cho RNN trở thành một công cụ mạnh mẽ trong việc xử lý dữ liệu tuần tự và các vấn đề liên quan

3.4 Khái quát về LSTM (Long short term memory):

Giới thiệu về Jupyter

Jupyter là một thuật ngữ được ghép từ ba ngôn ngữ lập trình Julia, Python và R Trước đây Jupyter Notebook có tên là IPython Notebook, đến năm 2014 tách ra khỏi IPython và đổi tên thành Jupyter Notebook

Jupyter Notebook là một nền tảng tính toán khoa học mã nguồn mở, bạn có thể sử dụng để tạo và chia sẻ các tài liệu có chứa code trực tiếp, phương trình, trực quan hóa dữ liệu và văn bản tường thuật

Jupyter Notebook được coi là môi trường điện toán tương tác đa ngôn ngữ, hỗ trợ hơn

40 ngôn ngữ lập trình cho người dùng

Với Jupyter Notebook, người dùng có thể đưa dữ liệu, code, hình ảnh, công thức, video, vào trong cùng một file, giúp cho việc trình bày trở nên dễ dàng hơn Bạn có thể vừa trình chiếu vừa chạy code để tương tác trên đó, cốt lõi của việc này là Markdown

Lợi ích mà Jupyter mang lại:

+ Phân tích khám phá dữ liệu (Exploratory Data Analysis): Jupyter cho phép người dùng xem kết quả của code in-line (mã inline) mà không cần phụ thuộc vào các phần khác của code Trong Notebook mọi ô của code có thể được kiểm tra bất cứ lúc nào, điều này đã giúp Jupyter trở nên khác biệt so với các ID như Pycharm, VSCode Việc Jupyter có thể xuất code in-line đã giúp ích rất nhiều trong quá trình phân tích khám phá dữ liệu (EDA)

+ Bộ đệm dễ dàng trong ô tích hợp: Từng ô tự duy trì trạng thái hoạt động sẽ hơi khó, nhưng với Jupyter, công việc này sẽ được thực hiện tự động Vì Jupyter lưu trữ kết quả hoạt động của mọi ô đang chạy, cho dù là code đang đào tạo mô hình machine learning hay code đang tải xuống gigabyte dữ liệu từ một máy chủ từ xa

+ Độc lập ngôn ngữ: Jupyter Notebook ở định dạng JSON, vì thế nó được biết đến là một nền tảng độc lập cũng như độc lập về ngôn ngữ

+ Trực quan hóa dữ liệu (Data Visualisation): Jupyter Notebook hỗ trợ trực quan hóa dữ liệu và hiển thị thêm một số đồ họa và biểu đồ Những điều này được tạo ra từ code với sự trợ giúp của các mô -đun như Matplotlib, Plotly hoặc Bokeh Ngoài ra, Jupyter còn cho phép người dùng cùng chia sẻ code và bộ dữ liệu hoặc thay đổi tương tác với nhau

+ Tương tác trực tiếp với code: Jupyter Notebook sử dụng "ipywidgets" packages, cung cấp cho người dùng giao diện chuẩn nhằm khám phá sự tương tác trực tiếp với code và với dữ liệu Người dùng có thể chỉnh sửa và chạy code, làm cho code của Jupyter non-static Ngoài ra, nó còn cho phép người dùng kiểm soát nguồn đầu vào của code và phản hồi lại trực tiếp trên trình duyệt

+ Các mẫu code tài liệu: Jupyter giúp người dùng dễ dàng giải thích từng dòng code của họ với các phản hồi được đính kèm Dù trong code đã có đầy đủ các chức năng nhưng người dùng vẫn có thể tăng thêm sự tương tác bằng các lời giải thích.

Các thư viện Python được sử dụng

Pandas là một thư viện Python có vai trò quan trọng trong việc xử lý dữ liệu và phân tích dữ liệu có cấu trúc Thư viện này cung cấp các cấu trúc dữ liệu như DataFrame và Series, giúp thao tác với dữ liệu nhanh chóng, mạnh mẽ, linh hoạt và dễ sử dụng

Tên "Pandas" được bắt nguồn từ "panel data" (bảng dữ liệu), thể hiện mục tiêu của thư viện là làm việc với dữ liệu có cấu trúc như bảng và dữ liệu chuỗi thời gian một cách dễ dàng và hiệu quả Pandas được thiết kế để trở thành một khối căn bản trong việc thực hiện các tác vụ phân tích dữ liệu thực tế trong Python

Mục tiêu của Pandas không chỉ dừng lại ở việc cung cấp các công cụ phân tích dữ liệu, mà còn là trở thành một công cụ mạnh mẽ, linh hoạt và có khả năng mở rộng trong bất kỳ ngôn ngữ lập trình nào Điều này đề cao vai trò của Pandas như là một công cụ thực sự quan trọng trong việc thao tác và phân tích dữ liệu, không chỉ trong Python mà còn trong cả cộng đồng ngôn ngữ lập trình rộng lớn Pandas đóng vai trò quan trọng trong việc tạo ra một môi trường phân tích dữ liệu mạnh mẽ và linh hoạt, giúp người dùng nắm bắt và khai thác tri thức từ dữ liệu một cách hiệu quả

Trong đề tài của chúng em, việc sử dụng thư viện NumPy đóng vai trò quan trọng trong việc xử lý các phép tính và tính toán một cách dễ dàng và hiệu quả hơn NumPy là một thư viện toán học rất phổ biến và mạnh mẽ trong ngôn ngữ lập trình Python, đặc biệt là trong lĩnh vực xử lý dữ liệu và tính toán khoa học

Thư viện NumPy cung cấp một loạt các hàm số đã được tối ưu, cho phép người dùng thực hiện các phép tính và thao tác trên các cấu trúc dữ liệu như mảng và ma trận một cách hiệu quả Sự tối ưu hóa này giúp cho việc làm việc với dữ liệu lớn trở nên dễ dàng hơn và tốc độ xử lý nhanh hơn nhiều lần so với việc sử dụng Python đơn thuần

Nhờ vào NumPy, chúng em có thể thực hiện các phép tính phức tạp như ma trận hóa, phép nhân ma trận, tích vô hướng và nhiều phép tính khác một cách linh hoạt và hiệu quả Sự linh hoạt và mạnh mẽ của NumPy giúp cho việc thực hiện các tác vụ tính toán trong đề tài của chúng em trở nên đơn giản và nhanh chóng hơn, đồng thời tạo ra những kết quả chính xác và đáng tin cậy

Trong cộng đồng lập trình Python, Matplotlib đã trở thành một trong những thư viện phổ biến nhất được sử dụng để trực quan hóa dữ liệu Được xem như là một công cụ mạnh mẽ để tạo ra các biểu đồ và đồ thị từ dữ liệu số liệu, Matplotlib đem lại cho người dùng khả năng tạo ra các biểu đồ 2D một cách dễ dàng và linh hoạt

Matplotlib được viết bằng Python và phát triển dựa trên thư viện NumPy, mở rộng toán học của Python Điều này giúp cho Matplotlib trở nên mạnh mẽ và linh hoạt trong việc xử lý dữ liệu số liệu và tạo ra các biểu đồ chất lượng cao Thư viện này cung cấp một API hướng đối tượng, cho phép nhúng các biểu đồ vào các ứng dụng và sử dụng các công cụ GUI Python như PyQt, WxPython và Tkinter Hơn nữa, Matplotlib có thể được tích hợp và sử dụng trong môi trường Python và IPython shell, Jupyter Notebook và các máy chủ web

Matplotlib còn có giao diện được đặt tên là Pylab, được thiết kế giống với MATLAB

- một ngôn ngữ lập trình độc quyền được phát triển bởi MathWorks Sự tương đồng này giúp cho những người đã quen thuộc với MATLAB có thể dễ dàng chuyển sang sử dụng Matplotlib mà không gặp phải nhiều khó khăn Đồng thời, Matplotlib cùng với NumPy có thể được coi là mã nguồn mở tương đương với MATLAB, đem lại cho người dùng sự linh hoạt và tự do trong việc phát triển và sử dụng phần mềm

Matplotlib đã ra đời từ năm 2003, khi được viết bởi John D Hunter Tính đến thời điểm hiện tại, phiên bản ổn định nhất của Matplotlib là 2.2.0, được phát hành vào tháng 1 năm 2018 Sự liên tục cải tiến và phát triển của Matplotlib đã giúp cho thư viện này trở thành một công cụ quan trọng và không thể thiếu trong công việc xử lý và trực quan hóa dữ liệu của các nhà phân tích dữ liệu và nhà khoa học dữ liệu

Một Matplotlib figure có thể được phân loại thành nhiều phần như dưới đây:

+ Figure: Như một cái cửa sổ chứa tất cả những gì bạn sẽ vẽ trên đó

+ Axes: Thành phần chính của một figure là các axes (những khung nhỏ hơn để vẽ hình lên đó) Một figure có thể chứa một hoặc nhiều axes Nói cách khác, figure chỉ là khung chứa, chính các axes mới thật sự là nơi các hình vẽ được vẽ lên

+ Axis: Chúng là dòng số giống như các đối tượng và đảm nhiệm việc tạo các giới hạn biểu đồ

+ Artist: Mọi thứ mà bạn có thể nhìn thấy trên figure là một artist như Text objects, Line2D objects, collection objects Hầu hết các Artists được gắn với Axes

Keras là một trong những thư viện mã nguồn mở phổ biến và được sử dụng rộng rãi trong lĩnh vực deep learning (học sâu) và mạng nơ-ron Được thiết kế với mục tiêu giúp các nhà phát triển xây dựng và thử nghiệm các mô hình học sâu một cách dễ dàng và linh hoạt, Keras đem lại cho người dùng một cảm giác làm việc trực quan và thoải mái

Mục tiêu chính của Keras là cung cấp một API đơn giản, trực quan và dễ sử dụng, giúp người dùng tập trung vào việc xây dựng mô hình mà không cần lo lắng về các chi tiết kỹ thuật phức tạp Nhờ vào giao diện dễ tiếp cận này, người dùng có thể tập trung vào việc phát triển và tinh chỉnh mô hình của mình một cách hiệu quả, mà không phải lo lắng về việc triển khai các phần kỹ thuật phức tạp

Một trong những điểm mạnh của Keras là khả năng tích hợp tốt với các framework học sâu khác như TensorFlow và Theano Điều này cho phép người dùng tận dụng sức mạnh của cả hai thế giới một cách linh hoạt và hiệu quả Sự tích hợp này giúp cho Keras trở thành một lựa chọn hàng đầu cho các dự án học sâu, từ phân loại ảnh, dự đoán chuỗi thời gian, đến các ứng dụng trong lĩnh vực ngôn ngữ tự nhiên và nhiều lĩnh vực khác Nhờ vào tính linh hoạt và sức mạnh của mình, Keras đã trở thành một công cụ không thể thiếu cho các nhà phát triển và nhà nghiên cứu trong lĩnh vực học sâu

Một số điểm mạnh của Keras:

+ Dễ sử dụng và Linh hoạt: Keras được thiết kế với mục tiêu đơn giản hóa việc xây dựng mô hình Nó cung cấp một API trực quan, giúp người dùng tập trung vào việc thiết kế mô hình mà không cần quá lo lắng về chi tiết kỹ thuật

+ Tích hợp tốt: Keras tích hợp mượt mà với các framework học sâu khác như

TensorFlow, cho phép người dùng tận dụng sức mạnh của nền tảng này mà vẫn giữ được sự đơn giản của Keras

SẢN PHẨM

Dataset

Dataset để sử dụng trong đề tài này nhóm em sẽ lấy về từ một api của sàn Kraken Kraken là một sàn giao dịch tiền điện tử có trụ sở tại Hoa Kỳ, được thành lập vào năm

2011 Đây là một trong những sàn giao dịch bitcoin đầu tiên được niêm yết trên Bloomberg Terminal và được định giá 10,8 tỷ USD vào giữa năm 2022

Kraken API sẽ cung cấp tất cả các dữ liệu về crypto có trên sàn theo thời gian thật

Dataset gồm có 20 thuộc tính khác nhau, trong đó có các thuộc tính quan trọng như: ask_price (giá cháo bán), bid_price(giá mua), close_price(giá đóng),

Dataset gồm có khoảng 33300 dòng dữ liệu về các giao dịch được thực hiện trên sản Kraken vào khoảng năm 2011 đến nay (bắt đầu lúc sàn Kraken được thành lập), với mỗi giao dịch sẽ có uuid khác nhau

Code để thực hiện lấy data: Đoạn code trên thực hiện tuần tự các bước như sau:

+ Đầu tiên tạo một biến tên là url để lưu đường dẫn chứa dữ liệu trên web

+ Sau đó tạo biến có tên data để lưu dữ liệu được lấy từ đường dẫn, sử dụng thư viện pandas để thực hiện với phương thức read_csv()

+ Tiếp theo dùng tail() để in ra năm dòng cuối của bảng dữ liệu lấy về được

Kết quả sau khi chạy đoạn code trên :

Tiếp theo đến bước tiền xử lý dữ liệu, sau khi phân tích thì nhóm đã xác định xóa một số các thuộc tính không có giá trị hoặc không dùng đến trong việc huấn luyện mô hình, hoặc có thể gây nhiễu, những cột được xóa như sau:

Sau đó dùng hàm head() với tham số là 10 để in ra 10 dòng dữ liệu đầu tiên của bảng sau khi xóa các cột không cần thiết:

Tiếp theo là thực hiện phân chia từ bộ Dataset ban đầu thành 2 bộ: 1 bộ training data (80%) phục phụ cho việc huấn luyện mô hình và 1 bộ test data(20%) phục vụ cho việc kiểm tra mô hình: Đoạn code trên thực hiện tuần tự có bước sau:

+ Đầu tiên tạo biến n_train_rows để lưu và đánh dấu các hàng dành cho bộ dữ liệu huấn luyện từ hàng đầu tiên cho tới hàng ở vị trí 80% của dataset ban đầu và trừ đi 1

+ Tiếp theo tạo biến train và dùng iloc để truy xuất đến các hàng dữ liệu trong dataset từ hàng đầu tiên cho tới hàng n_train_rows (không bao gồm hàng n_train_rows)

+ Tương tự dùng iloc để truy xuất tới các hàng dữ liệu của dataset từ hàng n_train_rows tới hàng cuối cùng lưu vào biến test

Bộ dữ liệu train sẽ như sau:

Bộ dữ liệu test sẽ như sau:

Tiếp theo nhóm em cần phải thực hiện việc bình thường hóa dữ liệu, do trong dataset ban đầu có một số các điểm dữ liệu có sự chênh lệch nhau khá lớn :

+ Sử dụng MinMaxScaler() để thực hiện việc bình thường hóa dữ liệu, MinMaxScaler sẽ đưa các biến về miền giá trị [0, 1], sử dụng tham số feature_range để đưa vào giá trị min và max mong muốn

Tạo bộ dữ liệu train:

+ Sử dụng vòng lặp for lặp qua bộ dữ liệu train đã được bình thường hóa dữ liệu (training_set_scaled) với số steps là 50, ở mỗi lần lặp thực hiện đẩy các hàng vào mảng x_train đã tạo trước đó, tương tự đẩy các cột vào mảng y_train

Tạo bộ dữ liệu test:

+ Tương tự với bước tạo dữ liệu train, cũng sử dụng một vòng lặp for lặp qua bộ dữ liệu test đã được bình thường hóa dữ liệu (test_set_scaled) với số steps là 50, ở mỗi lần lặp thực hiện đẩy các hàng vào mảng x_test đã tạo trước đó, tương tự đẩy các cột vào mảng y_test

Huấn luyện mô hình

Sơ đồ kiến trúc xử lý output dữ liệu của LSTM:

Huấn luyện mô hình LSTM (Long short term memory) với data train đã tạo:

+ Sau đó chạy đoạn code trên thì nó sẽ thực hiện 10 epoch (epoch là một thuật ngữ chỉ một vòng lặp mà mô hình sẽ duyệt toàn bộ tập dữ liệu huấn luyện để cập nhật trọng số của nó):

Sơ đồ tổng quát về quá trình xử lý và cho ra output của mô hình RNN:

Huấn luyện mô hình RNN :

+ Quá trình epoch của RNN:

Sau khi máy tính đã thực hiện xong quá trình huấn hai mô hình đó là LSTM và RNN thì nhóm em sẽ áp dụng vào bộ dữ liệu test và trực quan hóa nó bằng thư viện matplotlib Nhưng trước hết cần phải đánh giá qua mô hình như sau: Ở đây mô hình được đánh giá bằng hàm evaluate cho ra kết quả là loss = 0.0169 với accuracy = 0.020738251507282257.

Trực quan hóa dữ liệu

Thực hiện việc trực quan hóa dữ liệu bằng cách áp dụng mô hình đã tạo lên bộ dữ liệu test để có cái nhìn rõ hơn về kết quả:

+ Đoạn code trên thực hiện việc dự đoán bằng hàm predict() với tham số là bộ dữ liệu test và lưu vào biến y_hat, sau đó dùng hàm inverse_tranform() để đảo ngược miền giá trị về miền giá trị gốc giúp thuận tiện cho việc báo cáo hay vẽ biểu đồ

Thực hiện trực quan hóa dữ liệu giá chào bán (ask_price) lấy từ bộ dữ liệu test với màu đỏ và đường màu xanh là thể hiện giá dự đoán được từ mô hình cho giá chào bán (ask_price):

Sau khi chạy đoạn code trên thì sẽ được biểu đồ như sau:

Biểu đồ đường giá của giá chào bán(ask_price) từ giá trị thật trong bộ test so với giá trị được dự đoán của mô hình

+ Đường màu đỏ: là đường giá của giá chào bán (ask_price) là giá trị thật tế được lấy từ bộ dữ liệu test ra, đường này thể hiện các biến động giá của giá chào bán theo thời gian

+ Đường màu xanh: là đường giá của giá chào bán được mô hình dự đoán dựa theo bộ dữ liệu test

+ Trục y: thể hiện giá trị của giá chào bán (ask_price) tăng dần từ dưới lên + Trục x: đại diện cho các thời điểm giao dịch

Tiếp theo, thực hiện trực quan hóa dữ liệu giá mua (bid_price) lấy từ bộ dữ liệu test với màu đỏ và đường màu xanh là thể hiện giá dự đoán được từ mô hình cho giá mua (bid_price):

Sau khi chạy đoạn code trên sẽ được biểu đồ như sau:

Biểu đồ đường giá của giá mua (bid_price) từ giá trị thật có trong bộ test so với giá trị được dự đoán của mô hình

+ Đường màu đỏ: là đường giá của giá mua (bid_price) là giá trị thật tế được lấy từ bộ dữ liệu test ra, đường này thể hiện các biến động giá của giá mua theo thời gian

+ Đường màu xanh: là đường giá của giá mua (bid_price) được mô hình dự đoán trên bộ dữ liệu test dựa trên những gì đã được huấn luyện

+ Trục y: thể hiện giá trị của giá mua (bid_price) tăng dần theo chiều từ dưới lên

+ Trục x: đại diện cho các thời điểm giao dịch theo thời gian tăng dần từ trái qua phải.

Ngày đăng: 26/10/2024, 06:28

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Tạp chí Công Thương về Tổng quan về khai phá dữ liệu và phương pháp khai phá luật kết hợp trong cơ sở dữ liệu Khác
[2] Các phương pháp scale dữ liệu trong Machine Learning Khác
[3] Sách tìm hiểu về mô hình RNN trong học máy, học sâu Khác
[4] Sách tìm hiểu, hướng dẫn về mô hình LSTM và RNN của Ralf C. Staudemeyer và Eric Rothstein Morris Khác
[5] Sách tìm hiểu về LSTM và RNN của Stanford Khác
[6] Giới thiệu và hướng dẫn sử dụng thư viện Keras Khác

HÌNH ẢNH LIÊN QUAN

Hình ảnh sau đây cho thấy sơ đồ của một RNN: - BÁO CÁO TIỂU LUẬN KHAI THÁC DỮ LIỆU DỰ ĐOÁN GIÁ ĐỒNG COIN SỬ DỤNG MÔ HÌNH HỌC MÁY
nh ảnh sau đây cho thấy sơ đồ của một RNN: (Trang 10)
Sơ đồ kiến trúc xử lý output dữ liệu của LSTM: - BÁO CÁO TIỂU LUẬN KHAI THÁC DỮ LIỆU DỰ ĐOÁN GIÁ ĐỒNG COIN SỬ DỤNG MÔ HÌNH HỌC MÁY
Sơ đồ ki ến trúc xử lý output dữ liệu của LSTM: (Trang 24)
Sơ đồ tổng quát về quá trình xử lý và cho ra output của mô hình RNN: - BÁO CÁO TIỂU LUẬN KHAI THÁC DỮ LIỆU DỰ ĐOÁN GIÁ ĐỒNG COIN SỬ DỤNG MÔ HÌNH HỌC MÁY
Sơ đồ t ổng quát về quá trình xử lý và cho ra output của mô hình RNN: (Trang 25)

TỪ KHÓA LIÊN QUAN

w