ブログ記事18件
ここまでの検証作業では採用閾値変えたり、アンダーサンプリング数変えたり、検証データ複数試したり・・・と検証パターンが大量にあるので試行錯誤に結構時間かかってました。最初は1回の学習自体は数十秒でしたが、データ量増やしたあたりから1分以上かかるようにもなり結構な苦痛です。だんだんやってられなくなって来たし今後もいろいろなパターンで随時検証していくことも考え、学習モデルの保存と読み込みに対応させたいと思います。(もっと早くやっとけ!今更気づくなよって話ですが)学習モデルの保存・読み
投稿がしばらく空いてしまいましたがまた少しずつ書いていきたいと思います。今回は学習データを思い切って変えてみました。これまでは週次で約52週分の騰落データで様々なアルゴリズムなどを試してきましたが、これを日次騰落ベースにしてみます。新データの概要新しいデータは日次の騰落ベースになりますが、以下の条件は変えていません。学習データは2017年~2021年の株価で週次ベースと同じ約2000銘柄目的変数は変更せず1週~4週後の株価の騰落率(基本2週後をターゲットに試す)目的変数
今回は、予測用データ(検証データ)を改良して予測対象日を増やすことを考えてみた記録です。データの改良これまで作ってきた機械学習モデルは、主に2017年~2021年の株価を学習データとして2022年度の予測と結果検証を中心に行ってきました。データの構造としては週次ベースでの騰落を見てましたので、学習データも検証データも週1回(原則火曜日)を基準日としたデータで行っていました。これだと毎週火曜日のみが予測日となりますが、検証結果を見ていると予測数に大きな波があってある日に集中
LightGBMモデルでの売りバージョンでも2022年度予測成績はまずまずの結果を出してくれました。売りのケースでの2021年以前の場合も見てみたいと思います。2021年以前の検証結果データ量も多く分割したりと時間がかかるので、多くは試してません。下記の条件のみで検証してます買いの時の検証と同じく学習データを銘柄順に振り分けて半分に分割。もう半分を検証データに。アンダーサンプリングは5倍のみに固定0%以上の上昇のみ結果は以下のようになりました※分割した半分づつをデ
信用売りパターンの22年度予測結果での仮想売買の検証結果です。学習モデルはLightGBMです。売りパターンでの正答率などの検証結果は下記記事にありますのでご覧ください。22年度信用売りの予測と検証『学習・検証をする⑩売り(信用売)で予測してみる(LightGBM)』ここまでLightGBM。線形回帰、ランダムフォレストを試してきましたが、予測は上昇するかどうかが目的変数でした。つまりは買う株を予測することが目的です。し…ameblo.jp信用売りの22年度仮想売買の結果
ここまでLightGBM。線形回帰、ランダムフォレストを試してきましたが、予測は上昇するかどうかが目的変数でした。つまりは買う株を予測することが目的です。しかし株は信用取引で売りから入ることもできます。次は下落するかどうかを予測してみて信用売りとした場合はどうなるかを検証してみたいと思います。売り予測のプログラム改修基本は買い予測のLightGBMと同じです。目的変数の正解とするクラスをマイナス10%以下の場合に変えるだけですね。ついでに売り・買いを変数で切り替えられるように改修して
今回はランダムフォレストの結果です。結論から言うとこれまでで一番ダメでした。ダメダメですがせっかく試したので結果です。もしかしたらパラメータとかをきちんと設定していけば結果が大きく違うのかもしれませんが、もうそんな気も起きないくらいだったので打ち止めにしてます。ランダムフォレストのプログラムランダムフォレストは「scikit-learn」の「RandomForestClassifier」を利用しました。そもそも線形回帰も良い結果ではなかったので2値のクラス分類で試しています。
線形回帰モデルは散々な結果でした。あっさり見限っても良かったんですが、工夫することで何か変わってこないか少しだけ考えてみることにしました。取り組んでみたのはシグモイド関数の利用です。シグモイド関数って何?って方はどっかのサイトを検索して調べてみてください。シグモイド関数で目的変数を変換シグモイド関数を通すと0~1の数値に変換してくれて、図のようなイメージの曲線になります。ざっくり言うと2値モデルに近いくらい上昇率を上か下かに振り分けてくれる感じですね。上昇した銘柄と上
これまではLightGBMの2値分類で学習・検証を行ってきましたが、他のアルゴリズムだとどうなるんでしょうか。今回は線形回帰を試してみます。利用するアルゴリズムと学習方法線形回帰の学習・予測には「Scikit-learn」の「LinearRegression」を利用しました。anaconda環境なので「condainstall-cconda-forgescikit-learn」でちゃちゃっとインストール。というか、これまでのプログラムでも正答率の検証の「c
データ量を増加させて新しく学習したモデルは格段に成績がアップしました。(モデルの正答率の検証結果はこちら(22年分)とこちら(21年以前分))それに伴って2022年にもし買っていたら?という売買成績も再度チェックしてみたいと思います。売買実績検証のパターン前回は5パターンの購入方法・売却方法で確認しましたが、とにかく全部買っていった場合500万の持ち高制限+1単元が100万以上購入なし+少額銘柄は20万MAXで購入単元数アップ+10%損失時はロスカットの2パターン
2022年では良い結果が出ましたが、今後も同じ結果が出せる保証はないため実際の売買はやはり躊躇してしまいます。やはり2021年以前のデータではどうなっていたのかが気になります。検証用にデータを分割2021年以前を検証するにあたって、2017年~2021年の全データで学習したモデルでそのまま予測したら意味がありません。予測するデータと検証するデータが一緒になるのでとんでもない好結果しか出て来ないです。学習データでそのまま予測してるんだから逆に当たらないとおかしいですよね。ということ
これまでの試行錯誤で、自分としては納得する結果が出て非常に良いモデルができたと思います。学習データを変えてみようと考えて確認したところ・・・・あれ?データ量が少ないものを元データで取り込んでいることに気づきました。過去の銘柄別株価データをゲットしながら銘柄数を順次増やしていったので、実は約1000銘柄分ぐらいのデータでこれまで学習・検証を進めていたようです。まあこれでも充分な結果でもあるので、そのままでもいいかもしれませんが、せっかくなので2000銘柄分で作ったデータで学習するとどうなるか
※この記事の検証結果はデータ見直し後の最新の情報があります。最新結果はこちら(学習・検証をする⑥学習データを修正)です。前回までの取り組みでアンダーサンプリングで予測対象数を増やし、アンダーサンプリングによるデータのバラつきがもたらす予測のバラつきをバギングで安定的にすることができました。今回は変更できそうなパラメータ(LightGBMのパラメータではないです!)を変えて結果がどうなるかを見ていきたいと思います。変更できそうなパラメータまず、以前もいろいろな数を試しまし
前回まででアンダーサンプリングしてバギングで安定化させてというところまで来ました。続いてアンダーサンプリングの数変えたりしながら最適なモデルを探そうと思ってたんですが、アンダーサンプリングで利用している「RandomUnderSampler」の動きがよー分からんので、今回はそのことについて。RandomUnderSamplerのパラメータ前回のプログラムではアンダーサンプリング部分は以下のような内容でした。(ちなみにどっかのサイトからの丸パクリ)> ##アンダーサンプリング部
前回アンダーサンプリングによって株価が騰がると予測する数を増やすことが出来ました。が、学習毎にモデルが変わって予測数が全く安定しないという問題に直面しました。今回は、この問題を解消するためにバギングをしてみたいと思います。バギング前の状態元のプログラムで10回やってみたらこんな結果でした。アンダーサンプリングの倍数は4にして試しています。回数実際に騰がらなかった実際に騰がった正答率168740737.2%257039140.7%368741437.6%
前回の予想プログラムでそれなりの成果は出たのかと思います。しかし全体で74回しか騰がるという予測をしてなくて、大半は「騰がらない」ことになってしまってます。これでは売買回数が非常に限られてしまいます。1年で74回で十分と思うかどうかはそれぞれでしょうが、私は売買推奨の対象銘柄がない週とかあるとたぶん我慢できません。もっと多くないと困ります。ということで、今回は騰がると予測する対象回数を増やすことを目的に考えてみたいと思います学習データの偏在を確認してみるまず、2022年の騰落結果
今回は学習と検証についてです。いろいろ試行錯誤して作っていきましたので何回かに分けて書きます。まず基本的な学習・検証のプログラムをどう作ったかです。利用したアルゴリズム利用したアルゴリズムは「LightGBM」です。様々試した結果、結論としてはもし一つ何かを選ぶとすれば「LightGBM」の「2値分類」一択ですね。単純な線形回帰やsigmoid処理をしてからの線形回帰、ランダムフォレストなども試しましたが、「LightGBM」の「2値分類」が圧倒的に成績が良かったです。
機械学習へのとっかかり機械学習をやってみたくてPythonで株をテーマに機械学習を試してみようと思いたち、試行錯誤しながら取り組んだ記録です。プログラミングはちょっとかじったことがあって、VBマクロ程度を調べながらで組んだ経験があるくらいでした。そんな自分でも未だに機械学習の理論はまったく理解してなくても(理解する気もないですし)、それでも予測するところまでプログラム組むことが出来て、まあまあ使えるかなくらいのところまではなりました。この記事書いてる時もまだ試行錯誤中ですけどね