Báo cáo môn Học máy thống kê - Đề tài: Stock price prediction
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo môn Học máy thống kê - Đề tài: Stock price prediction", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bao_cao_stock_price_prediction.pdf
Nội dung text: Báo cáo môn Học máy thống kê - Đề tài: Stock price prediction
- ĐẠI HỌC QUỐC GIA TP. HCM ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO Môn: Học máy thống kê Lớp : DS102.L21 ĐỀ TÀI: STOCK PRICE PREDICTION GIẢNG VIÊN HƯỚNG DẪN: TS. Nguyễn Tấn Trần Minh Khang Th.S. Võ Duy Nguyên Hồ Thái Ngọc NHÓM THỰC HIỆN: Nguyễn Lương Toàn - 18521510 Nguyễn Anh Phi - 19522005 TPHCM, Ngày 16 tháng 6 năm 2021 1
- ĐẠI HỌC QUỐC GIA TP. HCM ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO Môn: Học máy thống kê Lớp : DS102.L21 ĐỀ TÀI: STOCK PRICE PREDICTION GIẢNG VIÊN HƯỚNG DẪN: TS. Nguyễn Tấn Trần Minh Khang Th.S. Võ Duy Nguyên Hồ Thái Ngọc NHÓM THỰC HIỆN: Nguyễn Lương Toàn - 18521510 Nguyễn Anh Phi - 19522005 TPHCM, Ngày 16 tháng 6 năm 2021 2
- LỜI CẢM ƠN Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM và xin gửi lời cảm ơn sâu sắc nhất tới TS. Nguyễn Tấn Trần Minh Khang, người thầy đã trực tiếp giảng dạy, hướng dẫn và tận tình chỉ bảo chúng em trong suốt quá trình học tập. Chân thành cảm ơn ThS. Võ Duy Nguyên, anh Hồ Thái Ngọc đã hỗ trợ, giúp đỡ và đóng góp nhiều ý kiến quý báu cho chúng em trong suốt môn học cũng như thực hiện đồ án. Trong quá trình thực hiện nhóm chúng em đã vận dụng những kiến thức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới. Từ đó đã vận dụng tối đa những gì đã thu thập được để hoàn thành một báo cáo đồ án tốt nhất. Tuy nhiên, khi thực hiện chắc chắn không tránh khỏi được những sai sót. Chính vì vậy, chúng em rất mong nhận được sự góp ý của thầy cô nhằm hoàn thiện những kiến thức mà nhóm chúng em đã học tập và là hành trang để thực hiện tiếp các đề tài khác trong tương lai. Nhóm em xin chân thành cảm ơn quý Thầy Cô! TP. Hồ Chí Minh, ngày 10 tháng 6 năm 2021 3
- MỤC LỤC Tóm tắt nội dung LỜI CẢM ƠN 3 Danh mục viết tắt 5 Tổng quan 7 1.1. Giới thiệu đề tài 7 1.1.1. Giới thiệu bài toán 7 Cơ sở lý thuyết 8 2.1 Mô hình hồi quy 8 2.2 Hàm tổn thất 8 2.3 Bài toán Hồi quy 9 2.3.1 Đo hiệu năng bài toán hồi quy 9 2.4 Nội dung 9 2.4.1 Hồi quy tuyến tính 9 2.4.2 Support Vector Machine – Regression (SVR) 15 2.4.3 Long Short-Term Memory (LSTM) 19 27 Thực nghiệm 28 3.1. Phân tích tập dữ liệu 28 3.2. Các bước tiến hành 32 3.3. Kết quả thực nghiệm 33 Kết luận 42 4.1. Những kết quả đạt được 42 4.2. Khó khăn 42 4.2. Hướng phát triển 42 Bảng phân chia công việc 43 Tài liệu tham khảo 44 4
- Danh mục viết tắt MSE Mean - Square Error SSE Sum of Squared Errors LNR Linear Regression SVR Support Vector Regression RNN Recurrent Neural Network BPTT Backpropagation Through Time LSTM Long Short Term Memory 5
- Tóm tắt đồ án Trong bối cảnh cả thế giới đang điên đảo vì thị trường tài chính và chứng khoán, trí tuệ nhân tạo cũng là một lĩnh vực đang lớn mạnh lên từng ngày. Tại sao chúng ta không thử kết hợp chúng lại để tạo nên những điều kì diệu. Trong đồ án môn học này, chúng em tập trung xây dựng các mô hình dự đoán giá tương lai của thị trường chứng khoán dựa trên dữ liệu của những năm trước. Tập dữ liệu được cung cấp gồm dữ liệu lịch sử chứa các bản ghi về giá cổ phiếu của nhiều cổ phiếu khác nhau như Apple, Tesla, Microsoft, Facebook. Tập dữ liệu cũng chứa giá cổ phiếu theo ngày với giá mở cửa, đóng cửa, cao và thấp cùng với khối lượng giao dịch vào ngày đó. Tập dữ liệu được lấy từ nguồn: prediction-problem-dataset Dữ liệu đầu ra của bài toán (Close price) là các giá trị thực và gần như liên tục nên bài toán thuộc dạng hồi quy. Mục tiêu của đồ án là nghiên cứu về ý tưởng, kỹ thuật cốt lõi của các thuật toán hồi quy đã được học và áp dụng chúng để giải quyết một vấn đề thực tiễn trong đời sống. qua đó chúng em đánh giá kết quả thực nghiệm, phân tích thách thức và đề xuất hướng giải quyết trong tương lai. 6
- Chương 1 Tổng quan 1.1. Giới thiệu đề tài 1.1.1. Giới thiệu bài toán Với tập dữ liệu có các thuộc tính như sau Hình 1.1. 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ự đ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. 7
- Chương 2 Cơ sở lý thuyết 2.1 Mô hình hồi quy Xét: Y = f(X) + ε • 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 • Giải thuật họ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 2.2 Hàm tổn thất 2 Sai số bình phương (Squared error) ∑푖(θi − θi’) Sai số tuyệt đối (Absolute error) ∑푖 | θi − θi’| 8
- 2.3 Bài toán Hồi quy f’ = argmin E[L(Y, ̃( ))] (argument minimum: Cho giá trị nhỏ nhất của 1 hàm số trong miền xác định) 2.3.1 Đ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 푛 MSE = ∑ ( ̂(푖) − (푖))2 푛 푖=1 – Tập trung đo các sai số lớn hơn là các sai số nhỏ 2.4 Nội dung 2.4.1 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 9
- • 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: Y = β0 + β1X + ε • 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 (x2, y2) (x1, y1) 0 Cho hai điểm (x1, y1) và (x2, y2) x-axis Làm sao để "phát triển" một phương trình nối 2 điểm này? 10
- y-axis (x2, y2) ∆ y2 – y1 (x1, y1) slope = = ∆ x2 – x1 x-axis 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) = β1X + β0 11
- 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 Các giả định • 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, Y1 không liên quan với Y2) • 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 12
- Hình 2.2. Đường thẳng phù hợp nhất. Bình phương nhỏ 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. 13
- Phần dư (lỗi) 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 푛 2 SSE = ∑푖=1( 푖 − ̂) Ướ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 SSxy • Hệ số chặn của đường thẳng 훽̂1 = SSx 푛 푛 2 Trong đó: SSxy = ∑푖=1( 푖 − ̅) ( 푖 − ̅) và SSx = ∑푖=1( 푖 − ̅) 14
- • Hệ số chặn của đường thẳng 훽̂0 = ̅ - 훽̂1 ̅ ∑푛 yi ∑푛 xi Trong đó: ̅ = 푖=1 ̅ = 푖=1 n n 2.4.2 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. 15
- Hình 2.3. Giải thích SVR. Hình 2.4. Giải thích SVR. - SVR tuyến tính - SVR không tuyến tính 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. 16
- Hình 2.5. Giải thích SVR. Kernel function - Một vài loại kernel-SVR thường được sử dụng: + Linear kernel-SVR. + Polynomial kernel-SVR. + Sigmoid kernel-SVR. + Radial Basis Function kernel-SVR 17
- 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. 18
- 2.4.3 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. 19
- 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: 20
- Trong đó: • 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,c: Độ lệch (bias) 21
- 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. 22
- 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. 23
- 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. 24
- 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) st 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 it và output gate ot. 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 xt (đại diện cho một phần tử trong chuỗi đầu vào) và giá trị ht-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: • xt là vector đầu vào tại mỗi bước thời gian t • Wf,x, Wf.h, W풔̃, 풙, W풔̃, 풉, Wi,x, Wi,h, Wo,x, Wo,h là các ma trận trọng số trong mỗi tế bào LSTM. • bf, b풔̃, bi, bo là các vector bias. 25
- • ƒt, it, ot 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. • st, 풔̃ lần lượt là các vector đại diện cho cell internal state và candidate value. • ht 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 st và giá trị đầu ra ht đượ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 đó St-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 xt giá trị đầu ra ht-1 từ tế bào LSTM ở bước trước đó và bias bf 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 st. 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: 26
- Activation value it của input gate theo đó cũng được tính như sau: Ở bước thứ ba, giá lới của cell internal state st đượ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 ht của tế bào LSTM được tính toán dựa theo hai phương trình sau: 27
- Chương 3 Thực nghiệm 3.1. Phân tích tập dữ liệu a. Tổng quát Tập dữ liệu gồm 8 cột tương đương 8 thuộc tính: - Date - Open - High - Low - Close - Volume - OpenInt - Stock 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. - Date: ngày tháng năm. - Open: giá mở cửa. - 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. 28
- - Close: giá đóng cửa. - Volume: khối lượng giao dịch trong phiên. - Stock: loại cổ phiếu. 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 • Apple Hình 3.1. Giá cổ phiếu Apple theo thời gian. 29
- • Tesla Hình 3.2. Giá cổ phiếu Tesla theo thời gian. • Microsoft 30
- Hình 3.3. Giá cổ phiếu Microsoft theo thời gian. • Facebook Hình 3.4. Giá cổ phiếu Facebook theo thời gian. Nhận xét: - Biểu đồ gồm: ▪ 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. 31
- 3.2. 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. 32
- 3.3. Kết quả thực nghiệm 3.3.1. Linear Regression 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. 33
- 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. 34
- Lưu ý: - Đườ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 Apple 0.446 Tesla 0.815 Microsoft 0.676 Facebook 0.961 - Độ chính xác khi chạy trên tập Test Apple -5.328 Tesla 0.175 Microsoft -0.044 Facebook 0.398 (Độ chính xác dưới 0.5 được gọi là thấp) 3.3.2. Support Vector Regression Trực quan hóa dữ liệu 35
- 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. 36
- 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. 37
- Lưu ý: - Đườ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 Apple 0.895 Tesla 0.957 Microsoft 0.909 Facebook 0.983 - Độ chính xác khi chạy trên tập Test Apple 0.695 Tesla -2.762 Microsoft 0.0233 Facebook -1.698 (Độ chính xác dưới 0.5 được gọi là thấp) 38
- 3.3.2. Support Vector Regression 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. 39
- 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. 40
- Lưu ý: - Đườ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 Apple 0.994 Tesla 0.985 Microsoft 0.993 Facebook 0.965 (Độ 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. Apple 1.049 Tesla 2.839 Microsoft 0.734 Facebook 2.160 41
- Chương 4 Kết luận 4.1. Những kết quả đạt được • Tìm hiểu phương pháp hồi quy. • Có được một vài kiến thức cơ bản về chứng khoán. • Tìm hiểu về Mạng nơ-ron hồi quy (Recurrent Neural Network). • Nắm được kĩ năng lập trình bằng python cơ bản. 4.2. Khó khăn • Chứng khoán là một lĩnh vực khó và rất khó để dự đoán. • Giá của cổ phiếu biến động liên tục và liên quan đến những sự kiện kinh tế - tài chính, chính trị - xã hội, • Những biến động này thì khó để số hóa và cho máy tính hiểu được. 4.2. Hướng phát triển Phát triển lên một ứng dụng lấy giá cổ phiếu trực tiếp từ giá thị trường hiện tại, từ đó dự đoán và đưa ra gợi ý về tín hiệu mua bán cho người dùng. 42
- Bảng phân chia công việc Mức độ hoàn thành STT MSSV Công việc được giao (%) - Tìm hiểu Support Vector 18521510 Regression – Nguyễn 1 - Tìm hiểu LSTM 100 Lương - Coding, làm báo cáo các phần Toàn tương ứng 19522005 - Tìm hiểu Linear Regression 2 – Nguyễn - Coding, làm báo cáo các phần 100 Anh Phi tương ứng 43
- Tài liệu tham khảo memory-lstm.html regression TungNT-in.pdf 44