この記事は Mam様の記事を参照させて
いただきました。
https://mam-mam.net/delphi/ann.html
はじめに
日経平均株価の予測プログラムを作成しました。
とはいっても、本体は変えていません。
Mam様という方がネットに delphi のみで
人工ニューラルネットワーク(Artificial Neural Network)
を作ったという記事を利用させて
いただきました。(感謝)
私も delphi を使用して作業しており、
使い慣れたツールなので、どんなものか
やってみようという気持ちで取り組みました。
ダウンロードして使ってみていただければうれしいです。
ニューラルネットワーク
ニューラルネットワークは、生物の学習メカニズムを模倣した
機械学習手法として広く知られているものであり、
「ニューロン」と呼ばれる計算ユニットをもち、
生物の神経系のメカニズムを模倣しているもの。
人間の脳の神経網を模した数理モデル
だそうです。
統計解析
統計解析に関しては、
昔、大村平著 統計解析のはなしや
蓑谷千凰彦著 回帰分析のはなしを
読んだ程度では機械学習を利用した
回帰分析など理解できるはずもなく、
内容の解析などハナから諦めて、
利用させていただくことに専念しました。
ありがとうございます。
使用方法
1 ダウンロード
プログラムは次からダウンロードできます。
ダウンロードの際、画面右上のダウンロードマークをクリックすると
ファイルが未確認と表示され、マルウエアの危険が表示されたら、
その下のマルウエアの検査ボタンをクリックしてマルウエア検査通過後
にファイル名が Yosok.zip となると思います。
2 ファイルの設置
ダウンロードした “Yosok.zip” ファイルを右クリックして
すべて展開を選択すると、Yosok フォルダの中に
次のファイルが解凍されます。
K03Nikkei32b.exe プログラムファイルです。
SQDB.DB ファイル データベースファイルです。
フォルダを適当な場所に移動させてください。
3 日経データのダウンロード
日経平均株価 ダウンロードセンターで検索すると出てくると思います。
https://indexes.nikkei.co.jp/nkave/index?type=download
から
日経平均株価項目の 右側の 日時データ をクリックして
ダウンロードしてください。
ダウンロードしたファイル名は
nikkei_stock_average_daily_jp.csv
という名前のはずです。
ファイルは上記プログラムのあるフォルダ内にコピーしてください。
4 プログラムの起動
N03Nikkei32b.exe ファイルをダブルクリックして起動してください。
起動したら、画面左の 読込学習 ボタンをクリックして
日経平均株価データの読込学習をしてください。
学習を終わるとメモエリアに学習時間やMSE(平均二乗誤差)
などが表示されます。
MSE(Mean Squared Error)
平均二乗誤差は、各データに対して
「予測値と正解値の差(=誤差)」の二乗値を計算し、
その総和をデータ数で割った値(=平均値)
を出力する関数です。
数値が小さいほど誤差が少ないことになります。
誤差は、「予測値-正解値」又は「正解値-予測値」です。
二乗するからどちらでもよくなるのですね。
5 最近20日程度の予測
予測1 ボタンをクリックすると予測を表示します。
6 全予測
全予測 ボタンをクリックすると日経平均株価ファイルの
全期間の予測が表示されます。
7 データの確認
画面上の データ タブをクリックすると、
日経平均株価のデータと予測値が見えます。
データはメモリ中で保持されるため、
プログラムを終了すれば予測データは失われます。
(予測データは保存されません)
8 学習条件設定
画面上の 条件等 タブをクリックすると
予測の条件が表示されています。
学習回数が 400回 に設定されていますが、
学習回数を編集して学習回数を
変えることができます。
400回の学習は1秒程度で終わりますが、
1万回であれば分単位の時間がかかります。
10万回なら10-20分程度かかると思います。
パソコンの性能によってもデータ数によっても
学習時間は変わります。
学習回数を変えた場合は再度
読込学習 ボタンをクリックして再学習させてください
学習回数を多くすることで
予測は現実に近くなるようです。
入力層、出力層ニューロン数も変えられますが、
予測にどのような影響があるかよくわかりません。
次回も同じ条件で読込学習したい場合は
登録 ボタンを押すと条件を登録して次回も
同じ条件で学習できます。
登録した条件を削除するには、
グリッド内の該当データの場所で
[Ctrl]+[Del]キーを押すことで削除できます。
(コントロールキーを押しながら デルキーを押してください)
入力層、出力層ニューロン数を変えるときは
条件登録して再起動してください。
予測に対する影響はわかりません。
9 シグモイド関数
本プログラムで使用している活性化関数は
シグモイド関数(Sigmoid function)だそうです。
ReLU レルー関数(Rectified Linear Unit)バージョンも
あるようですが、どう違うのかわかりません。
気になる場合はネットで調べてみてください。
不勉強ですみません。
以上使って楽しんでいただければうれしいです。
コメント