概要
ある情報(パターン)\(\ \small x \)が与えられたときに、そのデータが所属するカテゴリ\( \small y \)を変換規則\( \small y=f(x) \)を用いて推定することをパターン認識(Pattern Recognition)という。例えば、テクニカル分析ではチャート\( \small x \)が与えられたとき、何らかのアルゴリズム\(\small y=f(x) \)を使って、為替レートが上昇方向なのか、下落方向なのか、特に方向性がないのか、といったカテゴリ\(\small y \)に分類するというのがパターン認識の例であろう。当然、変換規則\( \small y=f(x) \)は不明であるため、観測されるデータ(パターン)から何らかの方法で推定する必要がある。 変換規則\( \small y=f(x) \) は識別器(Classifier)といわれる。
パターン認識の基本的な処理の流れは以下の通りである。
- データ収集・・・観測できる情報(パターン)、及び、(入手できる場合は)そのカテゴリのデータを収集する。
- 特徴選択・・・収集したデータで数値データでないものを数値化したり、クラスタ(非数値データを離散的な数値で表現したもの)に分類する。
- モデル選択・・・変換規則\( \small y=f(x) \)の関数形を決定する。
- 識別器の学習・・・収集したデータを用いて、変換規則のパラメータを推定する。
- 識別器の評価・・・推定した識別器を用いて、実際にパターン認識を行い、識別器の性能を評価する。
ここまでの説明でおそらく思うのは、回帰分析と何が違うんだよ、同じじゃねえか、ということだろう。最も大きな違いは説明変数\( \small x \)や被説明変数\( \small y \)が離散値であることだろう。そのため、これらが離散値であるということを利用した分析手法というのが通常の回帰分析とパターン認識における手法の違いとなる。
通常の回帰分析やパターン認識では特徴選択やモデル選択の部分は人間の判断によって行うが、大量のパラメータを扱う場合やそもそもモデルの関数形の選択が適切にできるんだったら苦労しねえよ、といった問題は普通にあるだろう。この部分をアルゴリズムを使って自動化するということもできて、この部分を自動化した処理が巷で言われる人工知能(Artificial Intelligence)ということになる。要するに、どの特徴を用いるかとか、モデルの関数形がどうとかということを一々指定しなくても分析できるようにしたい、人間の恣意的な判断を入れないようにしたいというのが人工知能の重要な動機付けであり、データを入力すれば勝手にシステムが判断してくれるというのがこの分野に携わる人たちの理想だろう(理想と書いたのは、現実はおそらくそれと乖離しているだろうと推測するからである。)。
テクニカル分析との関連性
このような分析はテクニカル分析においても普通に行われており、システムトレードで取引アルゴリズムを決定する際の手続きは上記のパターン認識の手続きと全く同じである。特徴選択は各種の指標(Indicator)を決定することに相当するし、モデル選択は取引ルールの決定、指標や取引ルールのパラメータを最適化する手続きは識別器の学習に相当する。このようにして決定した取引アルゴリズムを過去データで実際に試してみて評価することはバックテスト(Back-testing)といわれており、識別器の評価に相当する。ただ、こういったアプローチは評判があまりよくなく、最適化やバックテストといった手法はオーバーフィッティングの原因になる場合が多く、批判されることも少なくない。
既にやられているのであれば、新しい考えを持ち込む余地はないと思うかもしれないが、一般に紹介されるシステムトレードの手法というのはローテクであることが通常であるため、この辺りも学術的なアプローチを採用して検討してみたいところではある。例えば、バックテストはヒストリカルデータを唯一のシナリオとして検証するが、あくまで実現しえる確率分布のうちの1つのサンプルが実現したものでしかないと考える方が自然だろう。そのため、ヒストリカルデータを参考にしつつも、あり得るシナリオのパスというのをシミュレーションで生成して取引戦略を評価する、あるいは、パラメータを最適化するということを考えることができる。あり得るシナリオのパスを生成するというところで、パターン認識のようなアプローチを使うことができるかもしれない。
また、こういった手法は必ずしも取引まで含めた全体でやる必要はなく、指標の開発、発見に特化したパターン認識みたいなのを考えてもよさそうに見える。このブログでは、なるべく既存のアイデアとは違うところで面白そうなものを検討していきたいと考えている。