評価はどうなったか?CONFIG画面にします。Searchのところの「Enable」をチェックして、学習ボタンを押し、自動最適化を開始します。60回くらいトライさせ、評価をチェックした結果、最も良いニューラルネットワークの構成は、こんな形になりました。精度は47.22%です。えー、何それ、全然ダメじゃんという感じですが、実践を考えるとそうでもないんです。y:label=0のところを見ると、y’_0=6、y’_1=4、y’_2=2となっています。これは、どういう意味になるかと言うと、翌週下がる場面が12回あったら、6回は下がると正解し、4回は小動きと間違え、2回は上がると間違える、ということです。4回の小動きはエントリーしませんので、この分を除くと。8戦して6勝2敗で、勝率75%ということになります。同様に、翌週上がる場面が12回あったら、6戦して4勝2敗で、勝率は67%です。小動きの場面が12回あると、3回下がると間違えて、2回上がると間違えています。小動きなので損益はほぼチャラか、損失があっても限定的でしょう。当初思っていた、小動きの時はエントリーしないなら、テクニカルだけでも7割くらいの精度では予測できそうという直感に近い結果となりました。データが180個とすごく少ないので、たまたまである可能性もありますが。自らルールを見つけ出すのは本当に革新的な技術だ今回、株価と移動平均線のチャートを読み込ませてディープラーニングさせた訳ですが、テクニカル分析のルールは何1つ教えていません。テクニカル分析のルールを覚えたような結果を出して来る。翌週の株価が「下がる」、「小動き」、「上がる」それぞれのチャートの中にルール(特徴量)を自ら見つけ出しているんでしょうね。形だけを見てそこからルール(特徴量)を見つけ出すというのは、本当に革新的な技術だと思います。チャート分析には様々なものがありますが、この分野はディープラーンングと相性が良さそです。2018.3.10コメントに、BOMによるエラーのご連絡がありましたので、補足説明します。略で、ファイルの先頭にある使用言語を示すマークです。EXCELやメモ帳等で使われており、やっかいなことに画面には表示されません。データセットにBOMがあるとエラーになってしまいます。BOMもデータの一部として読んでしまうためです。float*1)、2)の場合、DATASET画面でみると、xの前にこんな表示が付きます。原因は?】BOMが付く原因としては、データセット作成中に、一時的にでもCalc以外のものを使った(Excelとかメモ帳とか)ことが考えられます。一度Excelやメモ帳等でファイルを保存してしまうと、自動的にBOMが付いてしまい、その後Calcに切り替えても、BOMが付いたままになります。対処方法は?】BOMが付いているかどうかの確認やBOMを外すには、サクラエディタを使います。ダウンロードしインストールして下さい。サクラエディタで問題と思われるファイルを開き、「名前を付けて保存」をクリックします。するとBOMが付いている場合は、BOMにチェックが入っています。外すには、BOMのチェックを外して、保存(上書き)すればOKです。興味深く拝見させていただきました。お忙しいところ申し訳ありませんが、一つ質問させてください。今回の投稿は、日経平均の過去データを使いNNCに学習、ディープラーニングをさせると理解しています。評価用データで検証したところ上記47%の正解率を得たと理解しています。そこで、今週のデータが出揃ったところで、実際に翌週エントリーするかどうかはどうやって判断するのでしょうか?例えばYラベルの無い今週のデータを、NNCに読み込ませてプログラムを走らせるような作業を行うのでしょうか?(データを読み込ませ走らせると、来週は「0」の下がるを表示してくるとか?)興味はあるのですが、まだNNCを触っていないので突拍子もないような質問で申し訳ございません。PMはしもとさんへコメント大変ありがとうございます。Consoleに登録します。このとき、yラベルは「2」にしておいて下さい(2にしておかないと表示範囲が0,1だけになってしまいます)。学習済みのプロジェクトのValidationをこれと入れ替えて評価ボタンを押せば結果が出ます。ちなみに、今実際に今週分でやってみましたら、来週は「1」と出ました。来週は「小動き」という予想です。今後とも、よろしくお願いします。AMcedroさん、おはようございます。ご回答ありがとうござます。私も、別データを用意し挑戦してみようと思います。8月にソニーがNNCを公開した際急に興味が湧き、コード作成が不要とは言いつつNNの基礎は学ぼうと初心者用の本を読んでいたところなのです。ネットで探しても画像を使ったレビューは沢山あったのですが、テキストデータを使ったものは殆どなく大変参考になりました。AMはしもとさん、おはようございます。私もソニーのNNC紹介の動画を見た瞬間恋に落ちてしまいました(笑)。それ以降、週末はマニュアルとWebでの情報を元にNNCと戯れています。このブログは、私の試行錯誤の結果です。参考にして頂ければ、大変うれしいです。ソニーのNNCは、普通の人が使えるディープラーニングだと思っています。Webで色々な情報があふれてくると良いですね。しもとさんのオリジナルデータの結果が分かりましたら、ぜひ教えて下さい。今後とも、よろしくお願いします。株価ではないのですが同じ数値です。各データを10倍して、マニュアルの指示にあるように、おおむねー1.0~+1.0の中に納まるように調整しました。+0.151(+15.1%)の狭い範囲に留まっていますが、5年間でみるともっと変化が激しい時があるので、全体として-1.0(-100%)~+1.0(+100%)の中に納まっているという意味です。>データセットの作り方ですが、最終的には5行×4列のタイトルも日付も入っていない数値のみのデータファイル(csv)を作れば良いのですね?■その通りです。>翌週下がる・小動き・上がるの数値データファイルを、stock0、stock1、stock2という各フォルダーに格納とありますが、この数値データファイル(csv)は絶対に必ず同じ数だけ要りますか?■いいえ。偏りがあるより同数の方が上手く学習でき、識別精度が上がると思うので、同数にしているだけです。>学習用ファイル(nikkei_train.csv)と評価用ファイル(nikkei_test.csv)ですが、上で作った数値データファイル(csv)のデータを、8対2の割合で各々のファイル(csv)に貼り付けて作れば良いのですね?■はい。学習用ファイル、評価用ファイルには、「数値データファイル名」と「ラベル名」を記入します。>評価までは事前に済ませておいてのリアルタイムでの予想も出来ますか?■出来ます。評価用ファイルを最新の1つのデータ分に入れ替えて、評価を実行すれば、リアルタイムでの予測ができます。PM回答くださってありがとうございます。全体として-1.0(-100%)~+1.0(+100%)の中に納まっているという意味です。ー0.1(-10%)~+0.1(+10%)かと思っていました。同数の方が上手く学習でき、識別精度が上がると思うので、同数にしているだけです。使ってるうちに追加のデータも増えて来るので偏っても来るようにも思ったのです。学習用ファイル、評価用ファイルには、「数値データファイル名」と「ラベル名」を記入します。評価用ファイルを最新の1つのデータ分に入れ替えて、評価を実行すれば、リアルタイムでの予測ができます。他のプログラムから呼び出して、自動で予測もし結果も得られる、などと言ったことまでは流石に無理ですよね?すみません、追加での質問です。過去5年間の週間データ(244個)を見て翌週が、下がる(ー2%以上)、小動き(±2%以内)、上がる(+2%以上)の3種類に分類します。ありますが、この対比は2012年1月11日の8,448円と2012年1月18日の8,551円とでされたものですよね?また全然分かってないですが無償なのはとてもうれしいです。PMmokoさんへコメントありがとうございます!質問への回答をさせて頂きます。学習用ファイル、評価用ファイルには、「数値データファイル名」と「ラベル名」を記入します。Learningのように、自動でそれぞれに分割はしてくれないのですね?■数値データファイルの場合は、自分で学習・評価ファイルを作る必要があります。学習・評価ファイルを自動的に作成してくれます。評価用ファイルを最新の1つのデータ分に入れ替えて、評価を実行すれば、リアルタイムでの予測ができます。他のプログラムから呼び出して、自動で予測もし結果も得られる、などと言ったことまでは流石に無理ですよね?■可能です。学習・評価済みのネットワークをPythonコードで書き出し、少々コードを追加し、学習した重みを読み込ませれば、Pythonの推論実行プログラムが出来ます。これを他のプログラムから呼び出せばOKです。>過去5年間の週間データ(244個)を見て翌週が、下がる(ー2%以上)、小動き(±2%以内)、上がる(+2%以上)の3種類に分類します。>>とありますが、この対比は2012年1月11日の8,448円と2012年1月18日の8,551円とでされたものですよね?■1/11の8,448円に対して、1/12〜1/18の騰落率の絶対値が一番大きい日を見て分類しています。それにしても、一昔前なら、数十万円はしたかもしれないソフトウエアが無償で手に入る時代になりました。仰る通り、ありがたいことですね(笑)。今後とも、よろしくお願い致します。PMありがとうございます。学習・評価済みのネットワークをPythonコードで書き出し、少々コードを追加し、学習した重みを読み込ませれば、Pythonの推論実行プログラムが出来ます。これを他のプログラムから呼び出せばOKです。そんなことまで出来ちゃうんですね。して教えてくださることとてもうれしいです。今後どのようなこと載せてくださるかも楽しみにしています。PM先日はありがとうございました。errors.のエラーが出てしまいました。見てみますとDATASETをクリックしての表示がされる表タイトルの表示も少しおかしく、本来は「x:data」となる筈なのですがなぜか「〇x:data」のように〇の部分に何か2文字入った表示となっています。nikkei_train.csv・nikkei_test.csv共に中身は正常で保存もUTF-8でしていますし、「Index」と「y:dabel」はエラーも出ず正常です。Sizeの数値を減らすことでエラーは消えました。60回くらいトライさせ、評価をチェックした結果、とありますが、どのようにしてトライさせるのですか?その保存と呼び出し方もあれば教えてください。AMmokoさんへコメントありがとうございます。ご回答させて頂きます。errors.のエラーが出てしまいました。何らかの原因でBOM付きで保存されているためと思われます。略で、ファイルの先頭にある使用言語を示すマークです。EXCEL等で使われており、やっかいなことに画面には表示されません。NNCは、このBOMがあるとエラーになってしまうのです。BOMが付いた原因は、データセット作成中に、一時的にでもCalc以外のものを使った(Excelとかメモ帳とか)ことが考えられます。サクラエディタをダウンロードしインストールします。サクラエディタで問題のファイルを開き、名前を付けて保存を選び、BOMのチェックを外して、保存(上書き)すればOKです。5行×4列のデータもBOM付になっていないか、一応チェックしておいて下さい。Sizeの数値を減らすことでエラーは消えました。学習ファイルを何回繰り返して学習させるかを表します。今回は100なので、学習ファイルを100回繰り返して学習させるという意味です。1回の学習に使うデータ数です。今回は18なので、1回の学習に18個のデータを使うという意味です。学習・評価データ数より大きいとエラーになりますので、デフォルトの64を18に変更しています。60回くらいトライさせ、評価をチェックした結果、とありますが、どのようにしてトライさせるのですか?その保存と呼び出し方もあれば教えてください。学習終了ボタンを押すまで、いつまででも試行錯誤を続けます。あなたは、この間マシンを放置しておくだけです。適当なところで学習終了ボタンを押せば、それまでの試行錯誤の結果は、全て自動的に記録されています。PMありがとうございます。1回の学習に使うデータ数です。今回は18なので、1回の学習に18個のデータを使うという意味です。この18個という数はどこから来てるのですか?探し方が悪いのかもしれませんが見つかりませんでした。PMBOMが外せたとのこと。1回の学習に使うデータ数です。今回は18なので、1回の学習に18個のデータを使うという意味です。Sizeは36以下にしなければなりません。この当時は、まだディープラーニングを始めたばかりで、評価データを1回で評価するより複数に分けた方が良いのかなと思って、学習データ144個・評価データ36個の両方が丁度割り切れる18という数字を選びました。迷わず36にするでしょうね。いうわけで、18という数字に特別な意味はありません。今回のmokoさんのエラーに関するご質問に関しては、他の方の参考にもなると思いますので、分かり易く投稿後記に追加したいと思います。ありがとうございました。BOMが外せたとのこと。ありがとうございます。VBがちょっとだけ分かるのでデータはそれで作ってみました。UTF8は初めてなのでBOMがあるのも知りませんでした。迷わず36にするでしょうね。いうわけで、18という数字に特別な意味はありません。評価データは11しかありませんので取り敢えず11にしました。実行しますとこのようなのエラーが出てしまいます。AMmokoさんへこれは、いわゆるエラーではありません。1epoch学習した時の学習データとの誤差(train_error)、評価データとの誤差(valid_error)を表していて、正常な動作です。目の学習データとの誤差、評価データとの誤差が異常に大きいようです(これはデータ自体の問題と思われます)。Epochの設定が2なのは、小さ過ぎるように思います。評価データが11個だとすると、学習データは100個以下ですよね。Epochは100以上が良いのではないでしょうか。