これは、入賞時提出物に関する基本的なガイドラインです。 提出物についてはコンペティションごとに個別のルールを定める場合がありますが、その場合を除き本ガイドラインに則った提出物作成をお願いします。 コンペティション参加にあたっては、以下の提出物が必要になることを前提に、投稿ファイルに紐づく必要な情報を保存しておいて頂くようお願いします。

入賞時提出物は以下2つです。

  1. ソリューションの概要説明資料

  2. コード、モデル、ドキュメント

  3. ソリューションの概要説明資料は、コンペティションホスト向けのプレゼンテーション資料としても活用されます。 ホストの要望に応じて、1時間程度のWeb/Telミーティングを設定し、入賞者様からのプレゼンテーションを行っていただくようご依頼する場合があります。

  4. ソリューションの概要説明資料 ソリューションの概要説明資料を、Word, PowerPoint, Pages, Keynoteのいずれかの形式で、日本語または英語で作成してください。 資料は、技術的なバックグランドを持つ人・持たない人の両方に読まれる可能性があります。双方にとって参考になる資料を目指してください。 基本的には、以下のガイドを参考に作成してください。ただし、すべての項目が必ずしも含まれている必要はなく、ご自身で新たな項目を追加して頂いても構いません。

    1. コンペ成績
      1. 入賞したコンペティション名
      2. 最終スコア
      3. 最終順位
      4. ユーザー名
    2. 入賞者のバックグラウンド
      1. 学歴/職歴
      2. 上位入賞に役立った経験・知識
      3. 参加したきっかけ・理由
      4. コンペに費やした時間
    3. ソリューション概要
      1. 使用した実行環境・言語・ライブラリ・サービスなど
      2. 使用したモデル構築手法(LightGBM, CNN, etc)
      3. 最も有効だった特徴量・モデル
      4. モデルの学習にかかった時間
    4. 特徴量選択・エンジニアリング
      1. 重要な特徴量
        • 10~20の重要な特徴量を示したimportance plot
        • ターゲットに対するpartial plots
        • 上記が難しい場合、重要な特徴量のリスト
      2. 特徴量選択の方法
      3. 重要な特徴量の作成方法
      4. 使用した外部データ(使用が許可されている場合)
    5. モデル構築手法
      1. 使用したモデル構築手法
      2. アンサンブルを行った場合、モデルの重み付けの方法
    6. その他、興味深い考察・発見
      1. ランキングスコアの推移と、非連続的なスコアアップをもたらした要因、あるいはスコアアップを妨げた要因(苦労した点)
      2. 勝因・上位入賞に当たり重要だったポイント
      3. 重要だったEDAの結果
    7. シンプルなモデル 精度は下がるが、よりシンプルなモデルについてご教示ください。
      1. 最終的な精度の90〜95%程度を達成する特徴量のリスト(10個未満に限定)
      2. 最も重要なモデル構築手法(アンサンブルせず、1つに限定)
      3. 上記2点を踏まえ、単純化したモデルのスコア
    8. モデルの実行時間
      1. 学習にかかる時間
      2. 推論にかかる時間
      3. g.で示した、シンプルなモデルの学習にかかる時間
      4. g.で示した、シンプルなモデルの推論にかかる時間
    9. 参考資料 参考にした論文、ウェブサイトなどの外部情報
  5. コード、モデル、ドキュメント 以下のアイテムをzipファイルにまとめて提出してください。

    1. コード、学習済みモデル、データ (Nishikaからダウンロードできるデータは不要です)

    2. README.md ディレクトリの最上位にREADME.mdファイルを作成してください。 READMEファイルには以下の情報を含めてください。

      1. 使用したハードウェア(CPU/GPUのコア数/メモリ、ディスクサイズ、など)
      2. バージョン情報を含む、使用したOS
      3. バージョン情報やインストール手順を含む、必要なサードパーティソフトウェア。これはDockerfileとして提供頂いても構いません
      4. 乱数シードなどの設定値の情報。これは、情報が書かれているファイルを示すだけでも構いません
      5. モデルの学習から予測まで行う際の、ソースコードの実行手順。コマンドの構成は、後述のentry_points.mdのように、前処理・学習・予測を行う部分を分離することを推奨します
      6. 学習済みモデルを使用して予測のみ行う場合の、ソースコードの実行手順。コマンドの構成は、後述のentry_points.mdのように、前処理・学習・予測を行う部分を分離することを推奨します
      7. コードが実行時に前提とする条件。例えば、トレーニング実行時に出力先フォルダを空にする必要がある、などについて記載することを推奨します
      8. コードの重要な副作用。例えば、データ処理コードが元のデータを上書きする、などについて記載することを推奨します
    3. requirements.txt ディレクトリの最上位にrequirements.txtファイルを作成します。サンプルファイルはこちらです。これは、Pythonであれば**pip freeze**、Rであれば **devtools::session_info()などで生成できます。pandas==1.0.1**のように、使用されるすべてのパッケージの正確なversionを指定してください。正しいパッケージおよびversionが指定されていれば、Dockerfileとして提供頂いても構いません。

    4. directory_structure.txt ディレクトリの最上位にディレクトリツリーを作成します。サンプルファイルはこちらです。ディレクトリ最上位からLinuxコマンド**find . -type d > directory_structure.txt**を実行して生成される形式などを推奨します。

    5. settings.json このファイルは、ローデータ、学習データ、テストデータ、モデル、および出力先ディレクトリへのパスを指定するものです。サンプルファイルはこちらです。settings.jsonが、以下のように機能することが理想的です。

      1. 各ディレクトリへのパスを指定する唯一の場所となっている
      2. 全てのI/Oを実行するコードは、settings.jsonから適切なパスを読み取り実行されている
    6. entry_points.md コードを実行するコマンドのリストです。 前処理を行うコード、学習を行うコード、予測を行うコードを分離して、コマンドを実行できるように構成することを推奨します。 例えばPythonの場合、以下のようなリストが考えられます。

      • python preprocess.py
        1. RAW_DATA_DIRからトレーニングデータを読み取る(settings.jsonで指定)
        2. 前処理を実行
        3. クリーニングしたデータをPROCESSED_DATA_DIR(settings.jsonで指定)に保存
      • python train.py
        1. TRAIN_PROCESSED_DATA_PATHからトレーニングデータを読み取る(settings.jsonで指定)
        2. モデルをトレーニング。チェックポイントファイルを使用する場合は、settings.jsonでCHECKPOINT_DIRを指定
        3. モデルをMODEL_DIRに保存(settings.jsonで指定)
      • python predict.py
        1. TEST_PROCESSED_DATA_PATHからテストデータを読み取る(settings.jsonで指定)
        2. MODEL_DIRからモデルをロード(settings.jsonで指定)
        3. モデルを使用して、新しいサンプルの予測を実行
        4. 予測をSUBMISSION_DIR(settings.jsonで指定)に保存
    7. Configurationファイル 必要な設定ファイルを**$ HOME/.keras/keras.json**のような形式で作成します。READMEファイルには、これらのファイルは何か、どこに配置する必要があるかの説明も含めてください。

制定日:2020年4月22日