Phân tích chuỗi thời gian xác thực chéo


37

Tôi đã sử dụng gói caret trong R để xây dựng các mô hình dự đoán để phân loại và hồi quy. Caret cung cấp một giao diện hợp nhất để điều chỉnh các tham số siêu mô hình bằng cách xác thực chéo hoặc đóng đai khởi động. Ví dụ: nếu bạn đang xây dựng mô hình 'hàng xóm gần nhất' đơn giản để phân loại, bạn nên sử dụng bao nhiêu hàng xóm? 2? 10? 100? Caret giúp bạn trả lời câu hỏi này bằng cách lấy mẫu lại dữ liệu của bạn, thử các tham số khác nhau và sau đó tổng hợp các kết quả để quyết định kết quả nào có độ chính xác dự đoán tốt nhất.

Tôi thích cách tiếp cận này vì nó cung cấp một phương pháp mạnh mẽ để chọn siêu tham số mô hình và một khi bạn đã chọn siêu tham số cuối cùng, nó cung cấp ước tính xác thực chéo về mức độ "tốt" của mô hình, sử dụng độ chính xác cho các mô hình phân loại và RMSE cho các mô hình hồi quy.

Bây giờ tôi có một số dữ liệu chuỗi thời gian mà tôi muốn xây dựng mô hình hồi quy cho, có thể sử dụng một rừng ngẫu nhiên. Một kỹ thuật tốt để đánh giá độ chính xác dự đoán của mô hình của tôi, dựa trên bản chất của dữ liệu là gì? Nếu các khu rừng ngẫu nhiên không thực sự áp dụng cho dữ liệu chuỗi thời gian, thì cách tốt nhất để xây dựng một mô hình tập hợp chính xác để phân tích chuỗi thời gian là gì?


Tôi thấy câu hỏi thực sự thú vị. Có cách nào tôi có thể đánh dấu một câu hỏi để làm theo nó không?
mariana mềm hơn

1
@mariana nhẹ nhàng hơn Nhấp vào biểu tượng 'Sao' dưới mũi tên lên / xuống.
Zach

4
Caret hiện hỗ trợ xác thực chéo chuỗi thời gian - r-bloggers.com/time-series-cross-validation-5
Captain_ahab

1
@Zach Đây là một bài viết cũ nhưng tôi tự hỏi nếu bạn có bất kỳ suy nghĩ mới? Bạn có biết về bất kỳ công việc gần đây về xác nhận mô hình tuần tự?
horaceT

Câu trả lời:


10

Kỹ thuật xác thực chéo k-lần "cổ điển" dựa trên thực tế là mỗi mẫu trong bộ dữ liệu có sẵn được sử dụng (k-1) - đôi khi để huấn luyện một mô hình và 1 lần để kiểm tra nó. Vì việc xác thực các mô hình chuỗi thời gian trên dữ liệu "tương lai" là rất quan trọng, phương pháp này sẽ không đóng góp cho sự ổn định của mô hình.

Một thuộc tính quan trọng của chuỗi thời gian nhiều (nhất?) Là mối tương quan giữa các giá trị liền kề. Như IrishStat đã chỉ ra, nếu bạn sử dụng các bài đọc trước đây làm biến độc lập của ứng cử viên mô hình của mình, thì mối tương quan này (hoặc thiếu tính độc lập) đóng một vai trò quan trọng và là một lý do khác khiến việc xác thực chéo k-times không phải là ý tưởng hay.

Một cách để khắc phục vấn đề này là "chồng chéo" dữ liệu và giải mã nó. Nếu quá trình giải mã thành công, thì việc sử dụng xác nhận chéo trên chuỗi thời gian sẽ trở nên ít vấn đề hơn. Tuy nhiên, nó sẽ không giải quyết vấn đề xác nhận mô hình bằng dữ liệu trong tương lai

Làm rõ

bằng cách xác nhận mô hình trên dữ liệu trong tương lai Tôi có nghĩa là xây dựng mô hình, chờ dữ liệu mới không có sẵn trong quá trình xây dựng mô hình, thử nghiệm, tinh chỉnh vv và xác thực nó trên dữ liệu mới đó .

