Hỗ trợ hồi quy véc tơ cho dự đoán chuỗi thời gian đa biến


22

Có ai đã thử dự đoán chuỗi thời gian bằng cách sử dụng hồi quy véc tơ hỗ trợ chưa?

Tôi hiểu các máy vectơ hỗ trợ và một phần hiểu hồi quy vectơ hỗ trợ, nhưng tôi không hiểu làm thế nào chúng có thể được sử dụng để mô hình chuỗi thời gian, đặc biệt là chuỗi thời gian đa biến.

Tôi đã cố đọc một vài bài báo, nhưng chúng quá cao. Bất cứ ai cũng có thể giải thích bằng cách nói về cách họ sẽ làm việc, đặc biệt là liên quan đến chuỗi thời gian đa biến?

EDIT: Để giải thích một chút, hãy để tôi cố gắng giải thích với một ví dụ về giá cổ phiếu.

Nói rằng chúng tôi có giá cổ phiếu trong N ngày. Sau đó, mỗi ngày chúng ta có thể xây dựng một vectơ đặc trưng, ​​trong trường hợp đơn giản, có thể là giá của ngày hôm trước và giá của ngày hiện tại. Phản hồi cho mỗi vectơ tính năng sẽ là giá của ngày hôm sau. Do đó, với giá của ngày hôm qua và giá hôm nay, mục tiêu sẽ là dự đoán giá ngày tiếp theo. Điều tôi không hiểu là, giả sử chúng tôi có dữ liệu đào tạo sáu tháng, làm thế nào bạn nhấn mạnh hơn vào các vectơ tính năng gần đây?


Bạn có thể gửi các giấy tờ bạn đang đề cập đến?
Ram Ahluwalia

1
Dự đoán chuỗi thời gian với một địa phương Support Vector Machine Regression, Rodrigo Fernandez, svms.org/regression/Fern.pdf Support Vector Regression cho Financial Time Series Dự báo, Wei Hảo và Songnian Yu, springerlink.com/index/946802600u4552m8.pdf
kể chuyện

Câu trả lời:


18

Trong bối cảnh hồi quy vectơ hỗ trợ, thực tế là dữ liệu của bạn là chuỗi thời gian chủ yếu liên quan từ quan điểm phương pháp luận - ví dụ: bạn không thể thực hiện xác thực chéo k-gấp và bạn cần thận trọng khi chạy backtests / mô phỏng.

Về cơ bản, hồi quy vector hỗ trợ là một kỹ thuật hồi quy phân biệt đối xử giống như bất kỳ kỹ thuật hồi quy phân biệt đối xử nào khác. Bạn cung cấp cho nó một tập các vectơ đầu vào và các phản hồi có liên quan, và nó phù hợp với một mô hình để thử và dự đoán đáp ứng được đưa ra một vectơ đầu vào mới. Kernel SVR, mặt khác, áp dụng một trong nhiều biến đổi cho tập dữ liệu của bạn trước bước học tập. Điều này cho phép nó nhận các xu hướng phi tuyến trong tập dữ liệu, không giống như hồi quy tuyến tính. Một hạt nhân tốt để bắt đầu có lẽ sẽ là Gaussian RBF - nó sẽ có một siêu tham số mà bạn có thể điều chỉnh, vì vậy hãy thử một vài giá trị. Và sau đó khi bạn có cảm giác về những gì đang diễn ra, bạn có thể thử các hạt nhân khác.

