今回は、機械学習モデルの決定木を用いて、ビットコイン価格を予想していきます
Contents [hide]
決定木とは
決定木とは木構造を用いて分類や回帰を行う機械学習の手法の一つです
参考:https://datachemeng.com/decisiontree/
決定木分析は、「段階的にデータを分割していき、木のような分析結果を出力する」ものです
言葉だけではイメージがつかないと思いますが、具体例を示します
例えば、下の図のように決定木を作ると、
人間が感じる「暑い」という感覚を、「温度」と「湿度」という特徴量で表現することができます
参考:https://qiita.com/3000manJPY/items/ef7495960f472ec14377
これをビットコインにも応用していきます
決定木を使ってビットコインの価格予想
やること
ビットコインの過去データに基づき、次の1時間で「上がる」のか「下がる」のかを予想します
なぜこのようなやり方で予想するのかは、下の記事に詳しく書きました
使うデータ
2017年7月1日〜2021年8月14日までのビットコイン時間足データを使います
暗号資産取引所bitbankからデータを取得しました
Pythonでデータを取得する方法はこちらをご覧ください
特徴量
先程の例では、人間が感じる「暑い」という感覚を機械的に表現するために、「温度」と「湿度」という特徴量を使いました
ビットコインでは、「買い」「売り」を機械的に表現するために、テクニカル指標を特徴量として与えようと思います
「温度」と「湿度」は、人間が感じる「暑い」に何らかの関係があるように、
テクニカル指標は、ビットコインの「買い」「売り」の判断に関係があると思ったからです
具体的に、特徴量には、テクニカル指標である
・MACD
・MACDシグナル
・MACDヒストグラム
・ボリンジャーバンド
・RSI
と、
・出来高
・出来高の単純移動平均
を与えます
用意したデータは以下のようになります
学習
実際に上のデータを決定木で学習させ、検証したところ、結果は以下の通りになりました
F1値が正解率みたいなものなので、正解率62.3%ということになります
検証には学習に使わなかったデータを使ったので、未知のデータに対して正解率62.3%が出たというわけです
パラメータ最適化
決定木のハイパーパラメータは以下の通りです
・max_depth(決定木の深さ)
すなわち、どれだけ分岐をさせるかのことで、この図では決定木の深さは2です
上の学習では、パラメータを適当に与えました
このパラメータ(決定木の深さ)を変えることで、学習結果が変わってくると思います
なので、F1値が最も高くなるようなパラメータをグリッドサーチで見つけました
グリッドサーチの結果、
・max_depth=7
が最も適切なパラメータであることがわかりました
予想精度
パラメータを変更して、もう一度学習させました
結果はこのようになりました
グリッドサーチでパラメータを最適化した結果、正解率(F1値)を77.3%にすることができました
まとめ
今回は決定木でビットコイン価格の予想に挑戦しました
ビットコイン価格予想の正解率(F1値)が77.3%と、まずまずな結果が得られました
現在、ビットコイン価格予報のページでは、機械学習モデルの「SVM(サポートベクトルマシン)」でビットコイン価格を予想しています
今回は決定木でいい結果が出たので、SVMと決定木を組み合わせるアンサンブル学習をし、ビットコイン価格予想の精度をどんどん上げていこうと思います
また、この調子で他の機械学習モデルにも挑戦していこうと思います
コメント