多変量時系列予測のサポートベクトル回帰


22

サポートベクトル回帰を使用して時系列予測を試みた人はいますか?

サポートベクターマシンを理解し、サポートベクター回帰を部分的に理解していますが、時系列、特に多変量時系列をモデル化するためにそれらを使用する方法を理解していません。

私はいくつかの論文を読み込もうとしましたが、レベルが高すぎます。特に多変量時系列に関連して、誰もが彼らがどのように機能するかを簡単に説明できますか?

編集:少し詳しく説明するために、株価の例で説明してみましょう。

N日間の株価があるとします。次に、毎日、特徴ベクトルを作成できます。特徴ベクトルは、単純な場合、前日の価格と当日の価格になります。各特徴ベクトルの応答は、翌日の価格になります。したがって、昨日の価格と今日の価格を考えると、目的は翌日の価格を予測することです。私が理解していないのは、6か月のトレーニングデータがあるとします。最近の特徴ベクトルをどのように重視するのでしょうか。


参照している論文を投稿できますか?
ラムAhluwalia

1
現地サポートベクトル回帰マシン、ロドリゴ・フェルナンデス、との時系列予測svms.org/regression/Fern.pdf 魏ハオとSongnianゆう、金融時系列予測のためのサポートベクトル回帰、springerlink.com/index/946802600u4552m8.pdf
上手

回答:


18

サポートベクトル回帰のコンテキストでは、データが時系列であるという事実は主に方法論的な観点から関連しています。たとえば、k倍交差検証を行うことはできず、バックテストを実行する際に予防策を講じる必要があります。 / simulations。

基本的に、サポートベクトル回帰は、他の判別回帰手法とよく似た判別回帰手法です。入力ベクトルと関連する応答のセットを指定し、モデルに適合して、新しい入力ベクトルが与えられた場合の応答を予測しようとします。一方、カーネルSVRは、学習ステップの前に、多くの変換の1つをデータセットに適用します。これにより、線形回帰などとは異なり、データセットの非線形傾向を検出できます。始めるのに適したカーネルはおそらくGaussian RBFです。調整可能なハイパーパラメーターがあるので、いくつかの値を試してください。そして、何が起こっているのかを感じたら、他のカーネルを試すことができます。

時系列では、インポート手順は「特徴ベクトル」を決定します。各x iは「機能」と呼ばれ、現在または過去のデータから計算できます。各y iは、予測しようとしているもののある期間にわたる将来の変化です。在庫を例にとってみましょう。時間とともに価格があります。多分あなたの特徴は、a。)200MA-30MAスプレッドとb。)20日間のボラティリティなので、各時点で各x ty tとともに計算しますバツバツyバツtyt、(たとえば)その株の翌週のリターン。したがって、SVRは、現在のMAスプレッドと20日間のボリュームに基づいて、次の週のリターンを予測する方法を学習します。(この戦略は機能しませんので、あまり興奮しないでください;))。

読んだ論文が難しすぎる場合は、複雑になる可能性があるため、SVMを自分で実装しようとは思わないでしょう。IIRCには、R向けの「kernlab」パッケージがあり、カーネルSVM実装に多数のカーネルが含まれているため、すぐに起動して実行できます。


@ジェイソン、応答に感謝します。トレーニング中に古いデータの重要度を下げる方法、つまり、最後の10,000個の例ではなく、最後の100個の例に重要度を与える方法について混乱しています。また、PythonでSVMを使用した経験があるため、それを使用したいと考えています。
-raconteur

過去のすべてのデータを特徴ベクトルとして実際に使用することはできません。何らかの形で意味のある機能に変換する必要があります。たとえば、時系列の過去20の値を平均するか、移動平均で除算した時系列の現在の値を平均することを検討してください。これらは、データセットのインポート特性を1つの単純な数字で示す機能です。可能な限り予測的だと思う(たとえば)10個ほどの機能を考え出します。したがって、古いデータの重要性を低くするために、フィーチャを定義するときに重要度を低くします(つまり、移動平均を短くします)。
ウィリアム

