質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.35%

  • Python 3.x

    2414questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • TensorFlow

    278questions

  • Keras

    33questions

python tensorflow keras などの訓練データについて

解決済

回答 2

投稿 2017/12/03 01:29 ・編集 2017/12/04 22:44

  • 評価
  • クリップ 2
  • VIEW 130

junnnn

score 4

 

学びたいこと : 正しい学習データの作成方法が知りたいです。

お世話になります。
tensorflowやkerasについて勉強してしています。基本な NNやDNN,他にCNN,RNNの理論など分かっています。
最も分かったのは、それらの実装方法のみです。
実装方法などが分かったのですが、肝心な訓練データやテストデータの作成方法がわかりません。
本で載っている訓練データやテストデータは殆どが画像の分類のデータが多く、画像以外のデータで分類がしたいのですが、そのデータの分類が上手く出来ないでいます。
単純にDNNで分類と評価ができるプログラムを書いたのですが、結果がいまいちです。訓練データが悪いのか、それとも学習率や隠れ層の設計が悪いのかが分かりません。
どうか、お助けください。
下記の画像は、2013年〜2015年の株価の1分足を30分足にし、train_X に0〜のデータを与えて、train_y には1〜のデータを与えました。
train_yはtrain_xの次の株価の価格が入っている事になります(株価データはOPEN,HIGH,LOW,CLOSEの順番となっている)。
イメージ説明
イメージ説明
イメージ説明

補足
テストデータは訓練データと同様に2016年の株価データをtest_xとtest_yに格納しています。
本文では分類と言っていますが、分類ではなく株価の予測です。(失礼しました)
今回の質問ですが、今までに学んだDNNやCNN、RNNでどの様な値が出されるのが目的です。
なので単純に訓練データを与え、学習し、テストデータを与えた時にどうなるのかが知りたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yag1kaz

    2017/12/04 11:10

    データの作成方法が知りたいのであれば、テストデータをどのように作成したのかを記載してはいかがでしょうか?訓練データの作成した方法についての記載はありますが、テストデータを作成した方法についての記載がなく、テストデータのcsvを外部から持ってきているようにみえるため、答えづらいと感じます。

    キャンセル

  • junnnn

    2017/12/04 22:24

    説明不足ですみません、もう少し説明を追加していきます。

    キャンセル

  • yag1kaz

    2017/12/05 09:39

    追記ありがとうございます。株価ではなくドル円の為替レートだったのですね。もしタイトルが修正可能なら修正したほうがいいかもしれません。(質問したことがないので、修正可能かどうかが確信ありません。)

    キャンセル

  • yag1kaz

    2017/12/05 09:57 編集

    ちなみに画像データではなく、コードを貼り付けると回答が付きやすくなります。Jupyterの場合、Fileからpy形式でExportすることで、貼りやすくなります。Pythonの場合、インデント(字下げ)が重要なのでコード部分をバックスラッシュ三つで挟み込むのをわすれないようにして投稿して下さい。

    キャンセル

回答 2

checkベストアンサー

+3

「DNNで分類と評価ができるプログラム」をつくることが目標でしょうか?
それとも「~~日経平均~~ドル円(12/5修正teratailでは取り消し線が機能しないのですね。。。~~で囲まれた部分は取り消しです。)の予測をするプログラムの作成」が目標でしょうか?

~~日経平均~~ドル円(12/5修正)の予測をするのは、選択したテーマの難易度が高く結果がでにくいので、練習用のテーマとして答えが出るとわかっているものを改めて選択されたほうがよいかもしれない、と思います。

ちなみに、金融商品の未来価格予測には、時系列の動向を反映できると比較的ましな結果がでることが分かっており、例えばRNNやLTSM等を使うことが推奨されています。
研究が進みつつある分野ではありますが、難易度はちょっと高めです。

追記(12/5)
データの作成の仕方が興味のターゲットだという事ですので、追記された質問内容を元に確認しましたが、INPUTデータの作り方に致命的な間違いはありません。

