ĐẠ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
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
LỜI CẢM ƠN .............................................................................................................................................. 3
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: https://www.kaggle.com/altruistdelhite04/loan-
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)
1
2
– Độ đo thông dụng dùng để tính độ chính xác bài toán hồi quy
𝑛 𝑖=1
∑ (𝑦̂ (𝑖) − 𝑦(𝑖)) MSE = 𝑛
– 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)
y-axis
(x2, y2)
(x1, y1)
x-axis
độ dốc β1 slope:
Cho hai điểm (x1, y1) và (x2, y2)
0
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- 𝑦̂)
2
𝑛 SSE = ∑ (𝑦𝑖 − 𝑦̂) 𝑖=1
Đườ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
SSxy
Ướ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
SSx
• Hệ số chặn của đường thẳng 𝛽̂ 1 =
2 (𝑦𝑖 − 𝑦̅) và SSx = ∑ (𝑥𝑖 − 𝑥̅)
𝑛 𝑖=1
𝑛 𝑖=1
Trong đó: SSxy = ∑ (𝑥𝑖 − 𝑥̅)
14
∑
yi
∑
xi
• Hệ số chặn của đường thẳng 𝛽̂ 0 = 𝑦̅ - 𝛽̂ 1𝑥̅
𝑛 𝑖=1 n
𝑛 𝑖=1 n
Trong đó: 𝑦̅ = 𝑥̅ =
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
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.
- SVR không 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 ở
Hình 2.6. Kiến trúc của một mạng RNN cơ bản khi được duỗi ra.
những bước thời gian trước cho mạng.
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
Hình 2.8. Sơ đồ biểu diễn kiến trúc bên trong của một tế bào LSTM.
phần tử cho chuỗi đầu ra trong các bước sau.
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
Hình 3.1. Giá cổ phiếu Apple theo thời gian.
• Apple
29
Hình 3.2. Giá cổ phiếu Tesla theo thời gian.
• Tesla
• Microsoft
30
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.
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
- Linear Regression (LNR): Thuật toán cơ bản, mục đích thực hiện chỉ
cầu của bài toán. Trong đó gồm:
- Support Vector Regression (SVR): Tương đối phù hợp, mục đích thực
mang tính tham khảo.
- Long Short Term Memory (LSTM): Thuật toán được chọn để giải quyết
hiện chỉ mang tính tham khảo.
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
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.
3.3. Kết quả thực nghiệm 3.3.1. Linear Regression Trực quan hóa dữ liệu
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.
0.446 0.815 0.676 0.961
- Độ chính xác khi chạy trên tập Train
Apple Tesla Microsoft Facebook
-5.328 0.175 -0.044 0.398
- Độ chính xác khi chạy trên tập Test
Apple Tesla Microsoft Facebook
(Độ 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.
0.895 0.957 0.909 0.983
- Độ chính xác khi chạy trên tập Train
Apple Tesla Microsoft Facebook
- Độ chính xác khi chạy trên tập Test
0.695 -2.762 0.0233 -1.698
Apple Tesla Microsoft Facebook
(Độ chính xác dưới 0.5 được gọi là thấp)
38
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.
3.3.2. Support Vector Regression Trực quan hóa dữ liệu
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
0.994 0.985 0.993 0.965
- Độ chính xác khi chạy trên tập Test
Apple Tesla Microsoft Facebook
(Độ 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)
1.049
- Sai lệch trung bình khi chạy trên tập Test.
Apple
2.839
Tesla
0.734
2.160
Microsoft
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).
4.2. Khó khăn
• Nắm được kĩ năng lập trình bằng python cơ bả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,…
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ừ
• Những biến động này thì khó để số hóa và cho máy tính hiểu được.
đó 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 100 1 - Tìm hiểu LSTM 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
100 2 – Nguyễn - Coding, làm báo cáo các phần
Anh Phi tương ứng
43
Tài liệu tham khảo
https://www.kaggle.com/altruistdelhite04/loan-prediction-problem-dataset
https://nguyentruonglong.net/giai-thich-chi-tiet-ve-mang-long-short-term-
memory-lstm.html
https://dominhhai.github.io/vi/2017/10/what-is-lstm/
https://www.aionlinecourse.com/tutorial/machine-learning/support-vector-
regression
http://www.jaist.ac.jp/~bao/VNAlectures/Regression%20Dec%206-
TungNT-in.pdf
https://www.youtube.com/watch?v=H6du_pfuznE