hojokenta / kaggle-two-sigma-financial-news

1 stars 0 forks source link

いろいろメモ #2

Open hojokenta opened 5 years ago

hojokenta commented 5 years ago

Overview

Description

Evaluation

Submission File

Timeline

Submission Instructions

Required Steps

Important Notes

data

Market data

このデータには、米国に上場している金融商品のサブセットが含まれています。含まれる商品のセットは日々変化し、取引量と情報の入手可能性に基づいて決定されます。つまり、このデータのサブセットに出入りする手段があるかもしれません。したがって、提供されるデータにギャップがある可能性があり、これは必ずしもそのデータが存在しないことを意味するわけではありません(選択基準のためにこれらの行が含まれない可能性があります)。

New data

ニュースデータには、ニュース記事レベルと資産レベルの両方の情報が含まれています(つまり、テーブルは意図的に正規化されていません)。

hojokenta commented 5 years ago

Two Sigma Financial News Competition Official Getting Started Kernel

Introduciton

(market_train_df, news_train_df) = env.get_training_data() train_my_model(market_train_df, news_train_df)

for (market_obs_df, news_obs_df, predictions_template_df) in env.get_prediction_days(): predictions_df = make_my_predictions(market_obs_df, news_obs_df, predictions_template_df) env.predict(predictions_df)

env.write_submission_file()


 * `train_my_model`と`make_my_predictions`は上記を動かすために書く必要がある関数
### In-depth Introduction
 * まずはインポートして環境を作る
 * 詳しくは`https://www.kaggle.com/dster/two-sigma-news-official-getting-started-kernel`
 * `kaggle.competitions`のインポートは以下を参照
    https://teratail.com/questions/151256
 * どうやらローカル環境で動く類のものではなさそう

#### get_training_data function
 * タプル型のデータフレームを返す
    * market_train_df
    * news_train_df
 * 2017年2月から2016年12月までの市場およびニュースデータが全て含まれている
 * 詳しくは[competition's Data](https://www.kaggle.com/c/two-sigma-financial-news/data)
 #### get_prediction_days function
 * 「予測日」(取引日)ごとにループし、最後に受信したデータ以降に発生したすべての市場およびニュースの観測結果を提供するジェネレータ。
 * Yields:
   * 予測がうまくいったら次のタプルが生成される
     * market_observations_df: 次の予測日におけるマーケットデータ
     * news_observations_df: 次の予測日におけるニュースデータ
     * predictions_template_df: `ssetCode`と`confidenceValue`(初期値0)が入った予測関数
   * 前回の利回りから予測が呼び出されていない場合は、何も返さない

### predict function
 * 現在の予測日の予測値を格納する。`get_prediction_days`から返された`predictions_template_df`と同じフォーマットが必要です。
 * Args:
   * prediction_df: 以下のカラムを持つデータフレーム
     * assetCode: The market asset.
     * confidenceValue: 10日間でassetが増加するか減少するか分かる信頼スコア[-1.0, 1.0]
 * `predictions_df`には、`get_prediction_days`から返された`predictions_template_df`
に含まれている正確な行セットが含まれている必要があります。
 * `predict`functionは上記を検証しないが、`assetCode`に過不足があればサブミッションは失敗する
 * 最初の日はランダムな予測をしましょう

import numpy as np def make_random_predictions(predictions_df): predictions_df.confidenceValue = 2.0 * np.random.rand(len(predictions_df)) - 1.0v

make_random_predictions(predictions_template_df) env.predict(predictions_template_df)


今度は次の予測日に進み、もう一度予測する

## Main Loop
 * すべての日をループしてランダムな予測を返そう
 * (`get_prediction_days`から返された)`day`ジェネレータは、最後に到達した時点で戻り値を停止します。

### write_submission_file function
 * 予測値を現在の作業ディレクトリのCSVファイル(`submission.csv`)に書き込みます。

 * `write_submission_file`を単独で呼び出しても、競技会には提出されない。カーネルの出力の一部として`submission.csv`ファイルを書き込むだけ。submitするには、カーネルをコミットし、生成された`submission.csv`ファイルをそのカーネルバージョンの出力タブを探し(カーネルエディタの外にあることに注意)、 "Submit to Competition"をクリックする。ステージ2でカーネルを再実行すると、選択した提出物にリンクされたカーネルバージョン(”コミット”を押すと生成されます)が実行されます。

### Restart the Kernel to run your code again
 * 不正行為に対抗するために、カーネル実行ごとに`make_env`を呼び出すか、`get_prediction_days`で一度だけ反復することができます。しかし、モデルを反復処理している間に、少しモデルを変更してもう一度やり直すのが妥当です。残念ながら、単にコードを再実行しようとしたり、ブラウザページをリフレッシュしたりしても、前に実行していたのと同じカーネル実行セッションで実行され、`twosigmanews`モジュールは引き続きエラーを投げます。この問題を回避するには、カーネルエディタの一番下にある[コンソール]タブの[再起動]ボタンを押すことで、実行セッションを明示的に再起動する必要があります。