(この段落をさらに追記しました。)もうすこし、踏み込んで説明すると、「ドル円の4本値(Open/Close/High/Low)を与えられて、明日の4本値を予測するDNNを作る」という前提において、作成した入力、出力、訓練、テストのデータのフォーマットに間違いはありません。(それで本当に予測できるかどうかは別問題です)

mkgreiさんの回答にあるように差分データを使用したり、対数変化率を使用したり、長期間のデータをINPUTに使用したり、(為替固有ですが)OPEN/CLOSEが異なるのは、週末GAPのみなので、CLOSEのみをデータに使用する、ということはありますが、FIT/PREDICT系の作法において作成データはあっています。

繰り返しになりますが、作成データに問題が無くても、結果が伴うかどうかは別問題です。(予測可能な分析テーマではないという可能性があるためです)

分析精度の向上を図るなら、ハイパーパラメータや利用する関数、最適化手法などはデータサイエンティストや学者さんがいろいろと試行錯誤されている領域なので、そちらを調査して未踏領域に踏み込んでみる事をお勧めします。

次のSTEPに進む前に、基礎知識として、参考になるであろうリンクを以下に掲載します。

DNNによる為替レート予測(回答者解釈の邦題)
上と同じものをteratailとSlideshareの連携書式にてリンク

為替変動の定式化

投稿 2017/12/04 11:20

編集 2017/12/05 13:05

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/04 12:03

    重要な指摘ですね。
    このままでも学習データの前処理等々が必要だと思われます。
    値そのものよりも、前日からの差のほうが学習しやすい気がします。

    金融データはそもそも学習できる部分が少ないというのが難点ですね。
    更にXに他のファンダメンタルズを加えたとしてもそれほど学習精度が上がらないのが一般的かと思います。

    キャンセル

  • 2017/12/04 22:55

    御回答と修正の依頼有難うございます。
    分類ではなく予測ですね。単純に、設計したNNにどの様に株価のデータや音声データ、etcを与えればいいのかというのが今の疑問で、そのなかで、一番知りたいのが株価の訓練データの与えかたです。RNNやLTSM、特にLSTMで株価の予測するのが賢いのは分かりますが、基本の訓練データとテストデータの与え方が今の所、悩まされています。

    キャンセル

  • 2017/12/04 23:07

    ですので、せめて前日からの差分を与えるのが合理的だと申し上げているわけです。

    キャンセル

  • 2017/12/05 11:19

    追記ありがとうございます。
    移動平均も重要な特徴量になりますね。

    ノイズを消すという強いモチベーションがあるものの、予測値の変化がダンピングがかかったようになるので、乱高下している時に真逆な予想を出すという記憶が蘇りました。
    トレンド予想は精度が高めに出やすくありますが、学習がうまくいっているのか、予測しようとしているデータの性質がたまたま良いのか、切り分けることが難しそうですね。

    数日間の株価だけを見て、未来の株価を予測できる神業はそうそうできるものではないような気がします。

    もう一つ気になることがあるとすれば、学習時のデータを分割してvalidationするべきです。そうすれば、少なくとも過学習した時にぬか喜びしなくて済みます。

    キャンセル

  • 2017/12/05 13:00

    移動平均(トレンド予想)を使用する場合は、過去の移動平均対象よりも未来を予測するようにしないと答えの一部を含んでしまう形となってしまう点に注意が必要です。
    この注意事項は、Validationしても回避できませんので、ご注意下さい。
    具体例で申し上げると、例えば30日移動平均を使用するなら予測先の時点は30日以上先であるべきでしょう。
    今回のケースをバリデーションする場合、4年分のデータを30分足として加工しておられるようなので、訓練データで30000レコード(3ヵ年)、テストデータで10000レコード(1ヵ年)ありますので、cross-validation的にみると25%分割となり、悪くない数字だと思います。
    ちなみに30日移動平均を宛てに行くDNNで他通貨ペアとの相関をみて実際にDNNした例がここにあります。
    https://qiita.com/ognek/items/1b776d504d20bd6f6d7d
    入力要素に30日分の過去レートが直接含まれているので、規模が大きいDNNになっています。

    キャンセル

  • 2017/12/05 20:33

    予測精度は関係なく、ただ単に訓練データの与え方が合っているかどうかが分からなかったのですが、yag1kazさんが合っていると言うことで訓練データの与え方は問題無いと言うことが分かりました。
    説明不足で何度も回答させてしまってすみませんでした。
    予測精度の方では、きちんと訓練データの作成からDNNなどのネットワークの実装が完璧にできたら挑戦していきます。
    色々有難うございました。

    キャンセル

