.4 Đồ thị biểu diễn giá đĩng cửa, MA10 và EMA

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu một số mô hình khai phá dữ liệu thời gian thực áp dụng vào bài toán dự báo ứng dụng trong phân tích số liệu tài chính (Trang 57 - 60)

Trong biểu đồ trên, đường nét đứt màu đen là đường biểu diễn giá trị Close, đường màu Xanh là biểu diễn giá trị của chỉ số MA10, đường màu đỏ là biểu diễn giá trị của chỉ số EMA. Ta thấy biểu đồ đường đi của các giá trị Close, MA10, MA20, EMA là tương đối ổn định.

Sau khi thu được dữ liệu ban đầu, ta sẽ tiến hành tính tốn dữ liệu đầu vào cho

mơ hình. Thư viện TSA trong R cung cấp cho ta hàm embed() để tạo các frame dữ liệu

ghi nhớ theo chiều lùi dần của dữ liệu thời gian thực. Dữ liệu được tổ chức theo cấu trúc trong bảng 3.2.

Quá trình thực hiện để thu được tập dữ liệu đầu vào cho mơ hình được tiến hành như sau: embeded.dataset<-function(data,quote='Close',hday=1,emb=10) { ds <-data.frame(embed(h.returns(data[,quote],h=hday),emb+hday)) ds <-ds[,c(1,(1+hday):(hday+emb))] names(ds)<- c(paste('r',hday,'.f',hday,sep=""),

paste('r', hday,'.t', 0:(emb-1), sep="")) ds$Date<-data[(hday+emb):(nrow(data)-hday),'Date'] ds

}

Sau khi tính tốn với bước nhảy bằng 10 ta sẽ thu được bộ dữ liệu gồm các trường sau:

> names(ibm.data)

[1] "r1.f1" "r1.t0" "r1.t1" "r1.t2" "r1.t3" "r1.t4" "r1.t5" "r1.t6" "r1.t7" "r1.t8" "r1.t9" "Date"

Trong đĩ, trường Date khơng tham gia vào quá trình tính tốn; r1.f1 là giá trị của hàm mục tiêu và được tính bằng cơng thức sau [3]:

r1.f1 = sqrt(sum((true - preds)2))/sqrt(sum((true -naive)2))

Khi đĩ, ta sẽ thu được bảng dữ liệu đầu vào của mơ hình như sau:

r1.f1 r1.f1 r1.t1 r1.t2 r1.t3 [1] 0.001431639 0.0007163324 -0.0085227273 -0.008450704 0.026011561 [2] 0.004288778 0.0014316392 0.0007163324 -0.008522727 -0.008450704 r1.t4 r1.t5 r1.t6 r1.t7 r1.t8 [1]-0.01072194 0.01450326 0.01771218 -0.01310998 0.00002000 [2] 0.02601156 -0.01072194 0.01450326 0.01771218 -0.01310998 r1.t9 Date [1] 0.000728863 1970-02-16 [2] 0.000000000 1970-02-17

Với bộ dữ liệu vừa thu được. Bây giờ chúng ta sẽ cùng nhau đi vào quá trình huấn luyện mạng.

Đầu tiên, việc phân chia dữ liệu của tập train và tập test sẽ theo tỷ lệ 7:3, tức là tập dữ liệu đem đi training sẽ chiếm 70% của tập dữ liệu ban đầu. Tập dữ liệu đem thử nghiệm mơ hình sẽ chiếm 30% của tập dữ liệu ban đầu. Cụ thể, tập training sẽ bắt đầu từ ngày 02/01/1962 đến ngày 31-12-1999. Tập test sẽ bắt đầu từ ngày 01-01-2000 đến ngày 31/12/2014.

ibm.train <- ibm.data[ibm.data$Date < '1990-01-02',] ibm.test <- ibm.data[ibm.data$Date > '2000-12-31',]

4.3 Kết quả thực nghiệm

Sau quá trình thu thập và tiền xử lý dữ liệu đã được mơ tả rất kỹ trong chương 3, chúng tơi tiến hành cài đặt thử nghiệm bộ dữ liệu trên ba mơ hình mạng nơ-ron, máy vector hỗ trợ, mơ hình arima và đã đạt được những kết quả nhất định.

