2022の17日目の記事です。Calendarを書かせていただきます。Competition機能を使った内輪コンペを開催する機会があり、その際に工夫した点や、今後の開催時に注意すべきポイントなどをまとめたいと思います。Competitionとはご存じの方も多いかと思いますが、Kaggleには"内輪でコンペが開催できる機能"が用意されています。Competition)」と呼ばれており、無料で使用できます。https://www.kaggle.com/c/about/communityなお、現在登録されているコンペは、KaggleのCompetitionsページから「Community」で検索できます。Competition」ボタンを押します。2.遷移先の画面で、コンペの名前、説明、URLを入力します。URLはコンペ名から自動生成されますが、変更することもできます。Only」を指定することでクローズドなコンペとなり、参加者を限定することができます。Competition」ボタンを押します。3.これでコンペの枠が完成しました。この時点ではHost(主催者)のみが参照できるページとなっています。ここから各種設定を加えていきます。[Host]タブに切替えます。Checklist」に公開までに設定すべきことのリストが挙げられています。以下の8つをクリアすれば公開できるようになります。データのアップロード【未】5Submitサンプルデータのアップロード【未】6trainデータ・testデータのアップロード【未】7正解データの予測対象列のマッピング【未】8Submitサンプルデータの予測対象列のマッピングそれぞれの右側にあるリンクから各設定の画面に遷移することができます。4ー1)期限の設定[Host]タブの「Settings」から設定します。チーム人数・Submit回数の上限なども設定できます。招待用のURLもここで変更・確認ができます。Only」にしていると、参加専用の特殊なURLが発行され、このURLを知っている人しか参加できないクローズドなコンペになります。Changes」ボタンを押します。4-3)コンペ概要・データ・評価方法・ルール説明の設定[Overview]タブの「Description」でコンペの説明、「Evaluation」で評価方法の説明、[Data]タブでデータの説明、[Rules]タブでルールの説明を記載できます。Kaggleなどではしっかり説明が書かれていたりしますが、簡単な説明でも問題ありません。Page」ボタンを押すと新たな項目を追加することもできますが、追加しなくてもコンペの開催には差し支えありません。右上の「Edit」ボタンで編集し、終わったら右上に表示される「Save」ボタンで保存します。データのアップロード4-5)Submitサンプルデータのアップロード4-7)正解データの予測対象列のマッピング4-8)Submitサンプルデータの予測対象列のマッピング[Host]タブの「Evaluation」で設定します。評価に利用する指標を選択します。RMSE、AUCなど一般的な評価指標はもちろん、選択肢が非常にたくさん用意されています。これらからコンペ内容に適した評価指標を選択します。(ちなみに、今回の内輪コンペは回帰問題で、予測対象の値が指数関数的に大きくなる傾向があることからRMSLE(平均二乗対数誤差の平方根)を選択しました。)次に、正解データのCSVをアップロードして、予測対象とする列を指定します。ここで、PublicリーダーボードとPrivateリーダーボードの各評価に用いるデータの割合を設定することができます。デフォルトでは50:50になっています。データは設定した割合に基づいて、ランダムで自動的に分割されます。同様に、Submitのサンプルデータもアップロードして、予測対象とする列を指定します。version」ボタンを押すとアップロードファイルの選択画面に遷移します。Checklist」再確認します。checks」のメッセージが表示されたら準備完了です。Now」ボタンを押すと、コンペが公開されます。6.参加者に招待URLを伝えて、コンペを開始しましょう。工夫や注意すべきポイント・Public、Privateの分割を手動で実施したい場合コンペティションの性質によっては、PublicとPrivateをランダムではなくて、手動で分割したいケースがあります。特定のグループ単位で分割したり、時系列データにおいて日付を分けて分割するようなケースです。今回の内輪コンペでも特殊な条件で分割したかったため、手動で分割を行いました。正解データにPublicとPrivateを指定する列(Usage)を設けてアップロードをすることで、ランダムではなく指定に基づいて分割をしてくれます。提出締め切り後、遅くとも1週間以内にPrivateスコアを公開する必要があるようです。(1週間より未来日付を指定しようとするとエラーとなる。)今回の内輪コンペでは、提出締め切りから約2か月後の表彰会までPrivateスコアを公開しないことを検討していましたが、この仕様により、残念ながらそのようなことはできないことが分かりました。通常のコンペでは、1週間前までがチームマージ期限となることが多いように思いますが、このような機能は用意されていませんでした。内輪コンペということもあり、システム上の制約は設けずに参加者にコンペルールとしてお伝えすることにしました。業務多忙につきチームを抜けたいというメンバーが発生しました。(チームの人数上限があるため、チームとしては他のメンバーと入れ替えたいという要望)機能的にチームから脱退させるのは不可能であることが分かり、事前にチームマージについては慎重に進めること、とアナウンスしておくべきだったと反省しました。Kaggleに慣れている人であればチームマージは慎重に対応されると思いますが、不慣れな人も参加するコンペの時には、特に注意が必要だと思います。・クローズドな環境にするための工夫InvitationOnlyの設定にすることで招待用のURLが発行され、このURLを知っている人しか参加できない仕組みとなっています。このURLはボタン1つで無効化&再発行できますので、例えばコンペへの参加期間を最初の1週間だけと決めて、以後はこのURLをリセットしてしまえば、以後は新たな参加者が参加することはできなくなります。参加者を知っている範囲に絞りたいケースではこのような工夫が有効になると思います。・中間チェックポイントの設定と共有おおよそ1週間ごとに中間チェックポイントを設け、参加者同士のグループチャットにリーダーボードのキャプチャを貼付けて共有していました。どのチームも少しずつスコアが改善していき、また着実にsubmit数が増えていることが分かりました。参加者同士も接戦になっていることに気づいて意識しあったり、お互いの励みになっていたようです。開催してみての感想これまでの内輪コンペでは、お題とデータを提供した後、最終的な予測結果をもらって開催者側が手動で評価する、ということをしていました。今回KaggleCommunityを活用したことで、評価が楽になり開催時の負担が減っただけでなく、開催期間中の参加者同士のディスカッションや、ベースラインコード・EDA・新技術のお試し情報など、その他参考になる情報を次々に投稿してくださる方がいて、非常に有難く感じました。社内にKaggle経験者の方が意外といることが分かり、とても刺激を受けました。これからも定期的にこのような内輪コンペティションを開催することで、もっとKaggleの面白さを多くの方に知ってもらえたら良いと感じました。最後まで読んでいただきありがとうございました。この記事が少しでも参考になりましたら幸いです。16:30お問い合わせはこちらデータサイエンスに関して、お気軽にご相談ください。»このメディアについて野村総合研究所の現役データサイエンティストが最新の動向を伝えるためのブログです。reserved.引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。