+2

最後がsoftmaxだと0〜1しか出力できないのではないでしょうか。

投稿 2017/12/03 01:49

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/03 14:51

    ご回答有難うございます。
    reluやsigmoid関数でも試してみたのですが、値が変わりませんでした。

    キャンセル

  • 2017/12/03 15:20 編集

    回帰の場合、出力層は活性化関数を入れないのが一般的かと。
    sigmoid関数は[0,1]で、reluは[0,inf]ですね。

    キャンセル

  • 2017/12/03 15:25

    それに加えて、lossはmse/maeが一般的です。

    キャンセル

  • 2017/12/03 15:26

    回帰にcrossentropyやaccuracyは意味がありません。

    キャンセル

  • 2017/12/04 22:17

    mseで試したところ予測が200%超になりました。
    何とも言えない感じでした。

    キャンセル

  • 2017/12/04 23:05

    予測が200%を超えるというのはどういうことでしょうか。

    キャンセル

  • 2017/12/05 20:35

    恐らくは、自分の設計ミスだと思います。
    yag1kazさんの回答で疑問の方が解決しました。

    有難うございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.35%

関連した質問

  • 解決済

    iOS(swift)におけるSpeechToText(watson)の実装について

    watson-developer-cloudのiOS-sdkを使用して簡単なSpeechToTextを使用した簡単なアプリを開発しようとしてます。 mainStoryboad上の

  • 解決済

    ACCESS クエリでの一部重複?の除外方法について

    前提・実現したいこと こんにちは、質問タイトルが適格でないかもしれませんが宜しくお願いいたします。 通販事業をしており、商品の仕入から販売までのデータベースをACCESSの

  • 解決済

    TensorBoradを開く方法

    tensorboadをanacondaで実行しようしたのですが、terminalから tensorboard --logdir=/tmp/mnist_sl_logs を入力

  • 解決済

    cloud9のコマンドラインの出し方

    わからないこと cloud9を使っていて、コマンドラインを消してしまって出し方がわからなくなってしまいました。 いろいろ探してみましたが見つかりませんでした。 とても

  • 解決済

    背景色の有無と::

    左上の図でleftの右とrightの右の水色が表示されません。特にエラーもありません。 宜しくお願い致します。 リンク内容 <!DOCTYPE html> <

  • 解決済

    kerasを用いたCNNでの犬猫判別

    Mac OS Sierra 10.12.1 現在kerasを用いたCNNで犬猫判別をしています。 犬猫の画像を128*128(3チャンネル)にリサイズして ミニバッチを採用して

  • 受付中

    ssd_kerasにおいての学習

    Sierra10.12.5 物体検出アルゴリズムSSDを用いて レンズに移った星を検出して見たいのですが星の画像があまりにも小さいのかうまくいきません。 何かいい方法はありませ

  • 解決済

    ASUS ZenPadで、Camera2APIで、1分動画を2時間分撮影したいです。

    Nexsus 5Xでは、1分動画を、2時間ぶん、撮影することができました。 しかし、ZenPadでは、エラーが出ます。 このようなエラーが繰り返して表示されます。 参

同じタグがついた質問を見る

  • Python 3.x

    2414questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • TensorFlow

    278questions

  • Keras

    33questions