機械学習手法を使用する場合、時系列データをトレンド除去およびリサイクルする必要がありますか?


9

例えば:

ANNやSVMを使用して、複数の時系列の以前の値に基づいて時系列の将来の値を予測したい。入力は各時系列からの遅れた値であり、出力は1ステップ先の予測になります(これまでの予測を使用して予測を前方に「ローリング」することにより、さらなる視野を持つ予測が行われます)。

さて、SVMとANNはトレンドとサイクルを学習できてはなりませんか?「他のすべてが等しい場合、このシリーズの出力は前の出力の2倍になるはずです」などのことを学習できませんか?または、月のカテゴリ変数を指定した場合、「1月なので、行った予測を2で割りますか?」

データをリサイクルおよびトレンド除去しようとすると、必要以上にバイアスがかかりますか?


1
機械学習と予測の観点から、複数の方法を試してみて、何が最もよく機能するかを確認してください。つまり、最良の予測が得られます。
B_Miner

回答:


6

機械学習アルゴリズムでは、特徴スケーリングまたは正規化を使用して、トレーニング中にアルゴリズムが迅速に収束し、ある特徴のセットが他の特徴のセットを支配するのを回避することがしばしば有益です。たとえば、株価予測の問題を考えてみましょう。AppleやMicrosoftなどの高額の株式といくつかのペニー株を含めると、AppleとMicrosoftの価格から必然的に抽出する価値の高い機能は、ペニー株から抽出したものを圧倒し、トレーニングをしなくなります。りんごごとの基礎(しゃれた意図はありません!)、そして結果の訓練されたモデルはあまり一般化しないかもしれません。

ただし、「データのリサイクルとトレンド除去を試みる」ことは、非常に良いことです。さまざまな周期的コンポーネントとトレンドコンポーネントを抽出し、それぞれの平均を差し引いて標準偏差で割ることによって正規化すると、すべての時系列のすべてのデータが同じ近似範囲に配置され、好きなデータを好きなときにトレーニングします。正規化を元に戻すことによって再スケーリングされた場合、予測目的で一般化される可能性がはるかに高くなります。

さらに、すべての時系列について、トレンドが循環コンポーネントを圧倒する場合があるため、循環のみの時系列ではほとんど確実にうまく機能しない傾向のみのデータでトレーニングを終了する可能性があり、その逆も同様です。2つのコンポーネントを分離し、それぞれを個別のSVMまたはNNでトレーニングしてから、2つの予測を再結合することで、より正確で一般化しやすいアルゴリズムになる可能性があります。


ええ、ほとんど(すべて?)の標準化と正則化の方法が定常分布を想定していることを忘れていました。コンポーネントを分離して追加モデルを構築することも良いヒントです。
ektrules 2012

1
しかし、今、私は定常的な変化に伴う情報の損失について疑問に思っています。実際の差異のない値が重要な場合はどうですか?たとえば、負債とGDPの時系列がある場合、両者の差は、MLメソッドは変更の影響のみを学習させることができ、負債がGDPの10%対200%である場合、影響は異なる場合があります。(もちろん、GDP /負債機能を追加できます)。
ektrules 2012

2

トレンドやサイクルが作用するタイムスケールと比較して、どれくらい先を予測していますか?Qi Zhang 2005-「季節性および傾向時系列のニューラルネットワーク予測」は、季節外れおよび傾向抑制(DSDT)を有益としていますが、予測タイムスケールは、傾向/季節タイムスケールに似ています。対照的に、私は短いタイムスケールの予測(例:1日)を行い、傾向/季節性がはるかに長いタイムスケールでのみ機能するデータに取り組んできました。DSDTは依然として予測精度をある程度改善しますが、MLはDSDTがなくてもそれ自体でかなりうまく対処できます。なぜなら、傾向/季節性は、最後のいくつかのデータポイントには実質的に無関係だからです。


1

ここでは間違ったツールを使用していると思います。

MLメソッドは、補間用に作成されます(時系列BとCから時系列Aを予測するなど)。外挿にはマルコフ連鎖と友人がいます。

あなたのアプローチの問題は、この条件でモデルをオーバーフィットするのが非常に簡単であり、さらに悪いことに、これを見つけるのが難しいことです(通常の交差検証は失敗するため、適切な方法でパラメーターを適合させることは非常に難しいなど)。 。)。
予測子に明示的な時間を追加することも悪い考えです。私は、時間と決定にのみ適合したモデルを、相互検証とトレーニング後のデータテストでのランダムな推測で90%の精度で適合させるのを見てきました。時間が必要な場合は、曜日や真夜中の秒数などの一連のサイクル記述子として含めることをお勧めします。トレーニングシリーズの長さを超えたり、それに近づいたりすることはありません。


間違ったツール、IDKを使用するのは正しいかもしれません。思っていたのと同じ手順でオンライン資料を見つけられませんでした。私は実際には他の複数の時系列から(同じ期間にわたって)時系列を予測しようとしていますが、将来についても予測したいと思います(値がすでに利用可能になっているときに値を予測するのはどのように良いですか?予測の時間?)ただし、ローリング予測を行うには、実際にはすべての時系列を予測する必要があります。私がやろうとしているのは、ベクトル自動回帰のようなものですが、MLアプローチを使用しています。このアプローチはうまくいきませんか?
ektrules 2012年

予測変数としての時間(循環性ではなくトレンドを予測するため)がうまく機能しないのはなぜですか?
最大

1
私が書いたように、1 / MLは外挿が得意ではなく、2 /時間は各オブジェクトを一意に識別します。これにより、深刻な過剰適合が可能になり、実際の相互作用の追跡が妨げられます。

1
@mbq(1)については、グローバルメソッドが大丈夫かもしれないが、ローカルメソッドだけが外挿にひどいと思った。しかし、時系列/ MCの方が適切である可能性があることがわかります。(2)については、私は同意しません。一意の識別子を使用すると、トレーニングスコアは高くなりますが、CVスコアはひどいものになります。したがって、不良モデルを見つけることができるはずです。問題は、将来の時間を使用するため、従来のCVでまだいくらかオーバーフィットしている可能性があることです。おそらく、最後にテストがあり、時間ごとに分割されたトレインテストがより理にかなっています。
最大

@maxはい、瞬間をランダムに分割するCVについて考えていました。連続時間ブロックを使用すると役立ちます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.