4.3.1Kết quả chạy với mơ hình ANN

Như đã tìm hiểu về mạng nơ-ron trong chương 2 ta thấy, Trong mơ hình đầu tiên, chúng ta sẽ thử với mục tiêu dự đốn 1 ngày trước ngày đĩng cửa. Mạng nơ-ron là một mơ hình thường được sử dụng nhiều trong dự đốn tài chính bởi khả năng giải quyết tốt vấn đề trong bài tốn dữ liệu phi tuyến tính [3].

Một mạng nơ-ron được hình thành bởi các thành phần là các nơ-ron. Mỗi liên kết cĩ một trọng số liên kết. Việc xây dựng một mạng nơ-ron bao gồm sử dụng thuật tốn tìm kiếm trọng số kết nối giữa các nơ-ron. Một mạng nơ-ron gồm các nơ-ron được tổ chức trong các tầng. Tầng đầu tiên bao gồm các nơ-ron đầu vào của mạng. Tầng cuối cùng cho ta dự đốn về mạng thơng qua nơ-ron đầu vào. Ở giữa là các tầng nơ-ron ẩn [4].

Bây giờ chúng ta sẽ xem cách xây dựng mạng nơ-ron trong R và cách sử dụng mơ hình trong việc dự đốn như thế nào. Để đạt được kết quả này, chúng ta sẽ chia dữ liệu cài đặt trong 2 khoảng thời gian, một khoảng để xây dựng hệ thống mạng nơ-ron, một khoảng để đánh giá độ tin cậy trong việc dự đốn mơ hình với biến mục tiêu[6][7][10]. Ở đây chúng ta chỉ đơn giản là tách dữ liệu thành 2 khoảng thời gian, thứ nhất là dữ liệu trong 36 năm đầu tiên, khoảng thứ hai là dữ liệu 14 năm cịn lại như đã nĩi ở trên.

Mạng nơ-ron thường cĩ kết quả tốt hơn đối với dữ liệu đã được chuẩn hĩa. Để cĩ một mạng nơ-ron dự đốn trong tương lai, cụ thể là trước 1 ngày, chúng ta cĩ thể sử dụng thư viện nnet().

> library(nnet)

> nn <- nnet(r1.f1 ~ .,data=ibm.train[,-ncol(ibm.train)], linout=T,size=10,decay=0.01,maxit=1000)

Thư viện nnet sử dụng thuật tốn back-propagation (lan truyền ngược) làm cơ sở cho việc cập nhật các trọng số trong mạng nơ-ron. Quá trình này được lặp đi lặp lại để cập nhật các trọng số của mạng nơ-ron. Việc lặp đi lặp lại nhiều lần cĩ thể mất một thời gian dài để tính tốn với bộ dữ liệu lớn.

a. Huấn luyện mạng với bộ tham số ngẫu nhiên

Với bài tốn của mình, việc sử dụng hàm nnet() sẽ xây dựng một mạng nơ-ron với một tầng ẩn duy nhất và cĩ 10 nút ẩn (size = 10), tốc độ học là 0.01 (decay = 0.01) và số vịng lặp tối đa là 1000. Tham số linout = T chỉ ra rằng các biến mục tiêu là liên tục.

Trong bài tốn, ta huấn luyện mạng với bộ tham số đầu vào cố định size =10, decay=0.01, maxit=1000 thì ta khởi tạo ngẫu nhiên 261 trọng số của mạng và cho ta

kết quả hội tụ của mơ hình (converged). Lúc này ta thu được mạng với 10 nút đầu

vào, 10 nút ẩn và 1 nút đầu ra tương ứng với 261 trọng số.

Qua quá trình huấn luyện mạng, ta xây dựng được mơ hình cho mạng noron. Ta sẽ bắt đầu đi dự đốn mơ hình với tập dữ liệu test và kết quả thu được trong hình 4.5 thể hiện kết quả dự đốn của mơ hình là khá cao so với giá trị thực tế (true).

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu một số mô hình khai phá dữ liệu thời gian thực áp dụng vào bài toán dự báo ứng dụng trong phân tích số liệu tài chính (Trang 57 - 60)

Tải bản đầy đủ (PDF)

(73 trang)