この記事では、AIを作ってみよう:株価予測(3/4) に続き、使ったデータの解説をします。
データを簡単に解説
下記が学習に使ったデータでした。
1 2 3 4 5 6 7 8 9 10 |
2010/3/1,10128.73047,10215.15039,10116.86035,10172.05957 2010/3/2,10199.19043,10238.95996,10150.29981,10221.83984 2010/3/3,10193.9502,10274.08984,10186.67969,10253.13965 2010/3/4,10255.69043,10263.48047,10134.37012,10145.71973 2010/3/5,10254.61035,10376.41016,10254.61035,10368.95996 2010/3/8,10538.12012,10586.96973,10514.28027,10585.91992 2010/3/9,10567.32031,10593.26953,10542.80957,10567.65039 2010/3/10,10555.84961,10588.69043,10547.33984,10563.91992 : : |
このデータは1行が1日分のデータとなっており、2010/03/01~2019/02/14の10年分があります。1行は「日付、日経平均の始値、最高値、最安値、終値」の順に並んでいます。
学習には終値があればいいため、プログラムの内部では終値のみを切り出して使っています。
また、学習時は10日分のデータを1つの塊にして学習しています。これは再帰ニューラルネットワークというディープラーニングモデルが順序性を学習するため、できるだけ連続したデータを渡すためです。データが日付順に並んでいることが重要です。
予測データのほうはこのような内容でした。
1 2 3 4 5 6 7 8 9 10 11 |
Date,Open,High,Low,Close 2019/2/15,21051.50977,21051.50977,20853.33008,20900.63086 2019/2/18,21217.32031,21306.35938,21189.9707,21281.84961 2019/2/19,21256.58008,21344.16992,21217.16016,21302.65039 2019/2/20,21346.03906,21494.84961,21315.39063,21431.49023 2019/2/21,21422.31055,21553.34961,21318.74023,21464.23047 2019/2/22,21376.35938,21451.23047,21348.66992,21425.50977 2019/2/25,21567.66016,21590.0293,21505.07031,21528.23047 2019/2/26,21556.01953,21610.88086,21405.83984,21449.39063 2019/2/27,21504.60938,21578.81055,21492.65039,21556.50977 2019/2/28,21536.55078,21536.55078,21364.08984,21385.16016 |
10日分の連続したデータになっています。10日分を渡すことによって、その翌日1日分の数値を予測するというAIになっているからです。
データの入手先
参考までに、データをダウンロードしたサイトとダウンロード方法を紹介します。
「日経平均株価」の「日次データ」をクリックしてダウンロードします。こちらにあるのは3年分です。より多くのデータを取得したい場合は、証券会社に登録して証券会社より取得する必要があります。
あなたの予測にも使える
このプログラムを利用すれば、あなたが予測したい株価や数値予測に使うことができます。
日経平均でなく、他の指数や個別株の株価など、順序性のあるものであれば、その過去データを取得できれば予測することができます。
その際は、プログラムを少し変える必要があります。入力データのカラム(横に何種類のデータを並べるか)の変更です。ちょっと難易度が高いと思う人は、入力データのほうを合わせるという手もあります。データの足りない部分にダミーを入れて無理やり5つ並べます。「日付、ダミー、ダミー、ダミー、ダミー、数値」などのように編集してください。
いかがでしょうか。
時系列ディープラーニングを用いて未来の株価を予測してみました。より高度な未来を予測したい場合は、適するデータの収集、モデルの選択、モデルのチューニング、その前に様々な視点で検討した企画が必要になってきます。