bằng cách ghi đè dữ liệu tôi có nghĩa là thu thập dữ liệu chuỗi thời gian với tần suất cao hơn nhiều so với thực tế cần thiết. Ví dụ: lấy mẫu giá cổ phiếu cứ sau 5 giây, khi bạn thực sự quan tâm đến việc thay đổi hàng giờ. Ở đây, khi tôi nói "lấy mẫu" tôi không có nghĩa là "nội suy", "ước tính", v.v ... Nếu dữ liệu không thể đo được ở tần số cao hơn, kỹ thuật này là vô nghĩa


Cách 'cổ điển' để xác nhận mô hình trên dữ liệu trong tương lai là gì? Bạn có ý nghĩa gì khi 'quá khổ?' Cảm ơn bạn!
Zach

Cần lưu ý rằng các thuộc tính thống kê của dữ liệu chuỗi thời gian thực (đặc biệt là dữ liệu tài chính) có thể thay đổi tùy thuộc vào tần suất lấy mẫu. Đối với nhiều chuỗi thời gian tài chính, không có mối quan hệ đơn giản giữa các độ lệch chuẩn được lấy mẫu với khoảng thời gian và với thời gian . Trong thực tế, độ lệch chuẩn có xu hướng tăng khi tần số lấy mẫu tăng. Tương quan tương tự giảm khi tần số lấy mẫu tăng (điều này thường được gọi là hiệu ứng Epps ) ppTTppT
Chris Taylor

@bgbg Tôi đang đối mặt với vấn đề rất giống nhau và vừa tìm thấy bài viết của bạn. Bạn có thể trích dẫn một số tài liệu tham khảo về dữ liệu chuỗi thời gian quá khổ và giải mã? Tôi nghĩ rằng nếu bộ nhớ trong chuỗi thời gian đủ ngắn (có thể cho thấy phù hợp với một arima), thì người ta chỉ có thể lấy các mẫu "không chồng chéo" và thực hiện xác nhận chéo thông thường. Bất kỳ suy nghĩ đánh giá cao.
horaceT

9

http://robjhyndman.com/researchtips/crossvalidation/ chứa một mẹo nhanh để xác thực chéo chuỗi thời gian. Về việc sử dụng rừng ngẫu nhiên cho dữ liệu chuỗi thời gian .... không chắc chắn mặc dù có vẻ như là một lựa chọn kỳ lạ cho rằng mô hình được trang bị bằng cách sử dụng các mẫu bootstrap. Tất nhiên, có các phương pháp chuỗi thời gian cổ điển (ví dụ ARIMA) có thể được sử dụng, cũng như các kỹ thuật ML như Mạng lưới thần kinh (ví dụ pdf ). Có lẽ một số chuyên gia về chuỗi thời gian có thể nhận xét về các kỹ thuật ML hoạt động tốt như thế nào so với các thuật toán cụ thể của chuỗi thời gian.


2
Điều này khá nhiều đánh vào móng tay trên đầu. Tôi đang cố gắng tìm ra để áp dụng các kỹ thuật Machine Learning vào phân tích chuỗi thời gian.
Zach

Tôi đã thành công khi sử dụng rừng ngẫu nhiên để dự báo trước đó. Kiểm tra: biomedcentral.com/1471-2105/15/276
Captain_ahab

6

Dưới đây là một số mã ví dụ cho các mô hình chuỗi thời gian xác thực chéo. Tôi đã mở rộng mã này trong blog của mình , kết hợp gói foreach để tăng tốc mọi thứ và cho phép một thuật ngữ xreg có thể có trong xác thực chéo.

Đây là bản sao mã từ blog của Rob Hyndman:

library(fpp) # To load the data set a10
plot(a10, ylab="$ million", xlab="Year", main="Antidiabetic drug sales")
plot(log(a10), ylab="", xlab="Year", main="Log Antidiabetic drug sales")

