TỔNG QUAN
Lý do chọn đề tài 8 1.2 Mục đích 8 1.3 Dự kiến kết quả đạt được 12 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN
Trong thời đại trí tuệ nhân tạo đang phát triển, các mô hình học sâu sử dụng mạng thần kinh nhân tạo cũng được áp dụng nhiều vào đời sống Tuy nhiên mạng thần kinh nhân tạo thông thường không có khả năng xử lý dữ liệu chuỗi thời gian một cách hiệu quả, không linh hoạt trong việc xử lý các chuỗi dữ liệu có độ dài thay đổi, không có khả năng giữ thông tin từ quá khứ và không phù hợp cho việc dự đoán dài hạn Từ đó, mạng thần kinh tự phát (RNN) được thiết kế đặc biệt để làm việc với dữ liệu có tính tuần tự, như chuỗi thời gian, văn bản hoặc dữ liệu có sự phụ thuộc giữa các bước thời gian, RNN giữ thông tin từ các bước thời gian trước đó và ảnh hưởng đến các bước thời gian sau Với khả năng tìm thấy các mẫu phức tạp trong chuỗi thời gian đầu vào, giúp RNN dự đoán dài hạn, không chỉ giới hạn ở một vài bước RNN được sử dụng rộng rãi trong việc dự đoán chuỗi thời gian, ví dụ như dự đoán giá cổ phiếu, dự báo thời tiết, dự đoán lưu lượng truy cập trang web, và nhiều tác vụ khác liên quan đến thời gian.
Dự đoán chuỗi thời gian là việc sử dụng mô hình để dự đoán các sự kiện thời gian dựa vào các sự kiện đã biết trong quá khứ để từ đó dự đoán các điểm dữ liệu trước khi nó xảy ra (hoặc được đo) Chuỗi thời gian thường được vẽ theo các đồ thị.
Trong phân tích dữ liệu, việc dự báo chuỗi thời gian giúp chúng ta hiểu rõ hơn về xu hướng và biến động của dữ liệu theo thời gian Các mô hình dự đoán chuỗi thời gian có thể sử dụng để ước tính giá trị tương lai của các biến dựa vào xu hướng và biểu đồ của dữ liệu trong quá khứ.
Mạng thần kinh tự phát (RNN) là một công cụ mạnh mẽ trong việc phân tích và dự đoán dữ liệu chuỗi thời gian, nhờ vào khả năng giữ lại thông tin từ quá khứ và sử dụng nó để ảnh hưởng đến kết quả trong tương lai Điều này đặc biệt hữu ích khi phân tích các xu hướng và biến động trong dữ liệu chuỗi thời gian Dưới đây là một số cách mà RNN có thể giúp người dùng hiểu rõ hơn về sự biến đổi của dữ liệu theo thời gian:
Phát hiện xu hướng dài hạn: RNN có khả năng học và phát hiện các xu hướng dài hạn trong dữ liệu Ví dụ, trong dữ liệu kinh tế như giá cổ phiếu, RNN có thể nhận ra xu hướng tang hoặc giảm kéo dài qua nhiều tháng hoặc năm.
Phát hiện các mô hình tuần hoàn: RNN có thể nhận diện các mẫu tuần hoàn hoặc theo mùa trong dữ liệu, chẳng hạn như xu hướng tiêu dùng gia tang vào các kỳ nghỉ lễ hoặc giảm vào các tháng mùa hè.
Phân tích biến động ngắn hạn: bên cạnh việc nhận biết các xu hướng dài hạn,
RNN cũng có thể phân tích các biến động ngắn hạn , như các dao động hàng ngày hoặc hàng tuần, và cung cấp cái nhìn sâu sắc về nguyên nhân của những biến động này
Xử lý các dự đoán các sự kiện bất thường: RNN có thể học cách phát hiện và xử lý các sự kiện bất thường, chẳng hạn như các đợt tang giá đột biến hay sự sụt giảm mạnh trong dữ liệu Điều này giúp người dùng nhận diện và phản ứng kịp thời với các sự kiện ngoài mong đợi.
Giữ lại thông tin quan trọng từ quá khứ: Một trong những điểm mạnh của RNN là khả năng giữ lại thông tin từ các bước thời gian trước đó và sử dụng nó để ảnh hưởng đến các dự đoán tương lai Điều này đặc biệt quan trọng khi các giá trị trong quá khứ có ảnh hưởng mạnh mẽ đến các giá trị tương lai.
Dự đoán dài hạn: RNN không chỉ giới hạn trong việc dự đoán các bước thời gian gần mà còn có khả năng dự đoán dài hạn, cung cấp cái nhìn toàn diện về xu hướng và biến động trong tương lai. a Ứng dụng của RNN trong tài chính
Mô hình dự đoán: RNN có thể được huấn luyện với dữ liệu lịch sử về giá cổ phiếu, khối lượng giao dịch, và các chỉ số kỹ thuật để dự đoán giá cổ phiếu trong tương lai. Bằng cách này, nhà đầu tư có thể xác định các cơ hội mua bán cổ phiếu tiềm năng. Phân tích xu hướng: RNN giúp phát hiện các xu hướng giá dài hạn và ngắn hạn, từ đó cung cấp cái nhìn sâu sắc về biến động thị trường và giúp nhà đầu tư xây dựng chiến lược giao dịch hợp lý.
❖ Dự đoán tỷ giá hối đoái
Phân tích lịch sử tỷ giá: Sử dụng RNN để phân tích dữ liệu lịch sử về tỷ giá hối đoái giữa các cặp tiền tệ, dự đoán xu hướng thay đổi trong tương lai Điều này đặc biệt quan trọng cho các doanh nghiệp hoạt động trên thị trường quốc tế và cần quản lý rủi ro tỷ giá.
Phát hiện các yếu tố ảnh hưởng: RNN có thể tích hợp thêm các yếu tố kinh tế vĩ mô như lãi suất, lạm phát, và tin tức tài chính để cải thiện độ chính xác của dự đoán tỷ giá.
Phân tích dữ liệu lịch sử: RNN có thể được sử dụng để phân tích dữ liệu lịch sử về lãi suất cho vay, lãi suất tiết kiệm, và các chỉ số tài chính liên quan để dự đoán xu
Quản lý rủi ro: Các doanh nghiệp và nhà đầu tư có thể sử dụng dự đoán lãi suất để quản lý rủi ro tài chính, tối ưu hóa danh mục đầu tư, và đưa ra các quyết định vay mượn hợp lý.
❖ Dự đoán các biến số kinh tế khác:
Tổng quan về Mạng Neural 16 1 Khái niệm
Mạng neural nhân tạo (Artificial Neural Networks - ANN) là một phương thức trong lĩnh vực trí tuệ nhân tạo, được sử dụng để dạy máy tính xử lý dữ liệu theo cách được lấy cảm hứng từ bộ não con người Đây là một loại quy trình máy học, được gọi là deep learning, sử dụng các nút hoặc nơ-ron liên kết với nhau trong một cấu trúc phân lớp tương tự như bộ não con người Mạng neural nhân tạo nhắm tới giải quyết các vấn đề phức tạp, chẳng hạn như tóm tắt tài liệu hoặc nhận diện khuôn mặt, với độ chính xác cao hơn.
Neuron (Nơ-ron): Đơn vị tính toán cơ bản của mạng neural Mỗi neuron nhận tín hiệu từ các neuron ở lớp trước đó, thực hiện một phép tính, và gửi kêt quả tới các neuron ở lớp tiếp theo.
Trọng số (Weights): Mỗi liên kết giữa các neuron có một trọng số tương ứng, điều chỉnh ảnh hưởng của tín hiệu truyền qua liên kết đó Trọng số là các tham số mà mạng học được trong quá trình huấn luyện.
Hàm kích hoạt (Activation Function): Được áp dụng lên tổng đầu vào của mỗi neuron để giới hạn hoặc biến đổi giá trị đầu ra Một số hàm kích hoạt phổ biến bao gồm sigmod, tanh, và ReLU ( Rectified Linear Unit).
Lan truyền xuôi (Forward Propagation): Dữ liệu đầu vào được truyền qua các lớp của mạng từ lớp đầu vào đến lớp đầu ra Tại mỗi neuron , đầu vào được nhân với trọng số, cộng thêm một bias, và áp dụng hàm kích hoạt để tạo ra đầu ra neuron đó.
Tính toán lỗi (Error Calculation): Sau khi hoàn thành lan truyền xuôi, kết quả đầu ra của mạng được so sánh với giá trị thực tế để tính toán lỗi Môt hàm mất mát ( loss function ) như Mean Squared Error (MSE) hoặc Cross – En tropy được sử dụng để lượng hóa mức độ sai lệch giữa dự đoán của mạng và giá trị thực.
Lan truyền ngược (Backpropagation): Mạng neural điều chỉnh các trọng số dựa trên lỗi tính toán được bằng cách lan truyền ngược qua các lớp Gradient của hàm mất mát đối với trọng số được tính toán và cadc trọng số được cập nhật theo hướng giảm dần gradient để giảm thiểu lỗi.
Quá trình cập nhật trọng số thường được thực hiện bằng các thuật toán tối ưu hóa như Gradient Descent, Adam, hoặc RMSprop.
Các thuật toán này điều chỉnh tốc độ học (learning rate) và hướng cập nhật trọng số để đảm bảo quá trình học hiệu quả và nhanh chóng hội tụ.
Mạng neural đã được áp dụng rộng rãi trong nhiều lĩnh vực khác nhau nhờ khả năng lọc và nhận dạng mẫu phức tạp:
Xử lý ngôn ngữ tự nhiên (NLP) : Dịch máy, phân tích cảm xúc, nhận dạng thực thể.
Thị giác máy tính (Computer Vision): Nhận diện hình ảnh, phát hiện đối tượng, phân loại ảnh.
Hệ thống khuyến nghị (Recommendation Systems): Gợi ý sản phẩm, cá nhân hóa trải nghiệm người dùng.
Chẩn đoán y tế (Medical Diagnosis): Phân tích hình ảnh y tế, dự đoán bệnh tật, hỗ trợ quyết định lâm sàng.
Tài chính (Finance): Dự đoán thị trường, phát hiện gian lận, quản lý rủi ro.
Mạng Neural Truyền Thống ( Feedforward Neural Networks – FNNs ): Thông tin chỉ di chuyển theo một hướng từ đầu đến đầu ra, không có vòng lặp.
Mạng Neural Tích Chập ( Convolutional Neural Networks – CNNs ): Được sử dụng chủ yếu trong xử lý hình ảnh, sử dụng các lớp tích chập để phát hiện các đặc trưng không gian
Mạng Neural Tái Phát ( Recurrent Neural Networks – RNNs ): Có các vòng lặp cho phép thông tin từ các bước thời gian trước ảnh hưởng đến các bước sau, phù hợp cho dữ liệu tuần tự như chuỗi thời gian và văn bản.
Mạng Neural Tái Cấu Trúc (RNNs) 17 1 Kiến trúc cơ bản của mạng neural tái cấu trúc và cơ chế hoạt động
2.2.1 Kiến trúc cơ bản của mạng neural tái cấu trúc và cơ chế hoạt động
Mạng neural tái cấu trúc (Recurrent Neural Networks - RNNs) là một dạng mạng neural nhân tạo được thiết kế cho việc xử lý các loại dữ liệu có dạng chuỗi tuần tự. Trong mạng RNN, trạng thái ẩn tại mỗi bước thời gian sẽ được tính toán dựa vào dữ liệu đầu vào tại bước thời gian tương ứng và các thông tin có được từ bước thời gian trước đó, tạo khả năng ghi nhớ các thông tin đã được tính toán ở những bước thời gian trước cho mạng. a Kiến trúc cơ bản của RNNs
RNNs có cấu trúc bao gồm các phần chính sau:
Lớp đầu vào (Input Layer): Nhận dữ liệu đầu vào ở mỗi bước thời gian.
Lớp ẩn (Hidden Layer): Gồm các neuron có trạng thái ẩn được cập nhật tại mỗi bước thời gian , dựa trên đầu vào hiện tại và trạng thái ẩn của bước thời gian trước đó.
Lớp đầu ra (Output Layer): Tạo ra đầu ra dựa trên trạng thái ẩn của lớp ẩn. b Cơ chế hoạt động của RNNs
❖ Lan truyền xuôi (Forward Propagation) Đầu vào: Ở mỗi bước thời gian t, RNN nhận một đầu vào xt Trạng thái ẩn ht tại bước thời gian t được tính dựa trên đầu vào hiện tại xt và trạng thái ẩn từ bước thời gian trước đó ht-1.
Công thức tính toán cho trạng thái ẩn: ht = σ ( Whx.xt + Whh.ht−1 + bh) Trong đó:
● Whx: là ma trận trọng số giữa đầu vào và trạng thái ẩn.
● Whh: là ma trận trọng số giữa các trạng thái ẩn của các bước thời gian.
● σ: là hàm kích hoạt, thường là hàm tanh hoặc ReLU. Đầu ra: Đầu ra yt tại bước thời gian t được tính dựa trên trạng thái ẩn hiện tại ht
Công thức tính toán cho đầu ra: yt = ϕ ( Whyht + by ) Trong đó:
Why là ma trận trọng số giữa trạng thái ẩn và đầu ra. by là vector bias. ϕ là hàm kích hoạt đầu ra, thường là hàm softmax hoặc sigmoid tùy thuộc vào loại bài toán (phân loại hoặc hồi quy).
❖ Lan truyền ngược qua thời gian (Backpropagation Through Time - BPTT)
Tính toán lỗi: Sau khi hoàn thành lan truyền xuôi, lỗi được tính toán dựa trên đầu ra của RNN và giá trị thực tế.
Lan truyền ngược qua thời gian: Quá trình điều chỉnh trọng số và bias của RNN thông qua việc lan truyền ngược lỗi qua các bước thời gian Quá trình này phức tạp hơn so với mạng neural truyền thống do phải tính toán gradient qua nhiều bước thời gian.
Công thức cập nhật trọng số sử dụng Gradient Descent: θ = θ - η∇θL
Trong đó: θ là tập hợp các trọng số và bias. η là tốc độ học (learning rate).
∇θL là gradient của hàm mất mát theo các tham số θ\thetaθ.
2.2.2 Các biến thể của RNNs a Long Short-Term Memory (LSTM)
LSTM là một loại RNN đặc biệt được thiết kế để giải quyết vấn đề vanishing gradient (gradient biến mất) trong quá trình huấn luyện RNNs LSTM có cấu trúc bao gồm các cổng (gates) để kiểm soát luồng thông tin:
Cổng đầu vào (Input Gate): Quyết định thông tin mới nào sẽ được lưu vào trạng thái ô (cell state).
Cổng quên (Forget Gate): Quyết định thông tin nào từ trạng thái ô sẽ được quên.- Cổng đầu ra (Output Gate): Quyết định thông tin nào từ trạng thái ô sẽ được sử dụng để tính toán đầu ra. b Gated Recurrent Unit (GRU)
GRU là một biến thể khác của RNN, đơn giản hơn LSTM nhưng vẫn giải quyết được vấn đề vanishing gradient GRU kết hợp cổng đầu vào và cổng quên thành một cổng duy nhất gọi là cổng cập nhật (Update Gate).
Mạng Neural Tái Phát (RNNs) với khả năng nhớ và xử lý dữ liệu tuần tự mở ra nhiều cơ hội cho việc dự đoán chuỗi thời gian và xử lý các bài toán có tính tuần tự. Hiểu rõ kiến trúc và cơ chế hoạt động của RNNs, cùng với các biến thể như LSTM và GRU, là nền tảng quan trọng để áp dụng chúng vào các ứng dụng thực tế như phân tích tài chính, chẩn đoán y tế, và dự báo thời tiết.
2.2.3 Thành phần cấu trúc và vai trò trong xử lý chuỗi dữ liệu
Mạng RNN bao gồm ba loại tầng chính:
Tầng đầu vào (Input Layer): Tầng này nằm bên trái cùng của mạng, thể hiện cho các đầu vào của mạng.
Tầng đầu ra (Output Layer): Là tầng bên phải cùng của mạng, thể hiện cho các đầu ra của mạng.
Tầng ẩn (Hidden Layer): Tầng này nằm giữa tầng vào và tầng ra, thể hiện cho quá trình suy luận logic của mạng. a Thành phần cấu trúc của RNNs:
Nút đầu vào (Input Nodes): Nhận dữ liệu đầu vào cho mỗi bước thời gian.
Nút ẩn (Hiden Nodes): duy trì trạng thái ẩn và xử lý thông tin theo thời gian.
Nút đầu ra (Output Nodes): tạo ra đầu ra tại mỗi bước thời gian.
Trọng số (Weights): điều chỉnh ảnh hưởng của các liên kết giữa các nút đầu vào, ẩn vào đầu ra
Hàm kích hoạt (Activation Function): giới hạn hoặc biến đổi giá trị đầu ra của các nút ẩn và đầu ra.
Hàm mất mát (Loss Function): đo lường sự khác biệt giữa đầu ra dự đoán và giá trị thực tế
Cổng trong LSTM và GRU: kiểm soát luồng thông tin qua các bước thời gian và giúp giải quyết vấn đề vanishing gradient. b Vai trò của các thành phần trong việc xử lý chuỗi dữ liệu
Duy trì thông tin ngữ cảnh: Các nút ẩn và trạng thái ẩn giúp RNN duy trì thông tin ngữ cảnh từ các bước thời gian trước, giúp mạng hiểu và xử lý dữ liệu tuần tự một cách hiệu quả.
Học các mẫu phức tạp: Hàm kích hoạt và trọng số giúp mạng học các mẫu phi tuyến tính phức tạp trong chuỗi dữ liệu.
Giảm thiểu vấn đề vanishing gradient: Các cổng trong LSTM và GRU giúp giảm thiểu vấn đề gradient biến mất, làm cho việc huấn luyện mạng trở nên hiệu quả hơn. Tối ưu hóa dự đoán: Hàm mất mát và quá trình lan truyền ngược giúp mạng tối ưu hóa dự đoán, từ đó cải thiện độ chính xác và hiệu suất của mạng.
Trong mạng RNN, tầng ẩn đóng vai trò quan trọng trong việc xử lý chuỗi dữ liệu. Tại mỗi bước thời gian, trạng thái ẩn được cập nhật dựa trên trạng thái ẩn tại bước thời gian trước đó và dữ liệu đầu vào tại bước thời gian hiện tại Điều này cho phép mạng RNN ghi nhớ thông tin từ quá khứ và sử dụng nó để dự đoán tương lai. c Ứng dụng của RNN trong dự đoán chuỗi thời gian Ứng dụng của mạng neural tái cấu trúc (RNNs) trong dự đoán chuỗi thời gian là rất đa dạng và có thể áp dụng trong nhiều lĩnh vực khác nhau Dưới đây là một số ứng dụng phổ biến của RNNs trong dự đoán chuỗi thời gian:
Dự báo tài chính: RNNs có thể được sử dụng để dự đoán giá cổ phiếu, chỉ số thị trường, hoặc các biến động tài chính khác dựa trên dữ liệu lịch sử và các yếu tố tác động.
Dự đoán thị trường chứng khoán: RNNs có khả năng nhận diện các mẫu phức tạp trong dữ liệu thị trường chứng khoán và dự đoán xu hướng giá trong tương lai, hỗ trợ các nhà đầu tư trong việc ra quyết định giao dịch.
Mạng Long Short-Term Memory (LSTM) 21 1 Khái niệm
Mạng bộ nhớ dài-ngắn (Long Short Term Memory networks), thường được gọi là LSTM - là một dạng đặc biệt của RNN, nó có khả năng học được các phụ thuộc xa. LSTM được giới thiệu bởi Hochreiter & Schmidhuber (1997), và sau đó đã được cải tiến và phổ biến bởi rất nhiều người trong ngành Chúng hoạt động cực kì hiệu quả trên nhiều bài toán khác nhau nên dần đã trở nên phổ biến như hiện nay.
LSTM được thiết kế để tránh được vấn đề phụ thuộc xa (long-term dependency). Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của chúng, chứ ta không cần phải huấn luyện nó để có thể nhớ được Tức là ngay nội tại của nó đã có thể ghi nhớ được mà không cần bất kì can thiệp nào.
Mọi mạng hồi quy đều có dạng là một chuỗi các mô-đun lặp đi lặp lại của mạng nơ- ron Với mạng RNN chuẩn, các mô-dun này có cấu trúc rất đơn giản, thường là một tầng tanh.
Mạng hồi quy RNN đơn giản
LSTM cũng có kiến trúc dạng chuỗi như vậy, nhưng các mô-đun trong nó có cấu trúc khác với mạng RNN chuẩn 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 rất đặc biệt.
Mạng LSTM so với mạng RNN
Các ký hiệu trong hình Ở sơ đồ trên, mỗi một đường mang một véc-tơ từ đầu ra của một nút tới đầu vào của một nút khác Các hình trong màu hồng biểu diễn các phép toán như phép cộng véc-tơ chẳng hạn, còn các ô màu vàng được sử dụng để học trong các từng mạng nơ-ron Các đường hợp nhau kí hiệu việc kết hợp, còn các đường rẽ nhánh ám chỉ nội dung của nó được sao chép và chuyển tới các nơi khác nhau.
Chìa khóa của LSTM là trạng thái tế bào (cell state) - đường chạy thông ngang phía trên của sơ đồ hình vẽ Trạng thái tế bào là một dạng giống như băng truyền Nó chạy xuyên suốt tất cả các mắt xích (các nút mạng) và chỉ tương tác tuyến tính đôi chút Vì vậy mà các thông tin có thể dễ dàng truyền đi thông suốt mà không sợ bị thay đổi.
Trạng thái tế bào của mạng
LSTM có khả năng bỏ đi hoặc thêm vào các thông tin cần thiết cho trạng thái tế báo, chúng được điều chỉnh cẩn thận bởi các nhóm được gọi là cổng (gate) Các cổng là nơi sàng lọc thông tin đi qua nó, chúng được kết hợp bởi một tầng mạng sigmoid và một phép nhân.
Tầng sigmoid sẽ cho đầu ra là một số trong khoảng [0,1], mô tả có bao nhiêu thông tin có thể được thông qua Khi đầu ra là 0 thì có nghĩa là không cho thông tin nào qua cả, còn khi là 1 thì có nghĩa là cho tất cả các thông tin đi qua nó.
Một LSTM gồm có 3 cổng như vậy để duy trì và điều hành trạng thái của tế bào.
Bước đầu tiên của LSTM là quyết định xem thông tin nào cần bỏ đi từ trạng thái tế bào Quyết định này được đưa ra bởi tầng sigmoid - gọi là “tầng cổng quên” (forget gate layer) Nó sẽ lấy đầu vào là h_t−1 và xt rồi đưa ra kết quả là một số trong khoảng [0,1] cho mỗi số trong trạng thái tế bào C t−1 Đẩu ra là 1 thể hiện rằng nó giữ toàn bộ thông tin lại, còn 0 chỉ rằng toàn bộ thông tin sẽ bị bỏ đi.
Quay trở lại với ví dụ mô hình ngôn ngữ dự đoán từ tiếp theo dựa trên tất cả các từ trước đó, với những bài toán như vậy, thì trạng thái tế bào có thể sẽ mang thông tin về giới tính của một nhân vật nào đó giúp ta sử dụng được đại từ nhân xưng chuẩn xác. Tuy nhiên, khi đề cập tới một người khác thì ta sẽ không muốn nhớ tới giới tính của nhân vật nữa, vì nó không còn tác dụng gì với chủ thể mới này.
Quyết định thông tin mới cần lưu lại
Bước tiếp theo là quyết định xem thông tin mới nào ta sẽ lưu vào trạng thái tế bào. Việc này gồm 2 phần Đầu tiên là sử dụng một tầng sigmoid được gọi là “tầng cổng vào” (input gate layer) để quyết định giá trị nào ta sẽ cập nhập Tiếp theo là một tầng tanh tạo ra một véc-tơ cho giá trị mới C t nhằm thêm vào cho trạng thái Trong bước tiếp theo, ta sẽ kết hợp 2 giá trị đó lại để tạo ra một cập nhập cho trạng thái.
Chẳng hạn với ví dụ mô hình ngôn ngữ của ta, ta sẽ muốn thêm giới tính của nhân vật mới này vào trạng thái tế bào và thay thế giới tính của nhân vật trước đó.
Cập nhật trạng thái tế bào cũ
Giờ là lúc cập nhập trạng thái tế bào cũ Ct-1 thành trạng thái mới Ct Ở các bước trước đó đã quyết định những việc cần làm, nên giờ ta chỉ cần thực hiện là xong.
Ta sẽ nhân trạng thái cũ với ft để bỏ đi những thông tin ta quyết định quên lúc trước Sau đó cộng thêm it * C t Trạng thái mơi thu được này phụ thuộc vào việc ta quyết định cập nhập mỗi giá trị trạng thái ra sao.
Với bài toàn mô hình ngôn ngữ, chính là việc ta bỏ đi thông tin về giới tính của nhân vật cũ, và thêm thông tin về giới tính của nhân vật mới như ta đã quyết định ở các bước trước đó.
Quyết định giá trị đầu ra
Thuật toán chuẩn hóa dữ liệu 24 1 Hàm chuẩn hóa Standard Scaler
Trong thực tế dữ liệu có các giá trị khác nhau và đơn vị đo lường khác nhau mà chúng khó có thể so sánh được.Ví dụ làm thế nào để so sánh các giá trị là kg và m hoặc độ cao và thời gian…Để giải quyết cho bài toán này chúng ta có thể sử dụng tính năng mở rộng Scale để quy đổi sang một giá trị mới để dễ dàng so sánh hơn.
2.4.1 Hàm chuẩn hóa Standard Scaler
StandardScaler là một kỹ thuật tiền xử lý dữ liệu được cung cấp bởi Scikit-Learn dùng để chuẩn hóa các thuộc tính (feature) trong một tập dữ liệu Nó thực hiện việc này bằng cách điều chỉnh các thuộc tính để có giá trị trung bình là 0 và phương sai bằng 1
StandardScaler đặc biệt hữu ích khi các thuộc tính (feature) có thang đo khác nhau. Bằng việc áp dụng StandardScaler, ta có thể đưa các thuộc tính về một thang đo chung, đảm bảo tính công bằng trong hiệu suất của thuật toán Do đó, StandardScaler là lựa chọn hữu ích cho các thuật toán như: Support Vector Machines (SVM), k- Nearest Neighbors (kNN) và Principal Component Analysis (PCA).
Công thức chuẩn của phương pháp standardization như sau:
Trong đó: xi: là giá trị của x tại phần tử i. mean(x): là giá trị trung bình của x. sd(x): là độ lệch chuẩn của x.
Cải thiện tốc độ hội tụ của các thuật toán dựa trên gradient: Gradient descent là một thuật toán tối ưu hóa thường được sử dụng trong học máy StandardScaler giúp các thuật toán dựa trên gradient hội tụ nhanh hơn bằng cách đảm bảo tất cả các thuộc tính có đóng góp tương đương vào quá trình cập nhật tham số (weights) của mô hình. Nâng cao hiệu suất của các mô hình phụ thuộc vào metric khoảng cách: Một số thuật toán học máy, ví dụ như k-Nearest Neighbors (kNN) và Support Vector Machines (SVM), sử dụng distance metrics (đo khoảng cách) để đưa ra dự đoán. StandardScaler đảm bảo các thuộc tính có cùng thang đo, giúp tính toán khoảng cách chính xác hơn và cải thiện hiệu suất của các mô hình này.
Cung cấp khả năng trực quan hóa phân bố thuộc tính tốt hơn: Khi các thuộc tính có thang đo khác nhau, việc trực quan hóa phân bố dữ liệu (distribution) sẽ khó khăn.
StandardScaler giúp phân bố của các thuộc tính có dạng hình chuông (bell-shaped) giống nhau, giúp việc trực quan hóa và phân tích dữ liệu dễ dàng hơn.
Mặc dù StandardScaler hiệu quả trong nhiều trường hợp, nhưng nó có thể không hoạt động tốt với dữ liệu có phân bố đuôi nặng (heavy-tailed distributions) hoặc khi có nhiều điểm ngoại lai (outliers) xuất hiện Trong những trường hợp này, các kỹ thuật chuẩn hóa khác như RobustScaler hoặc MinMaxScaler có thể phù hợp hơn.
MinMaxScaler là một kỹ thuật tiền xử lý dữ liệu được cung cấp bởi Scikit-Learn.
Nó giúp chuẩn hóa và biến đổi các thuộc tính (feature) trong một tập dữ liệu sang một khoảng giá trị nhất định, thường nằm trong khoảng từ 0 đến 1 Việc chuẩn hóa này đặc biệt hữu ích cho các thuật toán học máy yêu cầu các thuộc tính có thang giá trị tương đương nhau, tránh trường hợp một số thuộc tính chi phối quá trình học máy. MinMaxScaler có thể giúp cải thiện hiệu suất và khả năng hội tụ của các mô hình. Trước khi đi sâu vào việc sử dụng MinMaxScaler, cần nắm rõ các khái niệm then chốt sau:
Chuẩn hóa đặc trưng (Feature Scaling): Là quá trình biến đổi các đặc trưng để chúng có cùng một thang giá trị tương đương Điều này giúp tránh trường hợp một số đặc trưng ảnh hưởng quá mức đến kết quả học máy.
Chuẩn hóa (Normalization): MinMaxScaler thực hiện chuẩn hóa bằng cách thu hẹp các đặc trưng vào một khoảng giá trị xác định, thường nằm trong khoảng từ 0 đến 1. Biến đổi Dữ liệu (Data Transformation): MinMaxScaler chuyển đổi các giá trị đặc trưng ban đầu thành các giá trị đã được chuẩn hóa, tuy nhiên vẫn bảo toàn các mối quan hệ tương đối giữa các dữ liệu.
Trong đó: xi: giá trị của x tại phần tử i min(x): giá trị nhỏ nhất của x max(x): giá trị lớn nhất của x
MinMaxScaler mang lại nhiều lợi ích:
Bảo toàn các Mối quan hệ: MinMaxScaler duy trì các mối quan hệ tương đối giữa các giá trị thuộc tính (feature) ngay cả sau khi chuẩn hóa Điều này có nghĩa là thứ tự sắp xếp tương đối giữa các giá trị ban đầu vẫn được giữ nguyên sau khi áp dụng MinMaxScaler. Áp dụng cho Nhiều Thuật toán: MinMaxScaler phù hợp với các thuật toán học máy nhạy cảm với việc chuẩn hóa thuộc tính, ví dụ như thuật toán k-nearest neighbors (kNN) và mạng nơ-ron nhân tạo Bởi vì các thuật toán này có thể bị ảnh hưởng bởi sự khác biệt về thang đo giữa các thuộc tính.
Cải thiện Tốc độ Hội tụ: Chuẩn hóa dữ liệu có thể giúp các mô hình hội tụ nhanh hơn trong quá trình huấn luyện Thuật toán hội tụ nghĩa là đạt được trạng thái tối ưu (hoặc gần tối ưu) trong quá trình học máy Bằng cách chuẩn hóa dữ liệu, MinMaxScaler có thể giúp các thuật toán học nhanh hơn và hiệu quả hơn.
RobustScaler là một kỹ thuật tiền xử lý dữ liệu có giá trị trong thư viện Scikit- Learn, cho phép thực hiện việc chuẩn hóa đặc trưng một cách mạnh mẽ (robust) Nó giúp chuẩn hóa các thuộc tính (feature) trong một tập dữ liệu theo phương pháp mạnh mẽ, hạn chế ảnh hưởng của các điểm ngoại lai (outlier).
Trong đó: xi: giá trị của x tại phần từ i
Q1: tứ phân vị thứ nhất
Q3: tứ phân vị thứ ba
Tứ phân vị giúp chia một tập dữ liệu đã được sắp xếp thứ tự thành bốn phần bằng nhau Q1 đại diện cho giá trị nằm ở vị trí (n + 1) / 4, trong đó n là tổng số quan sát trong tập dữ liệu Tương tự, Q3 nằm ở vị trí 3 * (n + 1) / 4.
RobustScaler là một lớp (class) trong Scikit-Learn Nó thực hiện chuẩn hóa dữ liệu bằng cách loại bỏ trung vị (median) và khoảng tứ phân vị (interquartile range - IQR) của mỗi thuộc tính.
Trung vị là giá trị nằm chính giữa khi sắp xếp các giá trị của thuộc tính theo thứ tự tăng dần.
Khoảng tứ phân vị (IQR) là khoảng cách giữa phần tư thứ nhất (Q1) và phần tư thứ ba (Q3) của dữ liệu được sắp xếp. Ưu điểm: Ít nhạy cảm với điểm ngoại lai (Outlier Insensitivity): So với chuẩn hóa theo phương pháp chuẩn (standard scaling), RobustScaler ít bị ảnh hưởng bởi các điểm ngoại lai nằm xa so với phần còn lại của dữ liệu Điều này giúp đảm bảo quá trình chuẩn hóa chính xác hơn.
Thuật toán giảm chiều của dữ liệu 28 1 Thuật toán giảm chiều dữ liệu Multi-Dimensional Scaling (MDS)
2.5.1 Thuật toán giảm chiều dữ liệu Multi-Dimensional Scaling (MDS)
Giảm chiều đa dạng (MDS) là một kỹ thuật thống kê thường được sử dụng trong lĩnh vực trực quan hóa thông tin và nghiên cứu khoa học xã hội để hiển thị cấu trúc của dữ liệu giống như khoảng cách Đây là một dạng giảm chiều dữ liệu không tuyến tính và có thể được sử dụng để khám phá những điểm giống hoặc khác nhau trong dữ liệu.
Ma trận similarlity (dữ liệu giống nhau): Thuật toán bắt đầu với một ma trận thể hiện mức độ giống nhau giữa từng cặp đối tượng (item) trong dữ liệu Ma trận này có thể chứa các giá trị similarlity (giống nhau) hoặc dissimilarlity (khác nhau).
Gán vị trí cho các đối tượng: MDS tiến hành gán vị trí cho mỗi đối tượng trong một không gian N chiều, với N là số chiều do người dùng tùy chọn (thường là 2 hoặc 3 chiều).
Giữ lại các mối quan hệ tương đối: Nói một cách đơn giản, MDS cố gắng ánh xạ các đối tượng từ không gian ban đầu nhiều chiều (high-dimensional space) xuống một không gian có chiều thấp hơn (thường là 2 chiều để trực quan hóa hoặc đôi khi là 3 chiều) Trong quá trình ánh xạ này, MDS cố gắng bảo toàn các mối quan hệ tương đối giữa các đối tượng Điều này có nghĩa là:
Các đối tượng gần nhau trong không gian nhiều chiều ban đầu sẽ được đặt gần nhau trong không gian chiều thấp.
Các đối tượng ở xa nhau trong không gian nhiều chiều ban đầu sẽ được đặt cách xa nhau trong không gian chiều thấp.
Bằng cách này, MDS giúp chúng ta trực quan hóa các mối quan hệ giữa các đối tượng trong dữ liệu có nhiều chiều thành một dạng dễ hiểu hơn trong không gian chiều thấp.
MDS Cổ Điển (Classical MDS) hay Phân Tích Tọa Độ Chính (Principal Coordinates Analysis):
Loại MDS này sử dụng khoảng cách ban đầu giữa các đối tượng và cố gắng giữ nguyên các khoảng cách này trong không gian chiều giảm Do sử dụng khoảng cách metric (khoảng cách đo được), nên nó còn được gọi là metric MDS Kỹ thuật này dựa trên phân tích eigen (eigen decomposition) và thường được sử dụng khi bạn có ma trận dissimilarlity chính xác (chẳng hạn như khoảng cách địa lý).
Tương tự như MDS Cổ Điển, Metric MDS cố gắng bảo toàn các khoảng cách metric càng sát càng tốt Tuy nhiên, khác với MDS Cổ Điển, nó sử dụng thuật toán lặp
(iterative algorithm) và hoạt động được trên cả dữ liệu tỷ số (ratio data) và dữ liệu khoảng cách (interval data).
Non-metric MDS (MDS Không Metric):
Loại MDS này cố gắng giữ nguyên thứ tự (rank order) của các khoảng cách thay vì giữ nguyên khoảng cách thực tế Phương pháp này hữu ích khi các dissimilarlity không phải là metric hoặc khi phép biến đổi của các dissimilarlity không rõ ràng hoặc không tuyến tính Nó cố gắng mô hình hóa dữ liệu similarlity (giống nhau) hoặc dissimilarlity (khác nhau) thành các khoảng cách trong không gian hình học.
Generalized MDS (GMDS - MDS Tổng Quát):
GMDS được thiết kế để xử lý các loại dữ liệu khác nhau, chẳng hạn như ma trận có giá trị thiếu, và để áp dụng các ràng buộc khác nhau cho các nghiệm Nó cung cấp một khung tổng quát để xử lý các cấu trúc dữ liệu phức tạp hơn.
Individual Differences Scaling (INDSCAL - Giảm Chiều Theo Sự Khác Biệt Cá Nhân): Đây là một loại MDS được thiết kế để phân tích dữ liệu từ nhiều cá nhân hoặc nhóm khác nhau Nó là kỹ thuật giảm chiều ba chiều, trong đó một chiều đại diện cho các đối tượng (subject) khác nhau.
Ordinal MDS (MDS Thứ Tự):
Loại này tương tự như non-metric MDS, nhưng nó nhấn mạnh hơn vào việc bảo toàn thứ tự của các khoảng cách.
Công Thức Giảm Chiều Đa Dạng (MDS)
Giảm chiều đa dạng (MDS) là kỹ thuật dùng để hiển thị cấu trúc của dữ liệu giống như khoảng cách Mặc dù vậy, MDS sử dụng nhiều công thức khác nhau để tính toán và giảm chiều.
Tính toán Khoảng Cách Euclid (Euclidean Distance Calculation): Trong MDS cổ điển, chúng ta thường bắt đầu với một ma trận chứa các khoảng cách Euclid Nếu có hai điểm (x1, y1) và (x2, y2) trong không gian hai chiều, thì công thức tính khoảng cách Euclid giữa hai điểm đó là:
Trung Tâm Kép (Double Centering): Trong quá trình trung tâm kép, chúng ta điều chỉnh ma trận dissimilarlity để loại bỏ bất kỳ xu hướng nào trong dữ liệu không liên quan đến khoảng cách giữa các điểm.
B: Ma trận sau khi trung tâm kép
D: Ma trận dissimilarlity ban đầu n: Số lượng điểm trong dữ liệu
1: Một ma trận với tất cả các phần tử bằng 1
Phân Rã Ma Trận (Eigenvalue Decomposition):
Ma trận B thu được từ bước trung tâm kép sau đó được phân tách thành các eigenvalue (giá trị riêng) và eigenvectors (vectơ riêng) của nó Bước này cung cấp cho chúng ta tọa độ của các điểm trong không gian mới có chiều thấp hơn.
Nếu λ là các eigenvalue và E là các eigenvectors tương ứng của B, thì ma trận tọa độ X được tính bằng:
X: Ma trận tọa độ trong không gian chiều thấp
E: Ma trận eigenvectors λ: Các giá trị riêng trên đường chéo của ma trận đường chéo (diag) sqrt(λ): Căn bậc hai của các giá trị riêng
Hàm Stress (Stress Function - MDS Không Metric):
MDS không metric sử dụng một cách tiếp cận khác Nó bắt đầu với một cấu hình được dự đoán và sau đó cập nhật lặp lại để giảm một giá trị được gọi là "stress" Stress là thước đo sự khác biệt giữa các khoảng cách trong không gian nhiều chiều và các khoảng cách trong không gian chiều thấp.
THỰC NGHIỆM
Lựa chọn dữ liệu 34 1 Lý do lựa chọn
Trong đề tài, nhóm tác giả sử dụng dữ liệu giá cổ phiếu trên thị trường chứng khoán của các công ty FPT, MSN, PNJ, VIC
Tính phức tạp: Thị trường chứng khoán có tính phức tạp cao với nhiều yếu tố ảnh hưởng đến giá cổ phiếu, bao gồm tin tức kinh tế, tâm lý nhà đầu tư, biến động thị trường, v.v Mô hình RNN có khả năng học hỏi các mối tương quan phức tạp trong dữ liệu và dự đoán giá cổ phiếu hiệu quả hơn so với các mô hình học máy truyền thống như hồi quy tuyến tính.
Khả năng học tập phụ thuộc thời gian: Giá cổ phiếu thường có xu hướng thay đổi theo thời gian, với những xu hướng ngắn hạn và dài hạn Mô hình RNN có khả năng học tập các phụ thuộc thời gian trong dữ liệu và dự đoán giá cổ phiếu trong tương lai. Tính linh hoạt: Mô hình RNN có thể được sử dụng để dự đoán giá cổ phiếu cho nhiều loại cổ phiếu khác nhau, trong các khung thời gian khác nhau và với các mục tiêu dự đoán khác nhau.
Hiệu suất: Mô hình RNN đã được chứng minh là có hiệu quả cao trong việc dự đoán giá cổ phiếu trong nhiều nghiên cứu và ứng dụng thực tế.
Ngoài ra, việc sử dụng dữ liệu chứng khoán để thiết kế mô hình RNN còn mang lại một số lợi ích khác như:
Cải thiện hiệu quả đầu tư: Mô hình RNN có thể được sử dụng để xây dựng các chiến lược đầu tư hiệu quả hơn, giúp nhà đầu tư kiếm được lợi nhuận tốt hơn.
Giảm thiểu rủi ro: Mô hình RNN có thể được sử dụng để xác định các rủi ro tiềm ẩn trong thị trường chứng khoán, giúp nhà đầu tư đưa ra quyết định đầu tư sáng suốt hơn.
Tự động hóa giao dịch: Mô hình RNN có thể được sử dụng để tự động hóa các giao dịch chứng khoán, giúp nhà đầu tư tiết kiệm thời gian và công sức.
Tuy nhiên, cần lưu ý rằng việc sử dụng dữ liệu chứng khoán để thiết kế mô hình RNN cũng có một số hạn chế như:
Khó khăn trong việc thu thập dữ liệu: Dữ liệu chứng khoán có thể khó thu thập và tốn kém.
Chất lượng dữ liệu: Chất lượng dữ liệu chứng khoán có thể ảnh hưởng đến hiệu suất của mô hình RNN.
Tính phức tạp của mô hình: Mô hình RNN có thể phức tạp để thiết kế và triển khai.
Do đó, việc lựa chọn dữ liệu chứng khoán để thiết kế mô hình RNN cần được cân nhắc kỹ lưỡng dựa trên các yếu tố như mục tiêu dự đoán, khả năng thu thập dữ liệu, ngân sách và trình độ kỹ thuật.
3.1.2 Mục đích thu thập dữ liệu
Phân tích xu hướng giá cổ phiếu: Dữ liệu có thể được sử dụng để theo dõi biến động giá cổ phiếu theo thời gian và xác định các xu hướng ngắn hạn và dài hạn.
Dự đoán giá cổ phiếu: Dữ liệu 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á cổ phiếu trong tương lai. Đánh giá hiệu quả đầu tư: Dữ liệu có thể được sử dụng để đánh giá hiệu quả của các chiến lược đầu tư khác nhau.
Nghiên cứu thị trường chứng khoán: Dữ liệu có thể được sử dụng để nghiên cứu các yếu tố ảnh hưởng đến giá cổ phiếu và hành vi của nhà đầu tư.
Thu thập dữ liệu 35 1 Loại dữ liệu
Việc lựa chọn dữ liệu chứng khoán phù hợp đóng vai trò then chốt trong việc thiết kế mô hình RNN hiệu quả để dự đoán giá cổ phiếu Dưới đây là một số yếu tố quan trọng cần cân nhắc khi lựa chọn dữ liệu:
Dữ liệu giá: Bao gồm giá mở cửa, giá cao nhất, giá thấp nhất và giá đóng cửa của cổ phiếu trong một khoảng thời gian nhất định Đây là loại dữ liệu phổ biến nhất được sử dụng trong mô hình RNN.
Dữ liệu khối lượng: Chỉ số về số lượng cổ phiếu được giao dịch trong một khoảng thời gian nhất định.
Dữ liệu tần suất cao: Bao gồm dữ liệu giá, khối lượng được ghi lại ở tần suất cao (ví dụ: mỗi phút, mỗi giờ).
Dữ liệu tần suất thấp: Bao gồm dữ liệu giá, khối lượng được ghi lại ở tần suất thấp (ví dụ: mỗi ngày, mỗi tuần).
Số lượng dữ liệu: Càng có nhiều dữ liệu lịch sử, mô hình RNN càng có thể học hỏi tốt hơn các mối tương quan và xu hướng trong dữ liệu.
Chất lượng dữ liệu: Dữ liệu nên chính xác, đầy đủ và nhất quán.
3.2.4 Quy trình xử lý dữ liệu
Chuẩn hóa dữ liệu: Dữ liệu cần được chuẩn hóa về cùng một thang để mô hìnhRNN có thể học hỏi hiệu quả hơn.
Bình thường hóa dữ liệu: Dữ liệu cần được bình thường hóa để có giá trị trung bình bằng 0 và độ lệch chuẩn bằng 1.
Chia tách dữ liệu: Dữ liệu cần được chia thành tập huấn luyện, tập xác nhận và tập kiểm tra để đánh giá hiệu suất của mô hình RNN.
3.2.5 Một số yếu tố khác
Mục tiêu dự đoán: Mô hình RNN được sử dụng để dự đoán giá cổ phiếu trong bao lâu (ví dụ: ngày mai, tuần sau, v.v.)?
Phí giao dịch: Phí giao dịch có ảnh hưởng đến hiệu quả của chiến lược dự đoán hay không?
Rủi ro: Mức độ rủi ro nào có thể chấp nhận được trong chiến lược dự đoán?
Việc lựa chọn dữ liệu phù hợp cho mô hình RNN là một quá trình phức tạp đòi hỏi sự hiểu biết về thị trường chứng khoán, kỹ thuật học máy và kỹ năng lập trình Do đó, việc tham khảo ý kiến của các chuyên gia trong lĩnh vực này là rất cần thiết.
Ta có bảng dữ liệu sau khi đọc từ file FPT.csv như sau:
Bảng dữ liệu ban đầu
Ticker: Biến này lưu trữ mã chứng khoán duy nhất cho mỗi cổ phiếu.
Date/Time: Biến này lưu trữ ngày và giờ giao dịch của mỗi bản ghi dữ liệu Điều này cho phép phân tích dữ liệu theo khung thời gian cụ thể (ví dụ: theo ngày, theo
Open: Biến này lưu trữ giá mở cửa của cổ phiếu trong phiên giao dịch tương ứng. Giá mở cửa là giá đầu tiên được giao dịch trong phiên.
High: Biến này lưu trữ giá cao nhất của cổ phiếu trong phiên giao dịch tương ứng. Giá cao nhất là giá cao nhất mà cổ phiếu đạt được trong phiên.
Low: Biến này lưu trữ giá thấp nhất của cổ phiếu trong phiên giao dịch tương ứng. Giá thấp nhất là giá thấp nhất mà cổ phiếu đạt được trong phiên.
Close: Biến này lưu trữ giá đóng cửa của cổ phiếu trong phiên giao dịch tương ứng. Giá đóng cửa là giá cuối cùng được giao dịch trong phiên.
Volume: Biến này lưu trữ khối lượng giao dịch của cổ phiếu trong phiên giao dịch tương ứng Khối lượng giao dịch cho biết số lượng cổ phiếu được giao dịch trong phiên.
Open Interest: Biến này lưu trữ lượng cổ phiếu đang nắm giữ vị thế mua khống Vị thế mua khống là chiến lược đầu tư bán cổ phiếu mà nhà đầu tư tin rằng giá sẽ giảm trong tương lai.
3.3.2 Phân tích dữ liệu cơ bản
Thống kê mô tả: Phân tích các thống kê mô tả như trung bình, trung vị, độ lệch chuẩn, tối thiểu và tối đa cho mỗi biến Điều này cung cấp cho ta cái nhìn tổng quan về phân bố dữ liệu.
Phân tích đồ thị: Vẽ các biểu đồ giá cổ phiếu theo thời gian để trực quan hóa xu hướng giá.
Phân tích tương quan: Đo lường mức độ tương quan giữa các biến Ví dụ, có thể tính toán mức độ tương quan giữa giá đóng cửa và khối lượng giao dịch.
Lượng dữ liệu: Lượng dữ liệu tương đối nhỏ (chỉ 97.406 hàng) có thể hạn chế khả năng khái quát hóa kết quả phân tích.
Thiếu thông tin về các yếu tố khác: Dữ liệu chỉ bao gồm thông tin về giá và khối lượng giao dịch, thiếu các yếu tố quan trọng khác có thể ảnh hưởng đến giá cổ phiếu như tin tức kinh tế, tâm lý nhà đầu tư, biến động thị trường, v.v.
Tính chất tĩnh của dữ liệu: Dữ liệu là tĩnh, nghĩa là nó không phản ánh các thay đổi theo thời gian thực trong giá cổ phiếu Điều này có thể ảnh hưởng đến độ chính xác của các dự đoán giá cổ phiếu.
3.3.4 Các ứng dụng tiềm năng
Xây dựng mô hình dự đoán giá cổ phiếu: Dữ liệu 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á cổ phiếu trong tương lai Các mô hình này có thể được sử dụng để hỗ trợ các quyết định đầu tư.
Phát triển chiến lược giao dịch: Dữ liệu có thể được sử dụng để phát triển các chiến lược giao dịch tự động nhằm tối ưu hóa lợi nhuận đầu tư.
Làm sạch dữ liệu 38 3.5 Xây dựng và huấn luyện mô hình LSTM 42 3.6 Kiểm thử mô hình 44 KẾT LUẬN
Trong bảng dữ liệu, ta có thể thấy cột “Ticker” thể hiện tên của công ty, vì dữ liệu của 1 file vốn đã được phân loại theo công ty và loại dữ liệu cần sử dụng là dạng số nên chúng ta có thể loại bỏ cột “Ticker” đi Tiếp theo, có thể thấy dữ liệu cột “Open Interest” chỉ có giá trị là 0, vì vậy cột này cũng không cần thiết Và cột “Volume” có giá trị quá chênh lệch và khác biệt so với các cột còn lại vậy nên cũng không cần thiết trong huấn luyện dữ liệu.
Bảng dữ liệu sau khi làm sạch giai đoạn 1
Từ đó, ta có thể sử dụng các dữ liệu trong bảng gồm: “Date/Time”, “Open”,
“High”, “Low”, “Close” Ta được:
Biểu đồ dữ liệu của cột “Open”
Biểu đồ dữ liệu của cột “High”
Biểu đồ dữ liệu của cột “Low”
Biểu đồ dữ liệu của cột “Close”
Sau khi hiển thị dữ liệu, ta thấy số lượng dữ liệu rất lớn, vậy nên cột “Date/Time” hiển thị ngày giờ giao dịch sẽ không cần thiết để hiển thị và sử dụng trong huấn luyện, ta tiếp tục xóa bỏ cột “Date/Time” cho dữ liệu.
Dữ liệu sau khi xóa bỏ các cột không cần thiết
Tiếp theo, các giá trị của dữ liệu vẫn còn khá lớn, việc này dễ gây ra khó khăn trong quá trình tính toán khi huấn luyện mô hình, nếu các giá trị này cộng dồn vào nhau có thể gây ra việc tràn bộ nhớ, tính toán chậm,… Như vậy, cần chuẩn hóa lại dữ liệu theo một số chuẩn cần thiết như StandardScaler, MinMaxScaler, RobustScaler.
Chuẩn hóa theo chuẩn Standard Scaler
Chuẩn hóa theo chuẩn MinMaxScaler
Chuẩn hóa theo chuẩn RobustScaler
Sau khi thực hiện chuẩn hóa dữ liệu, chúng ta cần chọn ra cột chứa các giá trị thích hợp nhất để thực hiện chuẩn bị cho quá trình huấn luyện mạng Việc chọn ra cột phù hợp được thực hiện thông qua thuật toán giảm chiều dữ liệu PCA Qua thuật toán này, dữ liệu sẽ được chuẩn hóa theo 1 chuẩn riêng và từ đó, tính toán và lựa chọn ra cột dữ liệu thích hợp nhất trong các cột của bảng dữ liệu đã cho Việc giảm chiều dữ liệu được thực hiện giảm từ 4 xuống 1.
Giảm chiều dữ liệu sau chuẩn StandardScaler
Giảm chiều dữ liệu sau chuẩn MinMaxScaler
Giảm chiều dữ liệu sau chuẩn RobustScaler
Tiếp theo, thực hiện phân loại dữ liệu huấn luyện (train), và gán nhãn (x_train, y_train) cho tập dữ liệu Dữ liệu train sẽ chiếm 70% tập dữ liệu, và chúng ta sẽ sử dụng dữ liệu của 60 ngày trước để dự đoán dữ liệu của ngày tiếp theo Như sau:
Phân tách và gán nhãn dữ liệu
Như vậy, tập dữ liệu huấn luyện sẽ có 68,125 dữ liệu x_train và y_train tương ứng.
Sau khi chuẩn bị xong tập dữ liệu huấn luyện, ta có thể xây dựng mô hình học sâu sử dụng LSTM để dự đoán giá cổ phiếu từ dữ liệu của 60 ngày trước đó.
Mô hình mạng mà bạn đã tạo bao gồm các lớp sau:
Lớp LSTM hai chiều đầu tiên: Lớp này có 64 đơn vị LSTM và trả về chuỗi đầu ra đầy đủ (thông qua tham số return_sequences=True) Điều này có nghĩa là nó sẽ trả về đầu ra ẩn tại mỗi bước thời gian, thay vì chỉ trả về đầu ra ẩn tại bước thời gian cuối cùng Lớp này cũng sử dụng hàm kích hoạt ReLU.
Lớp LSTM hai chiều thứ hai: Lớp này có 32 đơn vị LSTM và chỉ trả về đầu ra ẩn tại bước thời gian cuối cùng (do return_sequencesse) Lớp này cũng sử dụng hàm kích hoạt ReLU.
Lớp Dense thứ nhất: Lớp này có 15 đơn vị và sử dụng hàm kích hoạt ReLU.
Lớp Dense thứ hai: Lớp này có 1 đơn vị và không sử dụng hàm kích hoạt.
Mô hình này là một mô hình tuần tự, có nghĩa là các lớp được xếp chồng lên nhau theo thứ tự.
Thiết lập các hàm và huấn luyện mô hình
Khi huấn luyện dữ liệu, ta sử dụng các hàm loss (mất mát) và optimizer (tối ưu) sau: loss=keras.losses.MeanSquaredError(): Đây là hàm mất mát được sử dụng trong quá trình huấn luyện Mean Squared Error (MSE) là một hàm mất mát phổ biến cho các bài toán hồi quy, nó tính toán trung bình của bình phương sai số giữa giá trị dự đoán và giá trị thực. optimizer=keras.optimizers.Adam(): Optimizer là thuật toán được sử dụng để cập nhật trọng số của mô hình dựa trên dữ liệu huấn luyện Adam là một thuật toán tối ưu hóa phổ biến vì nó hoạt động tốt trong nhiều bài toán. metrics=[‘accuracy’]: Đây là danh sách các chỉ số được sử dụng để đánh giá hiệu suất của mô hình trong quá trình huấn luyện và kiểm thử Trong trường hợp này, chúng ta chỉ sử dụng ‘accuracy’ (độ chính xác), là tỷ lệ của số lượng dự đoán chính xác so với tổng số lượng mẫu.
Sau đó, thực hiện huấn luyện dữ liệu với batch_size là 10 và 20 vòng lặp epoch. Trong đó: batch_size: Kích thước batch là số lượng mẫu huấn luyện được sử dụng trong một lần cập nhật gradient Trong trường hợp này, mô hình sẽ cập nhật trọng số sau mỗi 10 mẫu huấn luyện. epochs : Một epoch là khi toàn bộ tập dữ liệu đã được truyền qua mạng một lần. Trong trường hợp này, dữ liệu huấn luyện sẽ được truyền qua mô hình 20 lần.
Sau khi thực hiện huấn luyện các mô hình LSTM, ta có thể kiểm thử độ chính xác của các mô hình dựa trên phần dữ liệu còn lại chưa được huấn luyện Như sau:
Lấy và gán nhãn dữ liệu kiểm thử
Sau đó, ta thực hiện dự đoán dữ liệu kiểm thử, sử dụng mô hình vừa huấn luyện.
Thực hiện dự đoán trên dữ liệu kiểm thử
Kết quả thu được so với kết quả trên tập dữ liệu kiểm thử như sau:
Biểu đồ thể hiện giá trị dự đoán và giá trị thực
Sau đó, tính độ chính xác của mô hình theo công thức sau: acc = ∑ ❑ ❑ y y pred
Trong đó: y_pred: giá trị dự đoán y_true: giá trị thực len(y): tổng các giá trị
Ta được kết quả độ chính xác là 99%. Độ chính xác của dự đoán khi kiểm thử với dữ liệu
Từ biểu đồ ta có thể thấy, dữ liệu dự đoán ban đầu đạt kết quả tốt, nhưng càng về sau, do sử dụng dữ liệu dự đoán, nên kết quả chênh lệch nhiều hơn.
Trong thời gian thực hiện đề tài, nhóm chúng em đã hoàn thành được các mục tiêu nhất định, tuy nhiên vẫn còn một số thiếu sót Chúng em sẽ cố gắng khắc phục các vấn đề và củng cố lại các kết quả đạt được trong tương lai.
Những gì đã làm được:
- Hiểu được các hoạt động của mạng nơ-ron tái cấu trúc (RNN)
- Kết hợp được các thuật toán giảm chiều dữ liệu vào ứng dụng với mạng RNN
- Sử dụng mạng RNN để phân tích và dự đoán giá cổ phiếu
- Kết quả dự đoán đạt được so với thực tế tốt khoảng 99%
Những gì chưa làm được:
- Chưa xây dựng được giao diện tương tác với người dung
- Mạng nơ-ron vẫn còn đơn giản, thời gian xử lý tương đối lâu Để có thể phát triển đề tài trong tương lai, chúng em đã đưa ra các hướng đi nhằm khắc phục những điểm yếu và nâng cao điểm mạnh như sau:
- Nghiên cứu, tận dụng thêm về các giá trị ở cột khác để nâng cao độ tin cậy.
- Xây dựng mạng nơ-ron phức tạp hơn để ứng dụng với nhiều bài toán hơn
- Tìm hiểu thêm để ứng dụng vào các đề tài có tính chất tương tự.