Phương pháp thực nghiệm Loại dự báo này là đưa ra kết quả dự báo cho sản phẩm mới, bằng cách cho sử dụng sản phâm thử nghiệm và cải tiên trên sự quan sát phản ứngcủa khách hàng với sản p
Mô hình Box-Jenkins - 5-5 s Street 19 2.2.7 Chỉ số AIC à Hee 20 2.3 Support Vector Machine và Module SVR +cccccsscecee 21 2.3.1 Ly thuyết cơ sở SVM [8] cssssssssssseseecssssssnnmeesseccecssnnsnnenieseeseeeeennsneen 21 2.3.2 Xây dựng bài toán tối ưu sử dụng SVM -.cccccccccee 23 2.3.3 Kernel SVM [9] 2.3.4 Module SVR ch HH ren 28 2.4 Neural Network và mô hình LSTM [12], [13], [14] [15]
Mô hình Box-Jenkins là mô hình gồm 6 bước và áp dụng cho mô hình ARIMA
- Bước 1: Kiểm tra tinh dừng bằng phương pháp ADF hoặc KPSS.
- Bước 2: Nếu là chuỗi dừng thi bỏ qua bước 2 Nếu là chuỗi dừng thì thực hiện bước biến chuỗi không dừng thành chuỗi dừng.
- Bước 3: Chọn bậc p trong mô hình AR(p) để tối ưu
- Bước 4: Chọn bậc q trong mô hình MA(q) dé tối ưu
- Bước 5: Ước lượng p, d, q sao cho mô hình ARIMA(p,d,q) sau đó chọn mô hình tối ưu.
Checking for stationarity of time series
Estimate the ARIMA model (p,d,q) and choose the optimal model
Hình 2.6 Mô hình Box-Jinkins áp dung cho mô hình ARIMA
Một trong những tiêu chí thường được sử dụng để lựa chọn mô hình đó là chỉ số AIC (Akaike Information Criteria) Tiêu chí thông tin này là một công cụ ước tính lỗi dự báo và do đó đánh giá chất lượng tương đối của các mô hình thống kê trên một tập hợp dữ liệu nhất định AIC được hình thành dựa trên lý thuyết thong tin (information theory) Khi một mô hình thống kê được sử dụng dé dự báo, kết quả sẽ gần như không bao giờ chính xác hoàn toàn Vì vậy một số thông tin sẽ bị mat do không thé dự báo từ mô hình AIC ước tính lượng thông tin tương đối bi mắt bởi một mô hình nhất định: mô hình mắt càng ít thông tin thì chất lượng của mô hình đó càng cao Giả sử rằng có một mô hình thống kê tương ứng với một bộ đữ liệu Gọi là số lượng tham số ước tính trong mô hình Đặt là giá trị tối đa của ham hop lý (maximum likelihood function) của mô hình.
Với k là số mẫu quan sát hồi quy, likelihood’ là hàm hợp ly cực đại
7 https://viblo.asia/p/so-luoc-ve-maximum-likelihood-estimation-1JeSEvrYKnL
2.3 Support Vector Machine và Module SVR
2.3.1 Lý thuyết cơ sở SVM [8]
Khoảng cách từ một điểm đến một mặt phẳng trong không gian
Trong không gian 2 chiều Oxy có khoảng cách từ một điểm (xo;yo) đến một đường thăng w;x + w,y+ = 0 được xác định bởi công thức:
Trong không gian 3 chiều Oxyz có khoảng cách từ một điểm (xXo,yo,Z0) đến một mặt phăng w,x + w„y + wz + ® = 0 được xác định bởi công thức:
Tương tự vậy trong không gian nhiều chiều T có khoảng cách từ một điểm Xo đến một siêu phăng w’ X +b =0 được xác định bởi công thức:
Bài toán phân chia hai lớp sử dụng SVM
Giả sử có hai lớp khác nhau được mô tả bởi không gian nhiều chiều, hai lớp này tồn tai ít nhất một mặt phẳng w’ XY +b = 0 (Với T là số chiều không gian) chia hai lớp
Dựa vào hình mô tả trên không gian (Hình 2.7), đối với hai class màu xanh và màu đỏ có vô sô siêu phăng phân chia hai lớp.
Hình 2.7 Mô tả hai lớp trên không gian được phân chia bởi nhiều siêu phẳng Câu hỏi đặt ra cho bài toán này là trong các mặt siêu phăng , đâu là mặt siêu phang phân chia tốt nhất.
Hình 2.8 Mặt phân chia với điểm gần nhất của mỗi class Đối với Hình 2.8, hai lớp được phân chia bởi một mặt phang wx+w,y+b=0, nhưng hai điểm gần nhất của hai lớp đến mặt phẳng phân cách không đều Việc tim ra một mặt phăng phân cách phân chia hai lớp với độ rộng bằng nhau được gọi là tìm margin lề như hình sau đây:
Với hai lớp được phân chia bởi một siêu phăng thì có vô số siêu phẳng dé phân chia hai lớp có margin bằng nhau Nhìn vào Hình 2.9 thấy đường đen có độ phân chia hai lớp với margin cao hơn đường màu xanh nét đứt Do đó đường màu đen sẽ được gọi là đường tối ưu hơn đường màu xanh vì giúp cho việc phân lớp rõ hơn.
Bài toán tối ưu trong SVM tức là tìm đường phân chia giữa hai class sau cho margin đạt giá trị lớn nhất.
2.3.2 Xây dựng bài toán tối ưu sử dụng SVM
Gia sử rằng các cặp dữ liệu training set được biểu diễn như sau:
Với x, e]R“thể hiện d dữ liệu đầu vào (Input) y, thể hiện nhãn (label) hay dữ liệu đầu ra (Output)
N là số tập dữ liệu training set
Dé dé dàng mô tả cho thuật toán phân lớp với SVM trên không gian nhiều chiều, đầu tiên xét trường hợp trên không gian hai chiều như hình minh họa (Hình 2.10)
Hình 2.10 Phân tích bài toán SVM trên không gian 2 chiều
Giả sử hình vuông màu xanh thuộc class 1 (positvie), hình tròn màu đỏ thuộc class
Với cặp dữ liệu (x,,y,) bat ki, khoảng cách từ điểm dữ liệu đó đến mặt phân cách được xác định bởi công thức y„(wfx,+b) Điều này cho thấy rằng (x„ „) luôn cùng nằm một phía nên tử số không âm
Với mặt phân chia như trên, margin được xác định từ điểm gần nhất tới mặt (bat kê điểm nao trong hai class và được xác định bởi công thức:
Bai toán tối ưu SVM chính là bài toán tìm w,b sao cho margin đạt giá trị lớn nhất
(w, b) = arg max min 220% n+) = arg max ; ———— min y, (w’ x, +b)
Nếu thay w thành kw và b thành kb, đó k là một hang số dương thì mặt phân chia không thay đổi, tức khoảng cách từ từng điểm đến mặt phân chia không đổi, tức margin không đổi Dựa trên tinh chất này, có thé gia sử: min y,(w' x, +b)=1
Hình 2.11 Các điểm gần mặt phân cách được biéu diễn khoanh tròn
Vậy có với mọi n thì y, (w'x, +b)>1
Trong python thư viện hỗ trợ SVM là gói sklearn với thư viện con là SVM
2.3.3 Kernel SVM [9] Đối với bài toán SVM không có mặt phân cách tuyến tính thì có một phương pháp khác đề phân chia class, phương pháp đó gọi là Kernel SVM. Ý tưởng cơ bản của Kernel SVM và các phương pháp kernel nói chung là tìm một phép biến đổi sao cho đữ liệu ban đầu là không phân biệt tuyến tinh được biên sang không gian mới Ở không gian mới này, đữ liệu trở nên phân biệt tuyến tính.
Xét ví dụ đưới đây với việc biến dit liệu không phân biệt tuyến tính trong không gian hai chiều thành phân biệt tuyến tính trong không gian ba chiều bang cách giới thiệu thêm một chiều mới:
Hình 2.12 Dữ liệu 2 chiều không có Linearly Separable
Dữ liệu 2 chiều ở Hình 2.12 không có tính phân chia tuyến tính được vì vậy sử dụng phương pháp Kernel SVM bằng cách thêm một chiều mới
Hình 2.13 Dữ liệu 3 chiều đã có Linearly Separable Nếu có chiều thứ 3 với dạng z = x2 + y? các điểm dữ liệu liệu sẽ được phân bố parabolic và dữ liệu trở nên tuyến tính Mặt phẳng màu vàng là mặt phân chia hai lớp.
Giao điểm của mặt phẳng tìm được va mặt parabolic là một đường ellipse, khi chiếu toàn bộ dữ liệu cũng như đường ellipse nay xuống không gian hai chiều ban dau, đã tìm được đường phân chia hai classses.
Một số dạng Kernel thông dụng
Tên Công thức kernel Thiết lập hệ số linear x! 2 ‘linear’ không có hệ số polynomial (r++~x?z)4 ‘poly’ d: degree, +: gamma, 7: coefo sigmoid tanh(7x!z + r) ‘sigmoid’ 7: gamma, 7: coefe rbf exp(~—+llx — 2||3) "rb£" + > 0: gamma
Hình 2.15 Một số Kernel thông dụng
Support Vector Regression (SVR) là một thuật toán hồi quy sử dụng SVM, để dự báo cho giá trị một biến liên tục (dữ liệu thời gian). Ý tưởng của Support Vector Regression, tìm ra một hàm số xắp xi ứng với đữ liệu số nhập đầu vào
Hinh 2.16 M6 hinh héi quy SVR Dựa vào Hình 2.16 thay hai đường mau đỏ là hai đường biên của mỗi lớp, đường biên Hyperplane là một siêu phẳng dùng đề ngăn cách hai lớp.
Gia sử siêu phẳng Hyper plane có phương trình ÿ = wx +b
Cơ sở lý thuyết Neural Network . -:-52222ccccvccvxecrserrrvee 29 2.4.2 Mang RNN va Mạng LSŠTM -5555+sccsesxsrererree 36 2.5 Mạng tăng cường và Q-Learning : +- 5+5 sxccsetrrsrrrerxeree 39 2.6 Phương pháp đánh giá mô hình - 55+ S+st‡xexvrvEetskerrrrsrerervree 44 2.6.1 Root Mean Square Error (RMSE) c5 Scscsrererererererrev 44 2.6.2 Mean Absolute Percentage Error (MAPE) -c +cc+c 44 2.7 Lý thuyết kết hợp mô hình [20], [21], [22] 2.8 Ứng dụng mô hình Hybrid ARIMA-SVR và ARIMA-LSTM
Hình 2.17 cấu tao một mang Neural Network [10]
Một mang Neural Network cú ứ dau vào mỗi ngừ vào, mụi ngừ vao x; cú trọng sô wy.
Các trọng số w;, wz, Wn thay đôi trong quá trình học của mang Neural
Weighted Sum của một lớp ân được xác định như sau: n ea i=l
Một hệ số quan quan trọng là w¿ được gọi la bias, hệ số này rất quan trọng vì nếu phương trình Weighted Sum không có hệ số tự do wo thì phương trình của sẽ trở thành ằ x,w, =0 , phương trỡnh này luụn qua gốc tọa độ nờn khụng là dạng tổng i=l quát của một phương trình đường thắng nên cộng thêm một hệ số tự do dé phương trình Weighted Sum có dạng sau đây: n
Vi ham Weighted Sum là một ham tuyến tinh, không đúng với thực tế trong quá trình dự báo vì mô hình dự báo không bao giờ ở dạng tuyến tính mà nó tăng hoặc giảm theo một hàm phi tuyến vi vậy cần có một hàm hardlim dé biến hàm tuyến tính thành hàm phi tuyến Nên có giá trị y dự báo được xác định như sau: ộ=/ệ 5M toy)
Mang Neural nhân tạo được huấn luyện theo 3 kiêu học của máy học là học có giám sát (Supervised learning), học không giám sat (Unsupervised learning) va hoc tăng cường (Reinforcement learning)
Hoc có giám sát (Supervised Learning): Mang được cung cấp sẵn các lập mẫu {(xl,yl), (x2,y2), (xn,yn)} trong đó xi là giá trị đầu vào (Input), yi là giá trị đầu ra hay còn gọi là nhãn (Output) Bài toán điển hình cho kiều học này là nhận diện khuôn mặt.
(D-Y) nh D (Desired Output) a esire lutpuư
Hinh 2.18 M6 hinh Mang Neural theo Supervised Learning Học không giám sat (Upsupervised Learning): Không có thông tin phan hồi nào từ môi trường (không có sẵn /zbe!) Mạng chỉ nhận dữ liệu đầu vào và tự tìm ra các quy tắc, đặc tính, sự tương quan có trong mau dé đưa ra dữ liệu đầu ra (Output)
Hoc tăng cường (Reinforcement Learning): Mang Neural học dé tôi ưu hóa hàm lỗi sau nhiều lần dé đạt kết quả tối ưu.
Error R (Reinf trung eintorcement signa
Một số hàm kích hoạt thông dụng
Tên hàm Công thức hàm Biểu diễn hàm a
Ham bước nhảy don vi hay f= Í x>0 có tên khác là hàm hardlim 0 x x,w, + Wạ), giá tri ? này thay đôi lai sau i=l mỗi quá trình truyền xuôi do w; va bias thay đôi.
Mục tiêu của quá trình truyền ngược là điều chỉnh weight trong mạng theo tỷ lệ với mức độ đóng góp lỗi chung trong mạng, nếu quá trình lặp đi lặp đi lặp lại và cập nhật weight giúp việc một mạng có thể dự báo được một kết quả tốt.
Ta có hàm chỉ phí (value function) để đánh giá mô hình dự báo bằng MSE.
Hình 2.21 Ham chi phí trong không gian 3 chiều
Dé tối ưu hàm chi phí (value function) thì tối ưu bằng cách tinh đạo hàm của hàm chi phí ƒ”(m,b) đặt m là trọng số của node x; thay gì viết là wi
MSE = Ys, — (Wx; +) = Ds —29,(w,x, +b)+(wx,)° + 2wx,b+b*) N N i=l i=l
- Dao hàm riêng theom: f',, MSE = rea (y, — (mx, + b)) i=l
- Dao hàm riêng theo b: f', MSE = We —2(y, — (mx, + b)) i=l
- Weight mới = weight hiện tại - m(MSE)#learning_ rate
- Để tối ưu hàm chi phí tối ưu trọng số weight và tối ưu bias
- Bias mới = bias hiện tai - Ps(MSE)*learning rate Ý trởng dữ liệu đầu vào neural network vào bài toán dự báo giá Bitcoin [11]
Từ dữ liệu file CSV lấy 31 ngày trong tháng 1 năm 2021 được thé hiển dưới bảng sau đây:
Ngày Closing Price Ngày Closing Price
Bang 2.2 Dữ liệu nhập Input Bitocin
Phát biéu bài toán lấy 10 ngày đầu tiên dé từ ngày 1/1 đến ngày 5/1 dé dự báo cho ngày 6/1 Sau đó tiễn lên một ngày dé dự báo từ ngày 2/1 đến ngày 6/1 dé dự báo cho ngày 7/1 Cứ tiếp tục đến vậy cho đến ngày 23/1, những ngày còn lại để kiêm tra độ chính xác của thuật toán
Ta sẽ được bảng dữ liệu học như sau: Đầu Đầu ra
XI Xã Xã Xã Xs vao
Bang 2.3 Dữ liệu dau vào và dau ra mau
Ta có thé mô tả bài toán với bộ tập dữ liệu học như sau:
Với K=I 06% = WX, + My X, + W3X3 + Mu XS, + M;X, Tương tự K=2 cú: ẽ; = WX) + 2X, + WX, + Wy Xy + W2,
Ye = Wei) + WioX, + WigsX3 + My, + MiysX,
Biểu diễn Y = W.X với Y = [y1, yo, ys, yis]", X = [X,,X;,X;,X,,X,Ÿ
Từ đây tim được ma trận W = YX"!
Giai đoạn 2: Pha chạy Đã có tập trọng số W
Cho tập dữ liệu từ ngày [1/1/2021 31/1/2021]
Cho tập giá trị Closing Price tương ứng với từng ngày
Xác định giá Closing Price y tức là dự báo giá Closing Price ngày 1/2/2021 Đề dự báo ngày 2/2/2021 thực hiện hai bước:
Bước 1: Lấy dữ liệu ngày 1/2/2021 cho học lại
Bước 2: Lay dữ liệu từ ngày 28/1/2021 — 1/2/2021 dé dự báo cho ngày 2/2/2021
2.4.2 Mạng RNN và Mạng LSTM
Mạng nơ-ron truyền thống không có khả năng ghi nhớ các khoảng thời gian trước đó gây ra nhược điểm của nó, với các mô hình chuỗi thời gian, việc lưu giữ bộ nhớ là rất quan trọng đối với các giá trị tại thời điểm trước đó đề tìm ra quy luật của chuỗi thời gian Từ đó, một Recurrent Neural Network (RNN) ra đời dé giải quyết van đề này Kiến trúc của một RNN đơn giản được hiền thị như sau: ®
Hình 2.22 Recurrent Neural Network có vòng lặp [16]
Kiến trúc Recurrent Neural Network được biểu đơn giản hóa như sau:
Hình 2.23 Recurrent Neural Network đơn giản hóa
RNN tự nhiên không thé học được trong thời gian dài Về mặt lý thuyết, RNN có thé giải quyết van đề phụ thuộc dai hạn bằng cách thêm các tham số, nhưng RNN không thê học các tham số này thông qua nghiên cứu [17]
May mắn thay, mạng LSTM là một loại RNN đặc biệt và giải quyết được van đề phụ thuộc dài hạn Một khối LSTM [18] được có cau trúc như sau: q) () @) ial
Hình 2.24 Một khối LSTM Block cơ bản © —> >> —=
Layer Operation Transfer Concatenate Copy
Hình 2.25 Các ký hiệu của LSTM block
Tại công này nếu giá trị đầu ra có giá trị là 1 thì giữ tat cả thông tin và nếu là 0 thì loại bỏ các thông tin.
- Input Gate : i =o(W,[h_,,x,]+5,) Đầu vào của cổng đầu vào của một t
LSTM block bao gom giá trị hiện tại va gia tri trước đó.
Tanh layer with input gate: C = tanh(W⁄ [ủ, Ă,x,]+ b„ )
- Cell State for next input: C = f*C_,+i,*C
Hình 2.28 Merge Cell Forget Gate and Input Gate
- Output Gate: 6 =o(W[h,,,x,]+,) Đầu vào của cổng ra vào của một LSTM block bao gồm giá tri hiện tại và giá tri trước đó.
Mô hình LSTM phù hợp với mô hình chuỗi thời gian vì nó khám phá mối quan hệ giữa quy luật của chuỗi thời gian Vì mô hình LSTM phù hợp với các mô hình tuần tự như mô hình chuỗi thời gian.
2.5 Mạng tăng cường và Q-Learning
Việc học tập của con người là quá trình tích lũy liên tục từ lúc học tiểu học, trung học, đại học, ở mỗi mức học con người sẽ có một phần thưởng cho sự tích lũy kiên thức của mình.
Quá trình học của con người được phân làm 3 nhân tô
- Agent: Đối tượng thực thé nghiên cứu ở đây là con người.
- Enviroment: Môi trường học tập (tiêu học, trung học, đại học).
- Reward: Phần thưởng sau mỗi lần học tập.
- Action: Hành động cho mỗi lần học tập Hành động này là quá trình học random.
Quá trình trial-and-error (thử và lỗi) và sau mỗi lần thử chi phối đến phần thưởng thì được gọi là học tăng cường Việc thử lặp lại tốn rất nhiều thời gian nhưng giúp agent có thêm kinh nghiệm.
Việc thăm dò càng lâu thì kinh nghiệm học càng nhiều Có một số chiến lược dé điều chỉnh sự cân bằng và thăm đò không gian tìm kiếm. action
Hình 2.30 Quá trình học Q-Learning Công thức Temponal Difference or TD-Update
S: State hiện tai của tac nhân
A: Action hành động được đặt
PHAN TÍCH THIET KE VÀ THỰC NGHIỆM . - 47 3.1 Pharse 1 — Học mô hình dự báo và khuyến nghị ccccccecereeeee 47
Mô hình khuyến nghị Q-Learning cho Pharse 2
Vi Q-Learning là ứng dụng của máy học và trí tuệ nhân tạo, vì vậy việc đánh giá của mô hình này sẽ không chính xác bằng cách học tính toán lại giá trị Q-Value và cập nhật vào Q-Table cho thấy mô hình này đã làm cho mô hình này đạt độ tin cậy nhất định vì vậy việc áp dụng Q-Learning vao mô hình khuyến nghị Pharse 2 là một điều tất yếu.
Pharse 2— Quy trình xây dựng hệ thống API ::z52sccc2 53 1 Thiết kế thành phan chức năng . -:-222222cz+22v2vszrrrrrrvee 33 2 Thiết kế thành phan dữ liệu -22¿¿+22222+2+t22E2Ekeerrrrrkee 57 3 _ Thiết kế thành phan xử lý -2-22c++2222x+cctztrrkkerrrrrrkee 59 3.3 Pharse 3 — Triển khai hệ thong API lên Server Clould Linux
3.2.1 Thiết kế thành phần chức năng
Hệ thống dự báo và khuyến nghị giá BTC và ETH
Xuất đồ thị khuyến nghị
Hình 3.9 Usecase tổng quan hệ thống dự báo và khuyến nghị BTC và ETH Đặc tả Usecase tổng quan
Bang 3.5 Usecase xem dự báo Tên Usecase: Xem dự báo Mã Usecase: UC01
Tiền điều kiện: Vào đúng URL Client của hệ thống ở chế độ http
Hậu điều kiện: Nếu xem thành công thì bảng dự báo và đồ thị dự báo sẽ xuất hiện trên hệ thong
Tác nhân chính: Admin, User, Linux | Mức độ quan trong: Cao
Mô ta Usecase: Usecase cho phép người dùng xem gia trị du báo va bảng dự báo những ngày tiếp theo và 49 ngày trước.
1 Tro đúng URL đến màn hình xem dự bao
Load đữ liệu dự báo và đữ liệu lịch sử từ API server
Hiền thị ra màn hình kết quả
Bảng 3.6 Usecase xem khuyến nghị Tên Usecase: Xem khuyến nghị Mã Ủsecase: UC02
Tiền điều kiện: Vào đúng URL Client của hệ thống ở chế độ http
Hậu điều kiện: Nếu xem thành công thì đồ thị khuyến nghị sẽ xuất hiện trên hệ thống
Tác nhân chính: Admin, User, Linux | Mức độ quan trọng: Cao
Mô ta Usecase: Usecase cho phép người dùng xem hành động khuyến nghị ngày tiếp theo và 49 ngày trước.
1 Trỏ đúng URL đến màn hình xem dự báo
2 Load đồ thị khuyến nghị từ API server
3 Hién thị ra màn hình kết quả
Bảng 3.7 Usecase lấy dữ liệu mới Tên Usecase: Lấy dữ liệu mới Mã Ủsecase: UC03
Tiền điều kiện: Vào đúng URL Server của hệ thông Đối với Server Linux thì server tự route đúng vào API.
Hậu điều kiện: Dữ liệu được cập nhật vào CSDL MySQL (Vào CSDL xem kết quả)
Tác nhân chính: Admin, Linux Server | Mức độ quan trọng: Cao
Mô ta Usecase: Lấy dữ liệu mỗi ngày từ trang web coindesk, sau đó lưu vào cơ sở dir liệu
1 Trỏ vào đường dẫn URL Server
2 Thêm một ngày mới vào Bang (Chức năng chỉ áp dụng với Linux
3 Lay dữ liệu coindesk Luu dt liệu vào co sở dir liệu
Bảng 3.8 Usecase xuất file CSV Tên Usecase: Xuất file CSV Mã Usecase: UC04
Tiền điều kiện: Vào đúng URL Server của hệ thông Đôi với Server Linux thì server tự route đúng vào API.
Hậu điều kiện: Lấy dữ liệu từ database 100 dòng đầu sau đó xuất ra file CSV và lưu thu mục public của server
Tác nhân chính: Admin, Linux Server | Mức độ quan trọng: Cao
Mô tả Usecase: Lay từ CSDL lưu vào file CSV
1 Trỏ vào đường dẫn URL Server
Lay dit liệu từ CSDL
Bang 3.9 Usecase Dw bao gia Tén Usecase: Du bao gia Mã Usecase: UC05
Tiền điều kiện: Vào đúng URL Server của hệ thống Đối với Server Linux thì server tự route đúng vào API.
Hậu điều kiện: Giá trị Predict được cập nhật vào CSDL
Tác nhân chính: Admin, Linux Server Mức độ quan trọng: Cao
Mô tả Usecase: Lay file CSV từ thư mục public, dùng mô hình ARIMA_LSTM học sao đó lưu lại vào CSDL.
1 Trỏ vào đường dẫn URL Server
Lay dữ liệu từ CSV thư mục public Học và dự báo bằng mô hình ARIMA_LSTM học lại
Lưu giá trị predict vào CSDL
Bang 3.10 Usecase Xuất đồ thị khuyến nghị Tên Usecase: Xuất đô thị khuyên nghị Mã Usecase: UC06
Tiền điều kiện: Vào đúng URL Server của hệ thống Đôi với Server Linux thi server tự route đúng vào API Và phải thực hiện predict trước khi khuyến nghị dé lây giá trị dự báo ngày tiếp theo
Hậu điều kiện: Đồ thị khuyến nghị được và lưu vào thư mục public
Tác nhân chính: Admin, Linux Server Mức độ quan trọng: Cao
M6 tả Usecase: Lấy file CSV mới nhất từ CSDL (sau việc dự báo), học mô hình
Q-Learning đưa ra kết quả từng ngày Xuất file png vào thư mục public
1 Trỏ vào đường dẫn URL Server
Lay dữ liệu từ CSV sau khi dự báo thư mục public Học Q-Learning sau đó xuất ra file CSV
3.2.2 Thiết kế thành phan dữ liệu
- predict_arima_Istm - predict_arima_Istm
+ getData() + getData() + getNewData() + getNewData() + getPredictPrice() + getPredictPrice() + getQLearningGraph() + getQLearningGraph()
Hinh 3.10 Class diagram hé thong
Bang 3.11 Bảng thuộc tinh Bitcoin
Thuộc tinh Kiểu dữ liệu | Giá trị mặc định Ý nghĩa
1d int ID Bitcoin một ngày closing price float null Giá cuối ngày predict_arima_Istm float null Giá dự báo bang hybrid ARIMA_ LSTM datetime_btc Datetime Default (Unique) | Ngay luu trong CSDL
Bang 3.12 Bang ham Bitcoin Class
Ham Usecase Y nghia getAllQ UC05 Lây đữ liệu mới getData() UC04 Xuất file CSV getPredictPrice() UC05 Dự báo giá getQLearningGraph() UC06 Xuất đô thị khuyên nghị
Bảng 3.13 Bảng thuộc tính Ethereum
Thuộc tính Kiểu dữ liệu | Giá trị mặc định Ý nghĩa
1d int ID Bitcoin mot ngay closing price float null Giá cuối ngày predict_arima_Istm float null Gia du bao bang hybrid ARIMA _LSTM datetime eth Datetime Default (Unique) | Ngày lưu trong CSDL
Bang 3.14 Bảng hàm Ethereum Class
Hàm Usecase Y nghia getAll() UC05 Lây đữ liệu mới getData() UC04 Xuất file CSV getPredictPrice() UC05 Dự báo giá getQLearningGraph() UC06 Xuất đô thị khuyên nghị
3.2.3 Thiết kế thành phần xử lý i)
[| | :API | :Bitcoincontroller ‘EthereumController | | /public | | :Bitcoin | :Ethereum loop T T
1 Giri Request Predict Bitcoi h ' dailyati8:00) ẽ 1
2 Route đường dẫn đến controll h '
-———————3 Lay file CSv BTC ca từ server- 1 x \ I
— 4 Tra vềgiá tri CSV thành một biển — — ~ — ~ — — '
1 Ũ Ũ i 5 Chay hàm main trong thư mục Predict_ARIMA_LSTM_ET'
1 _ — to ee 6 Trả về kết quả predict lưu vào một biến — — — — — =
\ a SS 8 Trẻ về kết qua output: — — — — — loop
Givi Request Predict Ethereum dailyAt{S:15)
| Route đường dẫn đến controller i — |
1 file (Sv BT Ccev từ server
K - 12 Trả về giá tri CSV thành một biển — — — — — — — 1 Ị 1
13 Chay hềm main trong thư mực Predict_ARIMA_LSTM_BTC- i ke - 14 Trả về kết qua predict lưu vào một bign— — — — — —
16.Lưu gi trịPredictvào CSDL- c——— .Ồ.ỘỒ 7.g ede
Lie - T —~ 16 Trọvề kết qua output — — — — — — — — — \ i
Hinh 3.11 Sequence Diagram Dw bao gia BTC va ETH
Kết quả dat được .ccc -c2c2SvcccccteC2E2222E1 rrrrrrrrrrrrrerrree 70 4.2 Huong nh ẽ 70 I.100)00).7)/004 .ốốốốốốố 72
Server ae | Gửi Request Q-Learning BT!
2 Route đường dẫn đến controler” dailyAt(8:30)
———— tọ tie CSV BTC.csv từ server
Ke - 4, Trả về giá trị CSV thành một biển — — — — — — —
5 Chay hầm main trong thư mục Predict_QLearning_BT
|} $a ———7 Xuất hình và lưu Ưng: 1
“8 Gif Request (-Learning ETH} h dailyAt{8:55) 1
Route đường dẫn đến controlle! 1 i
10 Lấy file CSV BTC.csv từ ser0er——Ì—
1 jeSeeeees 11 Trai giá tri CSV thành một biến — — — — — — — - i |
32 Chay hàm naneng ty mục Predict_QLesrning ETH !
15 Xuất hình và lưu mé hình- oe a + 1 1 1 1 1 1 1 1 1 1 1 1
Hinh 3.12 Sequence Diagram khuyén nghi BTC va ETH 3.3 Pharse 3 — Triển khai hệ thống API lên Server Clould Linux
3.3.1 Cơ chế định thời trong Laravel [22] Định nghĩa Task Scheduling trong thư mục app/Console/Kernel.php trong ham schedule Ví dụ minh họa xóa một tài khoản recent_users hàng ngày. protected function schedule(Schedule $schedute)
OB: :table('recent_users')->delete();
Vi du minh hoa vé Task Scheduling 017
Một số hàm định thời Task Scheduling được laravel dựng sẵn
Bảng 3.15 Danh sách các hàm schedule được dựng sẵn Laravel
Chay task trên cron schedule tùy chỉnh
Chay task mỗi một phút.
Chay task mỗi hai phút.
Chạy task mỗi ba phút.
Chạy task mỗi năm phút
Chạy task mỗi mười phút
Chay task mỗi mười lăm phút
Chạy task mỗi ba mươi phút
Chạy task mỗi một giờ
Chạy task mỗi giờ lúc phút thứ 17 của mỗi giờ
->everyTwoHoursQ; Chạy task mỗi hai giờ
->everyThreeHours(); Chạy task mỗi ba giờ
->everyFourHours(); Chay task mỗi bốn giờ
->everySixHours(); Chay task mỗi sáu giờ
->dallyQ; Chạy task lúc mỗi ngày nửa đêm
->dailyAt(13:00); Chạy task mỗi ngày lúc 13:00
->twiceDaily(1, 13); Chạy task mỗi ngảy lúc 1:00 vả 13:00 yl 8
->weeklyOn(1, '8:00'); Chay task mỗi tuần vào thứ hai lúc 8:00
Chay task vào lúc 0:00 đầu tháng
Chay task hang tháng vào ngày 4 lúc 15:00
->twiceMonthly(1, 16, '13:00'); Chay task hang thang vào ngày | va ngày 16 vào lúc 13:00
Chay task hang tháng vào ngày cuối tháng vào lúc 15:00
Chay task vao luc 0:00 dau nam
Chay task mọi năm vào ngày | thang 6 vào lúc 17:00
Các hàm định thời schedule dựng trong hệ thong
Vào 07:30 mỗi ngày Linux Server sẽ lay dit liệu mới từ website Coindesk lẫn các trang web liên quan
$ch = curL_init(); curL_setopt($ch, option: CURLOPT_URL, value: "http://112.78.4.49/api/getNewDataBTC") ; curL_setopt($ch, option: CURLOPT HEADER, value: 0); curl_exec($ch); curl_close($ch) ;
$ch = curl_init(); curl_setopt($ch, option: CURLOPT_URL, value: "http://112.78.4.49/api/getNewDataETH") ; curl_setopt($ch, option: CURLOPT_HEADER, value: 0); curl_exec($ch); curl_close($ch) ; })->dailyAt('07:30');
Hình 3.14 Schedule lấy dữ liệu mới Vào 07:40 mỗi ngày Linux Server sẽ xuất liệu ra file CSV dé chuẩn bị cho quá trình học máy python
//function export data to csv
$ch = curl_init(); curl_setopt($ch, option: CURLOPT_URL, value: “http://112.78.4.49/api/getAll1BTC") ; curl_setopt($ch, option: CURLOPT_HEADER, value: Q); curl_exec($ch); curt_cLose($ch) ;
$ch = curl_init(); curl_setopt($ch, option: CURLOPT_URL, value: "http://112.78.4.49/api/getA11ETH") ; curl_setopt($ch, option: CURLOPT_HEADER, value: 0); curl_exec($ch) ; curL_cLose($ch) ; }) ->dailyAt(‘07:40');
Hình 3.15 Schedule lấy dữ liệu mới nhất xuất thành CSV 3.3.2 Cơ chế CRON trong Server Linux
Thiết lập co CRON trong linux như sau dé mỗi phút Linux Server đều hoạt động nhu sau:
Trong server Linux gõ lệnh: crontab -e
Thêm file cấu hình cron dé server luôn chạy: * * * * * ed
/var/www/KLTN_MinhNhut/ProjectLaravel && php artisan schedule:run
@ Edit this file to introduce tasks to be run by cron.
Each task to run has to be defined through a single line indicating with different fields when the task will be run and what command to run for the task
To define the time you can provide concrete values for minute (m), hour (h), day of month (dom), month (mon), and day of week (dow) or use '*' in these fields (for 'any').#
Notice that tasks will be started based on the cron's system daemon's notion of time and timezones.
Output of the crontab jobs (including errors) is sent through email to the user the crontab file belongs to (unless redirected).
For example, you can run a backup of all your user accounts at 5 a.m every week with:
0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
For more information see the manual pages of crontab(5) and cron(8) h dom mon dow command
* * * cd /var/www/KLTN_MinhNhut/ProjectLaravel && php artisan schedule:run >>
Hình 3.16 File cấu hình crontab
Kiểm tra Crontab đã hoạt động hay không gõ lệnh crontab -] root@CloudServer_4d49:/var/www/KLTN_MinhNhut# crontab -L
Edit this file to introduce tasks to be run by cron.
Each task to run has to be defined through a single line indicating with different fields when the task will be run and what command to run for the task
To define the time you can provide concrete values for minute (m), hour (h), day of month (dom), month (mon), and day of week (dow) or use '*' in these fields (for 'any').#
Notice that tasks will be started based on the cron's system daemon's notion of time and timezones.
Output of the crontab jobs (including ) is sent through email to the user the crontab file belongs to (unless redirected).
For more information see the manual pages of crontab(5) and cron(8)
HRHEEEHEEHEEEREHEEREEHEEEREEHEEEHEEEE SE mh dom mon dow command
* * * * * cd /var/www/KLTN_MinhNhut/ProjectLaravel && php artisan schedule:run >>
Hinh 3.17 Danh sach cac crontab dang chay trong server Linux
Kiểm tra log Crontab: grep CRON /var/log/syslog
3.4 Pharse 4 — Xây dựng giao diện và giao tiếp API
Màn hình tong quan trang web © Manycoins Paice —
History Price TM Graph Chart Preding Closing Price 0.
As the concept of the "integrated" process presented, it is the process of taking the difference with a difference of order d, e.g I(1) = x;— x¿¡ And I(d) written by as follows:
The ARIMA process is carried out according to the Box—Jenkins method as follows:
Return the time series to the stationary series
LSTM model (Long Short Term Memory)
That was the traditional neural network's inability to remember previous periods which causes its drawback, with time series models the retention of memory was vital to the values at the previous point in time to find the pattern of the time series Since then, a recurrent neural network (RNN) was born to solve this problem The architecture of a simple RNN is shown as follows:
Recurrent Neural Networks have loops [7]
With The detail architecture of a simple RNN is shown as follows:
A recurrent neural network and the unfolding in time of the computation involved in its forward computation [8]
Natural RNNs cannot be learned over long periods of time Theoretically, RNN can solve the problem of long-term dependencies by adding parameters, but RNN cannot learn these parameters through research [9] Fortunately, the LSTM network is a special kind of RNN and solves the issue of long-term dependencies A LSTM block [10] includes indicators:
LSTM block [9] outputs: Nonlinearities: Vector operations:
Memory from Output of Hyperbolic | 4 | Elementwise previous block current block tangent Summation /