Với chuỗi thời gian, bước nhập sẽ xác định "vectơ đặc trưng" bạn sẽ là gì; mỗi được gọi là "tính năng" và có thể được tính từ dữ liệu hiện tại hoặc quá khứ và mỗi , phản hồi, sẽ là thay đổi trong tương lai trong một khoảng thời gian của bất cứ điều gì bạn đang cố gắng dự đoán. Lấy một cổ phiếu chẳng hạn. Bạn có giá theo thời gian. Có lẽ tính năng của bạn là một.) Các 200mA-30mA lây lan và b.) Biến động 20 ngày, vì vậy bạn tính toán mỗi tại mỗi điểm trong thời gian, cùng với thì (nói) sau trở lại tuần về chứng khoán mà . Do đó, SVR của bạn học cách dự đoán lợi nhuận của tuần sau dựa trên mức chênh lệch MA hiện tại và vol 20 ngày. (Chiến lược này sẽ không hiệu quả, vì vậy đừng 'x i y i x t y txxtôiytôixtyt

Nếu các bài báo bạn đọc quá khó, có lẽ bạn không muốn tự mình thực hiện một SVM, vì nó có thể phức tạp. IIRC có gói "kernlab" dành cho R có triển khai Kernel SVM với một số hạt nhân đi kèm, do đó sẽ cung cấp một cách nhanh chóng để khởi động và chạy.


@Jason, cảm ơn đã phản hồi. Tôi bối rối không biết làm thế nào để làm cho dữ liệu cũ trở nên ít quan trọng hơn trong quá trình đào tạo, tức là làm thế nào để đưa ra quan trọng cho 100 ví dụ nói cuối cùng, thay vì 10.000 ví dụ cuối cùng. Ngoài ra, tôi có một số kinh nghiệm làm việc với các SVM trong Python, vì vậy tôi đang tìm cách sử dụng nó.
đua ngựa

Bạn thực sự không thể sử dụng tất cả các dữ liệu trong quá khứ làm vector tính năng của bạn; bạn phải biến nó bằng cách nào đó thành một tính năng có ý nghĩa. Ví dụ: xem xét tính trung bình 20 giá trị trong quá khứ của chuỗi thời gian hoặc giá trị hiện tại của chuỗi chia cho trung bình di chuyển. Đây là các tính năng chỉ ra trong một số đơn giản một đặc tính nhập khẩu của tập dữ liệu. Hãy đưa ra (10) tính năng mà bạn nghĩ sẽ mang tính dự đoán càng tốt. Vì vậy, để làm cho dữ liệu cũ ít quan trọng hơn, bạn sẽ làm cho nó ít quan trọng hơn khi xác định các tính năng của bạn (tức là sử dụng các đường trung bình di chuyển ngắn hơn).
William

@Jason, hãy để tôi thử giải thích với một ví dụ về giá cổ phiếu. Nói rằng chúng tôi có giá cổ phiếu trong N ngày. Sau đó, mỗi ngày chúng ta có thể xây dựng một vectơ đặc trưng, ​​trong trường hợp đơn giản, có thể là giá của ngày hôm trước và giá của ngày hiện tại. Phản hồi cho mỗi vectơ tính năng sẽ là giá của ngày hôm sau. Do đó, với giá của ngày hôm qua và giá hôm nay, mục tiêu sẽ là dự đoán giá ngày tiếp theo. Điều tôi không hiểu là, giả sử chúng tôi có dữ liệu đào tạo sáu tháng, làm thế nào bạn nhấn mạnh hơn vào các vectơ tính năng gần đây?
đua ngựa

2
Oh tôi hiểu ý của bạn bây giờ. Câu trả lời ngắn gọn là, bạn không thể, ít nhất là không phải không tái cấu trúc SVM để hiểu khái niệm về sự thoái trào. Một SVM được định nghĩa theo các cặp xy, không được đặt hàng các cặp xy và do đó, hàm mục tiêu mà nó thu nhỏ là một hàm của các cặp đã nói. OTOH, bạn có thể chạy một số SVM riêng biệt, một với tháng trước, một với năm trước và một trong hai năm qua - và sau đó thực hiện trung bình các câu trả lời bạn nhận được dựa trên sở thích cá nhân của bạn cho gần đây so với dữ liệu cũ (ví dụ 0,7 * tháng trước + 0,2 * năm trước + 0,1 * 2 năm qua).
William

@William .. bạn có đề xuất nào về thuật toán học máy nào là tốt nhất cho dự đoán chuỗi thời gian (cùng một vấn đề mà raconteur đã hỏi) ngoài SVM không? câu trả lời sẽ khác nhau khi áp dụng trong các lĩnh vực khác nhau? ví dụ: giá cổ phiếu và dự báo chuỗi cung ứng (dự báo nhu cầu của các sản phẩm chúng tôi đang bán) ..
Lam

1

Câu trả lời cá nhân của tôi cho câu hỏi khi được hỏi là "có". Bạn có thể xem nó như một chuyên gia hoặc một kẻ lừa đảo có vô số lựa chọn các tính năng để mô tả quá khứ. Hãy thử chọn các tính năng tương ứng với cách bạn có thể mô tả chính xác cho ai đó những gì thị trường vừa thực hiện [ví dụ: giá ở mức 1,4 "không cho bạn biết gì nếu nó không liên quan đến một số số khác]. Đối với mục tiêu của SVM, đơn giản nhất là sự khác biệt về giá và tỷ lệ giá trong hai ngày liên tiếp. Vì những điều này tương ứng trực tiếp với số phận của một giao dịch giả định, chúng có vẻ là lựa chọn tốt.

Tôi phải không đồng ý với tuyên bố đầu tiên của Jason: bạn có thể thực hiện xác nhận chéo k-gấp trong các tình huống như mô tả của raconteur và nó rất hữu ích (với một điều kiện tôi sẽ giải thích). Lý do nó có giá trị thống kê là các trường hợp của mục tiêu trong trường hợp này không có mối quan hệ nội tại: chúng là sự khác biệt hoặc tỷ lệ khác nhau. Thay vào đó, nếu bạn chọn sử dụng dữ liệu ở độ phân giải cao hơn tỷ lệ của mục tiêu, sẽ có lý do lo ngại rằng các trường hợp tương quan có thể xuất hiện trong tập huấn luyện và tập xác thực, điều này sẽ ảnh hưởng đến xác thực chéo (ngược lại, khi áp dụng SVM bạn sẽ không có sẵn phiên bản nào có mục tiêu trùng với mục tiêu bạn quan tâm).

Điều làm giảm hiệu quả của xác nhận chéo là nếu hành vi của thị trường thay đổi theo thời gian. Có hai cách có thể để đối phó với điều này. Đầu tiên là kết hợp thời gian như một tính năng (Tôi chưa thấy điều này rất hữu ích, có lẽ vì các giá trị của tính năng này trong tương lai hoàn toàn mới). Một giải pháp thay thế có động lực tốt là sử dụng xác nhận chuyển tiếp (có nghĩa là kiểm tra phương pháp luận của bạn trên cửa sổ thời gian trượt và kiểm tra nó trong khoảng thời gian ngay sau cửa sổ này. Nếu hành vi thay đổi theo thời gian, câu nói được gán cho Niels Bohr " Dự đoán là rất khó, đặc biệt là về tương lai "đặc biệt phù hợp. Có một số bằng chứng trong tài liệu cho thấy hành vi của thị trường tài chính thay đổi theo thời gian, nói chung trở nên hiệu quả hơn,

Chúc may mắn!


Hãy đến với trang web của chúng tôi!
kjetil b halvorsen

0

Có một ví dụ về Nhà tài chính lượng tử cho việc sử dụng một SVM để dự báo chuỗi tài chính. Nó có thể dễ dàng được chuyển đổi từ hệ thống phân loại (Dài / Ngắn) sang hệ thống hồi quy.


1
DEAR GOD VUI LÒNG không ai sử dụng chiến lược đó! Đó là cách người mới bắt đầu hút thuốc bởi Wall St :( Thủ thuật lâu đời nhất trong cuốn sách là trang bị thêm một mô hình thống kê bằng cách sử dụng một số phân tích kỹ thuật cơ bản như RSI để những người mới nghĩ rằng họ đã trúng vàng.
William

1
@Jason từ bài viết gốc "Tôi cũng muốn làm rõ rằng tôi không nghĩ rằng đây là một hệ thống tốt." Tuy nhiên, đây là một ví dụ điển hình về cách làm cho máy vectơ hỗ trợ phù hợp với chuỗi thời gian.
Zach
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.