Tập dữ liệu Bài toán yêu cầu dựa vào tập dữ liệu lịch sử chứa các bản ghi về giá cổ phiếu, hãy chọn lựa và xây dựng một mơ hình dự đốn giá tương lai của thị trường chứng khoán cụ thể ở đ
Giới thiệu đề tài
Giới thiệu bài toán
Với tập dữ liệu có các thuộc tính như sau
Bài toán yêu cầu dựa vào tập dữ liệu lịch sử chứa các bản ghi về giá cổ phiếu, hãy chọn lựa và xây dựng một mô hình dự đoán giá tương lai của thị trường chứng khoán (cụ thể ở đây gồm 4 loại cổ phiếu là Apple, Tesla, Microsoft,
Facebook) và tất nhiên là không thể thiếu phần đánh giá về độ chính xác của mô hình
Bài báo cáo thực tập
Mô hình hồi quy
• Các phương pháp học giám sát:
– Học bởi các ví dụ (quan sát) - “Learn by example”
– Xây dựng mô hình f’ sử dụng tập các quan sát đã được gắn nhãn
(X (1) , Y (1) ), …, (X (n) , Y (n) ) – Y có kiểu dữ liệu liên tục
– Lấy hàm ước lượng “tốt nhất” trong tập các hàm
• Ví dụ: Hồi quy tuyến tính
– Chọn 1 ước lượng tốt nhất từ dữ liệu học trong tập các hàm tuyến tính f(X) = β0 + β 1X1 + … + β dXd
Hàm tổn thất
Sai số bình phương (Squared error) ∑ (θi − θi’) 𝑖 2
Sai số tuyệt đối (Absolute error) ∑ | 𝑖 θi − θi’|
Bài báo cáo thực tập
Bài toán Hồi quy
Đo hiệu năng bài toán hồi quy
Hàm tổn thất (Loss function): loại hàm dùng để đo lường sai số của mô hình
• Vd: Sai số bình phương trung bình (Mean squared error - MSE)
– Độ đo thông dụng dùng để tính độ chính xác bài toán hồi quy
𝑛 ∑ 𝑛 𝑖=1 (𝑦̂ (𝑖) − 𝑦 (𝑖) ) 2 – Tập trung đo các sai số lớn hơn là các sai số nhỏ
Nội dung
Hồi quy tuyến tính
Tại sao dùng hồi quy tuyến tính?
– Mối quan hệ tuyến tính: là sự biến đổi tuân theo quy luật hàm bậc nhất
– Tìm một mô hình (phương trình) để mô tả một mối liên quan giữa X và Y
– Ta có thể biến đổi các biến đầu vào để tạo ra mối quan hệ tuyến tính
– Diễn giải các mối quan hệ giữa biến đầu vào và đầu ra - sử dụng cho bài toán suy diễn
Hồi quy tuyến tính đơn giản
Bài báo cáo thực tập
• Biến đầu ra Y và biến đầu vào X có mối quan hệ tuyến tính giữa X và Y như sau:
• Các tham số của mô hình: β0 intercept: hệ số chặn (khi các xi = 0) β1 slope: độ dốc y-axis
Cho hai điểm (x 1 , y 1 ) và (x 2 , y 2 ) x-axis
Làm sao để "phát triển" một phương trình nối 2 điểm này?
Bài báo cáo thực tập
0 • Tìm gradient (slope): độ dốc
• Tìm hệ số chặn (intercept) (hệ số khởi đầu của y khi x=0) y = f(x) = β 1 X + β 0
Bài báo cáo thực tập
Hình 2.1 Mô phỏng hồi quy tuyến tính đơn giản
• β 0 và β 1 chưa biết Ta ước tính giá trị của chúng từ dữ liệu đầu vào
• Lấy 𝛽̂0, 𝛽̂1 sao cho mô hình đạt “xấp xỉ tốt nhất” (“good fit”) đối với tập huấn luyện
• Mối liên quan giữa X và Y là tuyến tính (linear) về tham số
• X không có sai số ngẫu nhiên
• Giá trị của Y độc lập với nhau (vd, Y 1 không liên quan với Y 2)
• Sai số ngẫu nhiên (ε): phân bố chuẩn, trung bình 0, phương sai bất biến ε ~ N(0, s2) Đường thẳng phù hợp nhất
Cho tập dữ liệu đầu vào, ta cần tìm cách tính toán các tham số của phương trình đường thẳng Đường thẳng phù hợp nhất là đường giảm thiểu độ dao động của các lỗi này
Bài báo cáo thực tập
Hình 2.2 Đường thẳng phù hợp nhất
• Thông thường, để đánh giá độ phù hợp của mô hình từ dữ liệu quan sát ta sử dụng phương pháp bình phương nhỏ nhất (least squares)
• Lỗi bình phương trung bình (Mean squared error): Đường thẳng phù hợp nhất
Rất hiếm để có 1 đường thẳng khớp chính xác với dữ liệu, do vậy luôn tồn tại lỗi gắn liền với đường thẳng Đường thẳng phù hợp nhất là đường giảm thiểu độ dao động của các lỗi này
Bài báo cáo thực tập
Biểu thức (yi - yˆ ) được gọi là lỗi hoặc phần dư ei = (yi- 𝑦̂) Đường thẳng phù hợp nhất tìm thấy khi tổng bình phương lỗi là nhỏ nhất
SSE = ∑ 𝑛 𝑖=1 (𝑦𝑖 − 𝑦̂) 2 Ước lượng tham số
• Các ước số 𝛽̂0, 𝛽̂1 tính được bằng cách cực tiểu hóa MSE
• Hệ số chặn của đường thẳng 𝛽̂1 = SSxy
SSx Trong đó: SSxy = ∑ 𝑛 𝑖=1 (𝑥𝑖 − 𝑥̅)(𝑦𝑖 − 𝑦̅) và SSx = ∑ 𝑛 𝑖=1 (𝑥𝑖 − 𝑥̅) 2
Bài báo cáo thực tập
• Hệ số chặn của đường thẳng 𝛽̂0 = 𝑦̅ - 𝛽̂1𝑥̅
Support Vector Machine – Regression (SVR)
Support Vector Machine cũng có thể được sử dụng như một phương pháp hồi quy, duy trì tất cả các tính năng chính đặc trưng cho thuật toán Support Vector
Regression (SVR) sử dụng các nguyên tắc tương tự như SVM để phân loại, chỉ có một số khác biệt nhỏ
Trước hết, bởi vì đầu ra là một số thực nên rất khó dự đoán thông tin có trong tay Trong trường hợp hồi quy, biên độ dung sai (epsilon) được đặt gần đúng với SVM đã được yêu cầu từ bài toán Nhưng bên cạnh thực tế này, cũng có một lý do phức tạp hơn, thuật toán phức tạp hơn do đó cần được xem xét
Tuy nhiên, ý tưởng chính luôn giống nhau: để giảm thiểu lỗi, cá nhân hóa siêu mặt phẳng (hyperlane) để tối đa hóa sự chính xác, lưu ý rằng một phần lỗi được chấp nhận
Bài báo cáo thực tập
Các hàm nhân biến đổi dữ liệu thành không gian đặc trưng có chiều cao hơn để có thể thực hiện phân tách tuyến tính
Bài báo cáo thực tập
- Một vài loại kernel-SVR thường được sử dụng:
+ Radial Basis Function kernel-SVR
Bài báo cáo thực tập
Linear kernel-SVR là kernel mặc định của SVR, chỉ sử dụng cho tập dữ liệu có phân phối tuyến tính Đối với dữ liệu phi tuyến, có hai loại kernel được sử dụng nhiều đó là Polynomial kernel-SVR và Radial Basis Function Kernel-SVR
Bài báo cáo thực tập
Long Short-Term Memory (LSTM)
Giới thiệu về Recurrent Neural Network
Trước khi đi sâu vào giải thích chi tiết mạng LSTM, nhóm sẽ giới thiệu sơ qua về mạng nơ-ron hồi quy (Recurrent Neural Network -RNN) Đây là mạng nơ-ron 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
Hình 2.6 Kiến trúc của một mạng RNN cơ bản khi được duỗi ra
Bài báo cáo thực tập
Trong Hình 2.1, xét tại mỗi bước thời gian t theo chiều từ dưới lên trên, x (t) là giá trị đầu vào h (t) là trạng thái ẩn o (t) là giá trị đầu ra
U, W, V là các ma trận trọng số của mạng RNN
L là hàm tính mất mát giữa giá trị ra o (t) từ mạng RNN và giá trị đầu ra chuẩn y (t) từ tập dữ liệu Đi sâu vào kiến thức chi tiết hơn, chúng ta xem các vector x (1) , x (2) , …, x ( τ) đại diện cho các phần tử trong chuỗi dữ liệu đầu vào, tại mỗi bước thời gian t, mạng RNN nhận lần lượt từng vector x (t) và thực hiện những tính toán để ánh xạ thành chuỗi đầu ra được mô tả bởi các phương trình sau: Bài báo cáo thực tập
• x (t) : Giá trị đầu vào tại bước thời gian t
• h (t) : Trạng thái ẩn bước tại thời gian t
• (t) : Giá trị đầu ra tại bước thời gian t
• y (t) : Vector xác xuất đã chuẩn hóa qua hàm softmax tại bước thời gian t
• U, V, W: Các ma trận trong số mạng RNN tương ứng với các kết nối theo chiều lần lượt là từ dầu vào đến trạng thái ẩn, từ trạng thái ẩn đến đầu ra và từ trạng thái ẩn đến trạng thái ẩn
Bài báo cáo thực tập
Hình 2.7 Kiến trúc chi tiết của một mạng RNN tại mỗi bước thời gian
Bài báo cáo thực tập
Các vấn đề về gradient trong quá trình huấn luyện
Gradient biến mất (Vanishing Gradient Problem) và gradient bùng nổ (Exploding Grandient Problem) là những vấn đề gặp phải khi sử dụng các kỹ thuật tối ưu hóa trọng số dựa trên gradient để huấn luyện mạng nơ-ron Các vấn đề này thường gặp phải là do việc lựa chọn các hàm kích hoạt không hợp lí hoặc số lượng các lớp ẩn của mạng quá lớn Đặc biệt, các vấn đề này thường hay xuất hiện trong quá trình huấn luyện các mạng nơ-ron hồi quy
Trong thuật toán BPTT Khi chúng ta càng quay lùi về các bước thời gian trước đó thì các giá trị gradient càng giảm dần, điều này làm giảm tốc độ hội tụ của các trọng số do sự thay đổi hầu như rất nhỏ Trong một số trường hợp khác, các gradient có giá trị rất lớn khiến cho quá trình cập nhật các trọng số bị phân kỳ và vấn đề này được gọi là gradient bùng nổ Các vấn đề về gradient biến mất thường được quan tâm hơn vấn đề gradient bùng nổ do vấn đề gradient biến mất khó có thể được nhận biết trong khi gradient bùng nổ có thể dễ dàng quan sát và nhận biết hơn Có nhiều nghiên cứu đề xuất các giải pháp để giải quyết những vấn đề này như lựa chọn hàm kích hoạt hợp lý, thiết lập các kích thước cho mạng hợp lý hoặc khởi tạo các trọng số ban đầu phù hợp khi huấn luyện Một trong các giải pháp cụ thể có thể chỉ ra là thuật toán Truncated BPTT, một biến thể cái tiến của BPTT được áp dụng trong quá trình huấn luyện mạng nơ-ron hồi quy trên các chuỗi dài
Ngoài ra, cơ chế của mạng LSTM được đề xuất đã khắc phục được các vấn đề này sẽ được giới thiệu trong phần tiếp theo
Bài báo cáo thực tập
Cơ chế hoạt động của mạng LSTM
LSTM là một phiên bản mở rộng của mạng RNN, được đề xuất vào năm 1997 bởi Sepp Hochreiter và Jurgen Schmidhuber LSTM được thiết kế để giải quyết các bài toán về phụ thuộc xa (long-term dependencies) trong mạng RNN do bị ảnh hưởng bởi vấn đề gradient biến mất
Có thể hiểu một cách đơn giản là mạng RNN cơ bản trong thực tế không có khả năng ghi nhớ thông tin từ các bước có khoảng cách xa và do đó những phần tử đầu tiên trong chuỗi đầu vào không có nhiều ảnh hưởng đến các kết quả tính toán dự đoán phần tử cho chuỗi đầu ra trong các bước sau
Hình 2.8 Sơ đồ biểu diễn kiến trúc bên trong của một tế bào LSTM
Bài báo cáo thực tập
Mạng LSTM có thể bao gồm nhiều tế bào LSTM (LSTM memory cell) liên kết với nhau và kiến trúc cụ thể của mỗi tế bào được biểu diễn như trong Hình 2.6 Ý tưởng của LSTM là bổ sung thêm trạng thái bên trong tế bào (cell internal state) s t và ba cổng sàng lọc các thông tin đầu vào và đầu ra cho tế bào bao gồm: forget gate ƒ t , input gate i t và output gate o t
Tại mỗi bước thời gian t, các cổng đều lần lượt nhận giá trị đầu vào x t (đại diện cho một phần tử trong chuỗi đầu vào) và giá trị h t-1 có được từ đầu ra của memory cell từ bước thời gian trước đó t - 1 Các cổng đều đóng vai trò có nhiệm vụ sàng lọc thông tin với mỗi mục đích khác nhau:
• Forget gate: Có nhiệm vụ loại bỏ những thông tin không cần thiết nhận được khỏi cell internal state
• Input gate: Có nhiệm vụ chọn lọc những thông tin cần thiết nào được thêm vào cell internal state
• Output gate: Có nhiệm vụ xác định những thông tin nào từ cell internal state được sử dụng như đầu ra
Trước khi trình bày các phương trình mô tả cơ chế hoạt động bên trong của một tế bào LSTM, chúng ta sẽ thống nhất quy ước một số ký hiệu được sử dụng sau đây:
• x t là vector đầu vào tại mỗi bước thời gian t
• W f,x , W f.h , W𝒔̃, 𝒙, W𝒔̃, 𝒉, W i,x , W i,h , W o,x , W o,h là các ma trận trọng số trong mỗi tế bào LSTM
Bài báo cáo thực tập
• ƒ t, i t , o t lần lượt chứa các giá trị kích hoạt lần lượt cho các cổng forget gate, input gate và output gate tương ứng
• s t , 𝒔̃ lần lượt là các vector đại diện cho cell internal state và candidate value
• h t là giá trị đầu ra của tế bào LSTM
Trong quá trình lan truyền xuôi (forward pass), cell internal state s t và giá trị đầu ra h t được tính như sau: Ở bước đầu tiên, tế bào LSTM quyết định những thông tin nào cần được loại bỏ từ cell internal state ở bước thời gian trước đó S t-1 Activation value ƒ t của forget gate tại bước thời gian tđược tính dựa trên giá trị đầu vào hiện tại x t giá trị đầu ra h t-1 từ tế bào LSTM ở bước trước đó và bias b f của forget gate Hàm sigmoid function biến đổi tất cả activation value về miền có giá trị trong khoảng từ 0 (hoàn toàn quên) và
1 (hoàn toàn ghi nhớ): Ở bước thứ hai, tế bào LSTM quyết định những thông tin nào cần được thêm vào cell internal state s t Bước này bao gồm hai quá trình tính toán đối với 𝒔̃ và ƒ t
Candidate value 𝐬̃ t biểu diễn những thông tin tiềm năng cần được thêm vào cell internal state được tính như sau:
Bài báo cáo thực tập
Activation value i t của input gate theo đó cũng được tính như sau: Ở bước thứ ba, giá lới của cell internal state s t được tính dựa trên kết quả tính toán thu được từ các bước trước với phép nhân Hadamard theo từng phần tử (Hadamard product) được ký hiệu bằng o: Ở bước cuối cùng, giá trị đầu ra h t của tế bào LSTM được tính toán dựa theo hai phương trình sau:
Bài báo cáo thực tập
Phân tích tập dữ liệu
Tập dữ liệu gồm 8 cột tương đương 8 thuộc tính:
Tập dữ liệu gồm gần 20.000 dòng, mỗi dòng là một bản ghi về giá của 1 trong 4 loại cổ phiếu:
- Dòng (2 – 8365): là bản ghi về giá của Apple
- Dòng (8366 – 10223): là bản ghi về giá của Tesla
- Dòng (10224 – 18206): là bản ghi về giá của Microsoft
- Dòng (18207 – 19578): là bản ghi về giá của Facebook b Phân tích ý nghĩa các thuộc tính của tập dữ liệu
- High: mức giá cao nhất trong phiên giao dịch
- Low: mức giá thấp nhất trong phiên giao dịch
Bài báo cáo thực tập
- Volume: khối lượng giao dịch trong phiên
Các thuộc tính của tập dữ liệu cần thiết cho bài toán: Date (biến độc lập), Close Price (biến phụ thuộc), Stock c Trực quan hóa dữ liệu
Hình 3.1 Giá cổ phiếu Apple theo thời gian
Bài báo cáo thực tập
Hình 3.2 Giá cổ phiếu Tesla theo thời gian
• Microsoft Bài báo cáo thực tập
Hình 3.3 Giá cổ phiếu Microsoft theo thời gian
Hình 3.4 Giá cổ phiếu Facebook theo thời gian
▪ Trục hoành là ngày tháng (Date) đã được chuẩn hóa
▪ Trục tung là giá đóng cửa (Close Price) của cổ phiếu
- Hình dạng của mỗi biểu đồ là các đường lên xuống khó đoán, không theo dạng tuyến tính, trông giống như các biểu đồ trên các sàn giao dịch chứng khoán mà ta thường thấy
Bài báo cáo thực tập
Các bước tiến hành
B1 Lựa chọn thuật toán Ở bài toán này, nhóm đã tham khảo kĩ và chọn ra ba thuật toán phù hợp nhất với yêu cầu của bài toán Trong đó gồm:
- Linear Regression (LNR): Thuật toán cơ bản, mục đích thực hiện chỉ mang tính tham khảo.
- Support Vector Regression (SVR): Tương đối phù hợp, mục đích thực hiện chỉ mang tính tham khảo.
- Long Short Term Memory (LSTM): Thuật toán được chọn để giải quyết bài toán.
B2 Xử lý tập dữ liệu
Vì tập dữ liệu chứa lịch sử các bản ghi của cả 4 loại cổ phiếu, nên sẽ có những điểm dữ liệu có cùng giá trị Date nhưng lại khác loại cổ phiếu và giá đóng cửa
Tóm lại, phải chia tập dữ liệu ra thành bốn tập con tương ứng với 4 loại cổ phiếu và theo đó, mỗi thuật toán sẽ cần tạo 4 model khác nhau cho mỗi tập dữ liệu con Điều này cũng hoàn toàn phù hợp với thực tế, vì giá của mỗi loại cổ phiếu là khác nhau, sự biến động của giá cả theo các sự kiện kinh tế - xã hội, tình hình chính trị,… của chúng cũng khác nhau, không lý nào mà một model có thể dự đoán chính xác cho cả 4 loại cổ phiếu được
▪ Với LNR và SVR, biến độc lập của model là ngày tháng (Date), biến phụ thuộc là giá đóng cửa (Close)
▪ Với LSTM, cứ trong 101 ngày liên tục thì giá đóng cửa của 100 ngày đầu là biến độc lập, giá đóng cửa của ngày thứ 101 là biến phụ thuộc (100 là timestep mà nhóm đã chọn)
▪ Phân chia tập dữ liệu train – test theo tỉ lệ 0.8:0.2 cho mỗi tập dữ liệu con
Bài báo cáo thực tập
Kết quả thực nghiệm
Trực quan hóa dữ liệu
Hình 3.5 Trực quan hóa dữ liệu giá cổ phiếu Apple và kết quả dự đoán với LNR
Hình 3.6 Trực quan hóa dữ liệu giá cổ phiếu Tesla và kết quả dự đoán với LNR.
Bài báo cáo thực tập
Hình 3.7 Trực quan hóa dữ liệu giá cổ phiếu Microsoft và kết quả dự đoán với LNR
Hình 3.8 Trực quan hóa dữ liệu giá cổ phiếu Facebook và kết quả dự đoán với LNR
Bài báo cáo thực tập
- Đường màu xanh dương là giá dự đoán của dữ liệu từ tập Train
- Đường màu xanh lá cây là giá dự đoán của dữ liệu từ tập Test
- Các chấm màu đỏ là các điểm dữ liệu thực tế Đánh giá độ chính xác thuật toán
Sử dụng hàm đánh giá R Squared để đánh giá độ chính xác
- Độ chính xác khi chạy trên tập Train
- Độ chính xác khi chạy trên tập Test
(Độ chính xác dưới 0.5 được gọi là thấp)
Trực quan hóa dữ liệu
Bài báo cáo thực tập
Hình 3.9 Trực quan hóa dữ liệu giá cổ phiếu Apple và kết quả dự đoán với SVR
Hình 3.10 Trực quan hóa dữ liệu giá cổ phiếu Tesla và kết quả dự đoán với SVR
Bài báo cáo thực tập
Hình 3.11 Trực quan hóa dữ liệu giá cổ phiếu Microsoft và kết quả dự đoán với SVR
Hình 3.12 Trực quan hóa dữ liệu giá cổ phiếu Facebook và kết quả dự đoán với SVR
Bài báo cáo thực tập
- Đường màu xanh dương là giá dự đoán của dữ liệu từ tập Train
- Đường màu xanh lá cây là giá dự đoán của dữ liệu từ tập Test
- Các chấm màu đỏ là các điểm dữ liệu thực tế Đánh giá độ chính xác thuật toán
Sử dụng hàm đánh giá R Squared để đánh giá độ chính xác
- Độ chính xác khi chạy trên tập Train
- Độ chính xác khi chạy trên tập Test
(Độ chính xác dưới 0.5 được gọi là thấp)
Bài báo cáo thực tập
Trực quan hóa dữ liệu
Hình 3.13 Trực quan hóa dữ liệu giá cổ phiếu Apple và kết quả dự đoán với LSTM.
Hình 3.14 Trực quan hóa dữ liệu giá cổ phiếu Tesla và kết quả dự đoán với LSTM
Bài báo cáo thực tập
Hình 3.15 Trực quan hóa dữ liệu giá cổ phiếu Microsoft và kết quả dự đoán với LSTM
Hình 3.16 Trực quan hóa dữ liệu giá cổ phiếu Facebook và kết quả dự đoán với LSTM
Bài báo cáo thực tập
- Đường màu xanh dương là giá dự đoán của dữ liệu từ tập Train
- Đường màu xanh lá cây là giá dự đoán của dữ liệu từ tập Test
- Các chấm màu đỏ là các điểm dữ liệu thực tế Đánh giá độ chính xác thuật toán Đánh giá độ chính xác với hàm đánh giá R Squared
- Độ chính xác khi chạy trên tập Test
(Độ chính xác dưới 0.5 được gọi là thấp) Đánh giá độ chính xác với hàm lỗi Root Mean Squared Error (RMSE)
- Sai lệch trung bình khi chạy trên tập Test
Bài báo cáo thực tập