k <- 60 # minimum data length for fitting a model
n <- length(a10)
mae1 <- mae2 <- mae3 <- matrix(NA,n-k,12)
st <- tsp(a10)[1]+(k-2)/12

for(i in 1:(n-k))
{
  xshort <- window(a10, end=st + i/12)
  xnext <- window(a10, start=st + (i+1)/12, end=st + (i+12)/12)
  fit1 <- tslm(xshort ~ trend + season, lambda=0)
  fcast1 <- forecast(fit1, h=12)
  fit2 <- Arima(xshort, order=c(3,0,1), seasonal=list(order=c(0,1,1), period=12), 
      include.drift=TRUE, lambda=0, method="ML")
  fcast2 <- forecast(fit2, h=12)
  fit3 <- ets(xshort,model="MMM",damped=TRUE)
  fcast3 <- forecast(fit3, h=12)
  mae1[i,1:length(xnext)] <- abs(fcast1[['mean']]-xnext)
  mae2[i,1:length(xnext)] <- abs(fcast2[['mean']]-xnext)
  mae3[i,1:length(xnext)] <- abs(fcast3[['mean']]-xnext)
}

plot(1:12, colMeans(mae1,na.rm=TRUE), type="l", col=2, xlab="horizon", ylab="MAE",
     ylim=c(0.65,1.05))
lines(1:12, colMeans(mae2,na.rm=TRUE), type="l",col=3)
lines(1:12, colMeans(mae3,na.rm=TRUE), type="l",col=4)
legend("topleft",legend=c("LM","ARIMA","ETS"),col=2:4,lty=1)

Các kết quả


Chào Zach. Tôi đã triển khai một phiên bản mã hơi khác của Hyndman để phát hiện số lượng thuật ngữ phù hợp cho mô hình hồi quy theo chuỗi thời gian. Thật không may, biểu đồ lỗi CV cho thấy một số cực tiểu cục bộ khiến tôi đặt câu hỏi về cách chọn số lượng thuật ngữ chính xác. Vấn đề đầy đủ được mô tả ở đây . Bạn đã từng đối mặt với một cái gì đó tương tự trước đây?
jroberayalas

5

Nếu bạn có dữ liệu chuỗi thời gian thì bạn có thể có "mức độ tự do". Ví dụ: nếu bạn có 4 lần quan sát được thực hiện trong khoảng thời gian hàng giờ và sau đó quyết định sử dụng 241 lần quan sát trong khoảng thời gian 1 phút, bạn có 241 lần quan sát nhưng chúng không nhất thiết phải độc lập. Khi bạn gửi 241 giá trị / phép đo này cho gói phân tích, gói có thể mong đợi rằng đây là 241 giá trị độc lập khi tiến hành thực hiện phép thuật cụ thể của nó. Nếu bạn có dữ liệu chuỗi thời gian, bạn có thể phải nâng cấp phân tích của mình. Tôi không biết chương trình mà bạn đề cập đến nhưng đó là một phỏng đoán hợp lý về phần tôi (tôi có thể sai!) Rằng đó là các bài kiểm tra (bài kiểm tra F / bài kiểm tra T ... vv) có thể không áp dụng cho tập hợp vấn đề của bạn.


1

Tôi có thể giới thiệu cho bạn 2 bài viết thú vị để đọc trực tuyến 1. Học tập trực tuyến : Các SVM một lần, của Piyush Rai, Hal Daum mậte III, Suresh Venkatasubramanian 2.Streaming k-nghĩa là gần đúng, bởi Nir Ailon

Hy vọng nó làm rõ cho bạn một chút ý tưởng của bạn


Bạn có thể cung cấp liên kết đến những giấy tờ? Cảm ơn.
Zach

Zach ở đây là snowbird.djvuzone.org/2008/abstracts/180.pdf đầu tiên và cái còn lại là www1.cs.columbia.edu/~rjaiswal/ajmNIPS09.pdf . Hy vọng nó sẽ giúp
mariana nhẹ nhàng hơn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.