《複雑系による予測モデル》のソースを表示
←
《複雑系による予測モデル》
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
このページは編集や他の操作ができないように保護されています。
このページのソースの閲覧やコピーができます。
'''【ふくざつけいによるよそくもでる (optimization problem)】''' 1. 複雑系と時系列予測 時系列に代表される信号の予測に関しては,これまで多くの方法論が提案され ている.以下では,やや視点を変えて,複雑系による予測をとりあげる. 複雑系の理論も多岐にわたっているが,この中でも,フラクタルとカオス をとりあげ,方法論として遺伝的プログラミング(Genetic Programming:GP)を用いる。予測の主な対象は時系列である。 フラクタル時系列の予測においては,時系列の時間軸をスケール変換 したときの統計的な性質を利用するだけではなく,コッホ曲線に ヒントを得て,時間軸方向にインパルス応答関数を伸長したものを 再利用する方法を用いている[1]。 次に,カオス理論を用いた時系列予測においては,時系列を生成する 関数方程式が決定論的に記述できることを利用する。カオス時系列の データが与えられたときに,このデータをできるだけ近似する関数 をGP手法により推定する[2]。多数の関数の候補を,GP手法における 個体として与えておき,近似度の優れた個体どうしに遺伝的操作を 加えて,より近似度の高い個体を生成する。 一般的な線形時変入出力システム <center> <math> y(t)=\int _0^{t_0} h(t,t-\tau)x(\tau) d \tau,t>t_0 \ \ \ (1)</math> </center> を考察する。ここでは入力<math>x(t)</math>と出力<math>y(t)</math>が同じであると考える。 線形時変システムのインパルス応答関数<math>h(t,\tau)</math>がスケール関数<math>\phi(t)</math>を用いて次のよ うに展開されると仮定する。 <center> <math>h(t,\tau)=\sum _{i=0}^\infty \sum _{j=0}^\infty h_{ij}\phi _{Ni}(t)\phi _{Nj}(\tau) \ \ \ (2)</math> </center> ただし, <center> <math>\phi_{Ni}(t)=\phi(2^{-N}t-i)\ \ \ (3) </math> <table> <tr> <th rowspan="2"><math>\phi(t) = \Bigg\{</math></th> <td><math>1,</math></td> <td><math>0 < t \le 1</math></td> <th rowspan="2"><math> \ \ \ (4)</math></th> </tr> <tr> <td><math>0,</math></td> <td><math>\mbox{otherwise}</math></td> </tr> </table> </center> 式(1)による<math>y(t)</math>と入力時系列<math>x(t)</math>との差の 最小2乗近似を考え,これを最小化するように インパルス応答関数の係数<math>h_{ij}</math>を決定する。 式(3)の計算では<math>N=0</math>とし, <math>j</math>の範囲を<math>j=</math>1~4に 限定し,最適化の方法としては最急降下法が用いられる[1]。 次に,時間軸の伸長による予測について述べる。 いま, <math>T_s \le t \le T_e</math>は時系列<math>x(t)</math>が観測される時間区間であり <math>T_1=T_e-T_s</math>とする。また, <math>0 < t \le T_2</math>は<math>x(t)</math> を予測する区間とする。 なお, <math>T_1,T_2</math>の選び方には任意性があるが,期間<math>T_1</math>の時系列 が,期間全体<math>T_2</math>の時系列とできるだけ相似であるように選択する必要がある。 ここで時間軸の伸長のパラメータとして<math>b=a^D,a=T_2/T_1,T_2 > T_1</math>を定義する。 計算においては, <math>a=</math>整数となるように<math>T_1,T_2</math>を選んでいる (例:<math>T_2=2 T_1</math>)。<math>x(t)</math>がフラクタル性を持つ場合には,その自己相似性により , <math>0 < t \le T_2</math>において,次の式が近似的に成立すると考えられる。 <center> <math> x(t)=b^{-1}\int_0^{bt_0} h \Big( \frac{t}{b} , \frac{t-\tau}{b} \Big) x(\tau) d \tau,t > bt_0 \ \ \ (5) </math> </center> 2. GPによる関数近似と予測 時系列を生成する方程式の体系を推定する 例として,カオス力学系が興味深い事例を与える。 カオス時系列とは,生成する関数に乱数などの不確実な要素を含まないシステム から生成される一見乱雑な時系列である。 例えば,次の方程式で記述されるロジスティック写像がある。 <center> <math>x(t+1)=3.87x(t)[1-x(t)] \ \ \ (6)</math> </center> この変数<math>x(t)</math>の初期値に,適当な値を与えて時系列を生成すると, 乱雑な時系列となる。 以下では,問題を簡単にするために,すでに方程式が既知であり ,この方程式系により発生される時系列の観測データを得られていると仮定する。 GP適用の目的は,観測された時系列データ<math>x(t)</math>から, 関数(式(6)の右辺の形)を推定することである。 関数を木構造で表現するケースを考える。木構造は1つで はなく,複数(例えば100個とか1000個)を与える。これを, GAの場合と同様に個体と呼んでいる。木構造は,最も推定 が正しい場合には式(6)になるであろう。 木構造を関数値の計算に用いて時系列を生成し,この生成された値(予測値) と実際に観測された時系列との差(2乗誤差など)が小さい個体(木構造)ほど, 近似度が高いことになる。 個体の交差処理,突然変異に関しては, 方程式を前置表現(prefix representation)することにより簡単化できる[2]。 この前置表現は,いわゆる日本語型表現に 対応するものであり,演算記号とこれに付随している演算子をペア として配置する方法である。関数 <math>[6.43 \times x(t-1)-x(t-2)] \times (x(t-3)-3.54)</math>は, 次のような前置表現になる。 <center> <math>- \times 6.43 x(t-1) x(t-2) - x(t-3) 3.54 \ \ \ (7)</math> </center> <math>StackCount</math>の値を,前置表現で表現された個 体のストリングを左側からサーチしていき演算記号に出会うとその数値を1 つ増やし,被演算子に出会うとその数値を1つ減らす操作を実施した結果であ るとして定義する。 正しい関数表現を与える前置表現に対しては, <math>StackCount</math>の最終的な 値は1になる。また,これを用いて交差を実現する場合には ,2つの個体に対する前置表現において,個体の左から始めてその途中ま で,この<math>StackCount</math>をかぞえて,その数値が同じであれば,この位置で 2つの個体を切断し交差処理をしても, 意味のある関数表現を与えていることになる。 (ステップ1) :個体の初期値生成 最初の個体の集合(プールP-A)を乱数をもとにして発生させる。 この場合,すでに述べた <math>StackCount</math>を用いて,システム記述の方程式として意味をなすものが 得られるまで繰り返す。 (ステップ2): 個体の適応度の計算 個体の表現する関数を用いて個体<math>i</math>ごとに, すでに述べた関数近似における予測値と観測値との2乗誤差の逆数 を,個体<math>i</math>の適合度<math>S_i</math>として定義する。個体を適応度の大きい順 に並びかえておく。 (ステップ3): 交差処理 適合度に比例する確率で2つの個体を取り出し,交差処理を実施す る。次に示す確率に応じて個体<math>i</math>を選択する。 <center> <math>p_i=(S_i-S_{min})/\sum _{i=1}^ N (S_i-S_{min}) \ \ \ (8)</math> </center> 交差処理では,発生させた一様乱数により, 2つの個体を切断 する場所を選択するが,この場合, <math>StackCount</math>を利用して,意味の ある切断を選択する。また,個体の長さは一般に異なるので,乱数 を1個発生させておいて,一方の個体の切断個所とし,ここまでの <math>StackCount</math>の値を計算する。こののち,もう一方の個体の <math>StackCount</math>を計算しながら, 同じ<math>StackCount</math>の値となる場所を検出し,これらから任意に1個を選択する。 このように,それぞれの個体の切断位置を決める。 この2つの個体に対して遺伝的操作を行い,生成された新しい個体を次のステップに おける代替個体のプールであるP-Bに格納しておく。このような新しい 個体の生成を,規定回数繰り返す。新規個体の生成が終了したら, プールP-Aの個体の中で,相対的に適合度の低い個体を,プールP-Bの個体 により置き換える。 (ステップ4): 突然変異 突然変異は木構造の葉の部分を,別の変数に置き換える操作と ,木構造における根の部分に相当する原始関数を, 別のものに置き換える操作であり,これを一定の確率で適用する。 (ステップ5) ステップ2からステップ4までの操作を,規定回数繰り返すか, 途中で関数の近似誤差が一定の数値より小さくなった場合には終了する。 ---- '''参考文献''' [1] 池田欽一, 時永祥三, “フラクタル時系列の予測手法を用いた 株価予測とその応用, "日本オペレーションズリサーチ学会論文誌, vol.40, no.1, pp.18-31,1999. [2] X.Chen and S.Tokinaga, “Multi-agent-based modeling of artificial stock markets by using the co-evolutionary GP approach", JORSJ, vol.47, no.3, pp.163-181, 2004. [[Category:予測|ふくざつけいによるよそくもでる]]
《複雑系による予測モデル》
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ORWikiへのお問い合わせ
OR学会HP
OR学会アーカイブ集
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報