On-lineの株価予測で使うSCWの論文を読む

ランニング30分  英語できず

(1) On-lineの株価予測で使うSCWの論文を読む

 [Exact Soft Confidence-Weighted Learning」https://arxiv.org/abs/1206.4612

 この論文はICML2012で有名になったもので、時系列の次期の状態をOn-Lineで予測するものです。

 時系列の今までの観測から次の変動の確率が\eta内に収まる様に重みを調整する手法となります。論文表題にある様に解はExactに見つかりますので、繰返計算せずともよくOn-Lineに適しています。また実装は簡単なのでWebで公開しているサイトが散見されますが、その導出は相当難しいので本論文をなかなか読めなかった経緯があります。今回チャレンジしてみました。

(1.1) 手法

 このモデルはOn-line学習としてPA(Passive-Aggressive)2006年→CW(Confidence-Weighted)2009年から発展しています。

 モデルは次の条件で成り立っています。

    ・時系列の予測を多変量の説明変数xと重みw内積w^T \cdot x>で与えられるとします

 ・重みにはガウス分布w \sim N(\mu,\Sigma)の変動を許容します

 ・また騰落の実績y_tで与えます

   このモデルで求めたいのは下図の様に或る幅\eta内に収まる次期の重みの十分統計量です

   求めている値はガウシアン過程回帰と同じで回帰値と分散となりますが、SCWは次期の値のみ求めています。

  ・平均\mu_{t+1}

  ・分散\Sigma_{t+1}

 

f:id:mabonki0725:20170906081747p:plain

 以下に上記のモデルを定式化します。

          w^T x_tが負の時 y_t = -1なら y_t (w^T x_t)は正

          w^T x_tが正の時 y_t = +1なら y_t (w^T x_t)は正

 騰落実績y_tと予測(w^T x_t)の積は正となるので式で上の条件は次式で定式化できます。

      P_{w \sim N(\mu,\Sigma)} (y_t  \cdot  (w^T \cdot  x_t) \ge 0) \ge \eta

     この確率の条件は次式で表現できます。

  y_t \cdot (\mu \cdot x) \ge \phi \sqrt{x_t^T  \Sigma x_t}

        ここで \phi = \Phi^{-1}(\eta)\Phiガウス累計関数です

    そこで損失関数は以下で表せます。

     \mathcal{L}^\phi (N(\mu,\Sigma);(x_t,y_t)) = \max(0,\phi \sqrt{x_t^T \Sigma x_t} - y_t \mu \cdot x_t)

    よって最適問題は条件付となり、次の平均\muと分散\Sigmaを予測する以下となります

  (\mu_{t+1},\Sigma_{t+1}) = argmin_{\mu,\Sigma} \mathcal{KL}(N(\mu,\Sigma)||N(\mu_t,\Sigma_t))

         \mbox{s.t.}\mathcal{L}^\phi (N(\mu,\Sigma);(x_t,y_t) )= 0, \phi \gt 0

       ここで\mathcal{KL}はカルバック・ダイバージェンシィで定義は以下です

   \mathcal{KL}(q(x)||p(x)) = \int q(x) \log \frac{p(x)}{q(x)} dx

 

 上記の拘束条件の緩和率Cを入れてこの損失を1次の場合と2次の2モデルを提案しています。

 SCW-I    (\mu_{t+1},\Sigma_{t+1}) = argmin_{\mu,\Sigma} \mathcal{KL}(N(\mu,\Sigma)||N(\mu_t,\Sigma_t)) + C \cdot \mathcal{L}^\phi (N(\mu,\Sigma);(x_t,y_t))

 SCW-II   (\mu_{t+1},\Sigma_{t+1}) = argmin_{\mu,\Sigma} \mathcal{KL}(N(\mu,\Sigma)||N(\mu_t,\Sigma_t)) + C \cdot \left(\mathcal{L}^\phi (N(\mu,\Sigma);(x_t,y_t)) \right) ^2

 

 この条件付最適問題はラグランジェ乗数を使って解くことができることがAppendexに記述されています。

 損失関数\mathcal{L}は次式となります

 \mathcal{L}=\mathcal{KL}(N(\mu,\Sigma)||N(\mu_t,\Sigma_t)) + C\xi + \tau \left(\phi \sqrt{x_t^T \Sigma x_t} - y_t \mu_t \cdot x_t - \xi \right) - \lambda \xi

 第1項目の\mathcal{KL}(N(\mu,\Sigma)||N(\mu_t,\Sigma_t)) の部分は解くと以下になります。

 =\frac{1}{2} \log \left(\frac{det \Sigma_t}{det \Sigma} \right) + \frac{1}{2} Tr(\Sigma_t^{-1} \cdot \Sigma) + \frac{1}{2} (\mu_t - \mu)^T \Sigma_t^{-1} (\mu_t - \mu) - \frac{d}{2}

 この部分は下記のサイトに丁寧に記述されています。

  正規分布間のKLダイバージェンスの導出 - 唯物是真 @Scaled_Wurm

 損失関数\mathcal{L}\frac{\partial \mathcal{L}}{\mu}=0\frac{\partial \mathcal{L}}{\Sigma}=0で方程式をとくと \mu\Sigmaが算出できます。

    \frac{\partial \mathcal{L}}{\mu}= \Sigma_t^{-1}(\mu - mu_t) + \tau(-y_t x_t) = 0

    \frac{\partial \mathcal{L}}{\Sigma}= - \Sigma + \Sigma_t^{-1} + r\phi \frac{x_t x_t^T}{\sqrt{x_t ^T \Sigma x_t}} = 0

    この偏微分では以下のPRMLの付録の公式を使っています

  \frac{\partial}{\partial A} Tr(AB) = B^T      

        \frac{\partial}{\partial A} ln |A| = \left(A^{-1} \right)^T

   

 よって

    \mu = \mu_t + \tau \Sigma_t x_t

    \Sigma =  \Sigma_t^{-1} + r\phi \frac{x_t x_t^T}{\sqrt{x_t ^T \Sigma x_t}}

  

(1.2) 結果 

 本論文の結果はわかり難いので、次の福田先生の論文で示します。SCWはOn-lineで次期の予測ができるので福田先生はこのSCWで相当儲けたとの話でしたが、やはり一般の回帰問題で同じで変数選択を工夫する必要があるとの報告です。 

http://sigfin.org/?plugin=attach&refer=SIG-FIN-016-02&openfile=SIG-FIN-016-02.pdf

これによると、2015 年9 月1 日~から2016 年2 月29 日までの半年の日経平均株価指数の騰落の予測は上昇で83%で下落で79%で当たっています。

 f:id:mabonki0725:20170906215738p:plain

(1.3) 感想

 このモデルはICML2012で相当話題になって実装したの話をよく聞きます。しかしWebで検索すると実際にこれを適用した報告はかなり少ない様です。やはりモデルが精緻ても変数選択が良くなければ成果が出せないので、この辺はノウハウとして秘匿されているかもしれません。