@Jason、株価の例を使って説明しよう。N日間の株価があるとします。次に、毎日、特徴ベクトルを作成できます。これは、単純な場合、前日の価格と当日の価格になります。各特徴ベクトルの応答は、翌日の価格になります。したがって、昨日の価格と今日の価格を考えると、目的は翌日の価格を予測することです。私が理解していないのは、6か月のトレーニングデータがあるとします。最近の特徴ベクトルをどのように重視するのでしょうか。
-raconteur

2
ああ、あなたの言う意味がわかりました。簡単な答えは、少なくとも最新性の概念を理解するためにSVMをリエンジニアリングすることなしでは不可能です。SVMは、順序付けられたxyペアではなく、xyペアの観点から定義されるため、SVMが最小化する目的関数は、これらのペアの関数です。OTOHでは、過去1か月、過去1年、過去2年のそれぞれに複数の個別のSVMを実行できます。そして、最近のvs. 。古いデータ(例:0.7 *過去1か月+ 0.2 *過去1年+ 0.1 *過去2年)。
ウィリアム

@William .. SVM以外に、どの機械学習アルゴリズムが時系列予測(raconteurが尋ねたのと同じ問題)に最適であるかについての推奨事項はありますか?異なるドメインに適用された場合、答えは異なりますか?例:株価対サプライチェーン予測(販売している製品の需要を予測)..
ラム

1

質問に対する私の個人的な答えは「はい」です。あなたは、過去を説明するための機能の選択肢が無限にあるという賛否両論と見なすことができます。市場が行ったことを誰かに簡潔に説明する方法に対応する機能を選択してみてください。が1.4 "にある場合、他の番号に関連していない場合は何も表示されません]。SVMのターゲットに関して、最も単純なのは、価格の差と2日間連続の価格の比率です。これらは架空の取引の運命に直接対応するため、良い選択のようです。

私はジェイソンの最初の声明にひどく反対しなければなりません:あなたはraconteurによって記述されたような状況でk倍交差検証を行うことができ、それは便利です(ただし、説明します)。統計的に有効である理由は、この場合のターゲットのインスタンスには固有の関係がないためです。それらは互いに素な差または比率です。代わりに、ターゲットのスケールよりも高い解像度でデータを使用することを選択した場合、相関セットがトレーニングセットと検証セットに表示される可能性があり、それが交差検証を妥協する可能性があります(対照的に、 SVMでは、ターゲットが関心のあるインスタンスと重複するインスタンスは使用できません。

相互検証の有効性を低下させるのは、市場の行動が時間とともに変化する場合です。これに対処するには2つの方法があります。1つは、時間を機能として組み込むことです(おそらく、将来この機能の値がすべて新しいため、これは非常に便利だとは思いません)。動機付けの代替手段は、ウォークフォワード検証を使用することです(これは、スライド式の時間枠で方法論をテストし、この時間枠の直後の期間でテストすることを意味します。特に将来についての予測は非常に困難です」。特に、金融市場の行動は時間とともに変化し、一般的にはより効率的になることを示す証拠がいくつかあります。

がんばろう!


当サイトへようこそ!
kjetil bハルヴォルセン

0

SVMを使用して金融シリーズを予測するためのQuantum Financierの例があります。分類システム(ロング/ショート)から回帰システムに簡単に変換できます。


1
親愛なる神は誰もその戦略を使わないでください!それは初心者がウォール街で吸って取得する方法です:( newbsは、彼らが金を打ったと思うので、本の中で最古のトリックは、RSIなどの分析いくつかの基本的な技術を用いて統計モデルを改装されています。
ウィリアム・

1
元の投稿の@Jason「これは良いシステムだとは思わないことも明確にしたい」ただし、サポートベクターマシンを時系列に適合させる方法の良い例です。
ザック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.