feature image

2023年9月26日 | 活動紹介

traP コンペ 2023 夏 sponsored by ピクシブ株式会社 運営後記

この記事の内容

はじめに

こんばんは! @abap34 です。情報工学系のB2で、アルゴリズム班Kaggle部の部長をしています。

さて、Kaggle部では、かねてより告知の通り、8/20~27の七日間、部内データ分析コンペを開催しました。

~ traP コンペ 2023 夏 sponsored by pixiv ~ を開催します!
こんにちは!!!!!!!! アルゴリズム班Kaggle部部長の@abap34です。 昨年度の夏休みも開催したKaggle部主催のデータ分析コンペですが... アルゴリズム班にKaggle部を設立し、初心者向けデータ分析体験会を開催しました!この記事の内容traPアルゴリズム班の紹介データ分析コンペ/Kaggleとは?初心者向けデータ分析体験会開催記今後についてtraPアルゴリズム班の紹介こんにちは! 22Bのabap34です。traPではアルゴリズム班に所属しています。 traPのアルゴリズム班では、多くの人が「競技プログラミング」に熱心に取り組んでいます。「競技プログラミング」というのは時間…

最終的に37チームから、772件ものサブミッションがあり、Discussion・Codeも32件の投稿と、とても盛り上がりました!

コンペは、情報工学系M2の@YumizSuiさんが Public / Privateともに中盤から首位を守り抜き、見事1位を獲得されました。おめでとうございます!

この記事はこのコンペの運営後記です。

部内コンペは開催をはじめて2年目になりましたが、相変わらず反省ポイントがたくさんあります。コンペ運営の知見みたいなものはなかなか転がっていないので、せっかくなので運営後記を残しておこうかと思います。

開催までの経緯

Kaggle部では、六月半ばから七月にかけて、新入部員向けの教育の一環として機械学習講習会などを開催しました。

Kaggle部で機械学習講習会を開催しました!
こんにちは。情報工学系B2のabap34です。最近は贔屓にしている球団が弱すぎるのが悩みです。 今はアルゴリズム班のKaggle部というところの部長をしていて、その活動として6月半ばから7月初めまでの約二週間、「機械学習講習会」を開催しました。この講習会は全7回に渡り、10時間近くの講義と400ページ以上にわたる資料に加えサンプルコードと実装の課題の提供など、なかなか大型の企画になりました。そこで、今後同じような企画を考えている人向けに、またKaggle部の宣伝も兼ねて記事を残してみることにしました。結構頑張ったので、ぜひ最後まで見てもらえると嬉しいです。 〜開催さて、traPのアルゴリズム班…

資料の公開が、なかなか修正をする やる気 暇がなくできていないのですが、一旦ここにスライドだけ置いておきます。(https://www.abap34.com/ml-lecture/slide.html)

さて、機械学習講習会はどちらかというと理論よりで、実践的な部分はやや不足していました。

そこでKaggle部では、昨年度も実施した「データ分析コンペ体験会」をより発展させて、今年度も部内のデータ分析コンペを開催することにし、実践的な知識・Kaggleのようなデータ分析競技のおもしろさなどを布教することにしました。

アルゴリズム班にKaggle部を設立し、初心者向けデータ分析体験会を開催しました!
この記事の内容traPアルゴリズム班の紹介データ分析コンペ/Kaggleとは?初心者向けデータ分析体験会開催記今後についてtraPアルゴリズム班の紹介こんにちは! 22Bのabap34です。traPではアルゴリズム班に所属しています。 traPのアルゴリズム班では、多くの人が「競技プログラミング」に熱心に取り組んでいます。「競技プログラミング」というのは時間内に十分高速に動作するプログラムを構成する競技で、ICPC(国際大学対抗プログラミングコンテスト)のような国際的な大会も開かれています。(多くのtraP部員がこのような大会で活躍しています!) もちろん大学からコンピュータの勉強を始めた、と…
昨年度の開催記事です.

するとちょうどそのタイミングで、ピクシブ株式会社のエンジニアの方から「Kaggle部の活動を手伝わせてほしい」、というお声がけがあり、ミーティングさせていただいた結果、このコンペをスポンサーしていただくことになりました!

より具体的にはコンペに参加した部員の一部向けに、オフィス見学やピクシブ社で機械学習エンジニアをされている方々とお話をさせていただく機会などをご提供いただきました。

「機械学習とかKaggle興味あるけどきっかけがなぁ...」と思っている、Kaggle沼に落ちる淵にいるサークルメンバーがたくさんいることは感じていて、このようなプラスワンの機会があるとそのような部員をKaggle沼に蹴飛ばす最後の決め手になるので、これはチャンスだぞ〜と思いながらコンペの準備を始めました。

意気込む男

コンペの準備と大事件の発生

今回のコンペは、初心者でも楽しめるよう、以下のような目標をたて、コンペに使うデータセットを探し始めました。

この条件を満たすのは基本的にはテーブルデータだろうということで、KaggleのDatasetsからテーブルデータを絞り込み、頭からスクロールしてはクリックという作業を延々繰り返します。

結局、参加者にとって身近なテーマでもあり、ちょうど都合よくピクシブ社の方でもよく取り組まれているタスクに近しいということで、ユーザのアニメへのレビューデータのデータセットである、いわゆるアニメデータセット

Anime Recommendations Database
Recommendation data from 76,000 users at myanimelist.net

を使い、「アニメのレコメンド」を題材にしようということになりました。

さて、データの選定が落ち着き、大学がテスト期間に入ったこともありしばらく作業から離れていたのですが、いよいよ夏休みも間近となり開催も迫ってきたところで、ある日Twitterを見ていると...

すいません。atmaCupさんと、ネタが被りました。

実は、被ると、まずいです。

ということもあって、このままではかなりレベルの高いatmaCupさんのsolutionをみんなでなぞるバトルになってしまう可能性が高くなってしまいます。

一旦他のデータセットなども検討したのですが、最終的にはこれから準備しても間に合うか不透明ということで、

という方針で行くことになりました。具体的にはユーザのデータを充実させたり、テキストデータを多く入れたりと、「別ゲー」になるよう頑張りました。コンペ終了後に上位入賞者の部員に話を聞くと「atmaCupの存在には気づいていて、同じじゃんと思っていざ中身を見たら、結構違った」とのことで、コンペが破綻するような状況は回避できたようです。よかった...

さて、コンペの設計がなんとかなったところで次にコンペ周りのサポートについてです。部内コンペ、それも初心者の人にも積極的に参加してほしい!という性質のコンペですから、しつこいくらいに初心者サポートをやるぞ!というのは最初から決めていました。

まず行ったのはコンペ初日の「ベースライン作る配信」です。

これは実際にDiscord上で配信を行いつつ、簡単なsolutionを作るところを配信するという取り組みです。そもそも pandasをはじめとした周辺ライブラリ等にも慣れてない部員も多くいるだろうという想定で、そのあたりの導入からかなり丁寧に行いました。

さらに、配信を見れない人や自分のペースで進めたい人もいるだろうということで、同じ内容を動画にすることにしました。

さて、先ほど

プラスワンの機会があるとそのような部員をKaggle沼に蹴飛ばす最後の決め手に

と書きましたが、今回はプラスワンの機会として

ずんだもんに登場してもらい、コンペの実況プレイをしてもらいました。

df.loc を使うずんだもん

作成したNotebookをCopy & Editするところからコンペをスタートしてもらうことで初心者の人も比較的順調に滑りだせたかと思います。

さらに、順位争いを盛り上げるために順位お知らせbotも用意しました。親切にもkaggle apiで順位表が取得できるので、順位の更新を検知して部内SNSに投稿します。

そして最後がディスカッション関連です。

コンペの盛り上がりを大きく左右するディスカッションですが、ディスカッションという文化自体が競技プログラミングなどではあまりなく、盛り上がるかやや心配です。

そこで、ディスカッションを盛り上げるための施策として「ディスカッション賞」も設けました。投稿のうち、

をピクシブ社様の方から表彰してもらうことにしました。

upvote の上位2人でもよかったのですが、むしろ入賞基準があいまいな方が「コンペ終盤だけど、ワンチャン....」 とか、「実装とか下手くそだけど、ワンチャン...」みたいな感じで投稿が増えるんじゃないかと妄想してこんな基準を設けました。

さらに、コンペ終了後も感想戦で盛り上がって欲しいところです。

そこで、感想戦を盛り上げるための施策として、上位入賞者にはsolutionの公開をルールで義務付けることにしました。

コンペ開催!

さて、色々ありましたがなんとか開催まで持っていくことができました。

最終的には、

が与えられるので、

(アニメ, ユーザ) の組から評価値(10段階) を予測せよ、というタスクになりました。

内容としては基本的なレコメンデーションの手法が使える感じですが、評価文には実は全体の評価値とは別でより詳細な評価値 (アニメーション:3点、物語:8点、総合:6点 のようなもの) が入っていて色々な特徴が取れたりするところや、テキストデータがいろいろなところで入っていて、うまくこの辺りの表現を生かしていくところにやり込み要素がありそうなところが結構お気に入りです。

いざコンペが始まると後は見守ることが残りの運営の仕事です。

見守りの結果、最終的には、37チームが参加し、32個のディスカッションの投稿、772件のサブミッションと、大盛り上がりでした!

コンペの結果は、

優勝者: @yumizsuiさん (情報工学系 M2) (Public 1位)

第二位: @trastaさん (情報通信系 B3) (Public 2位)

第三位: @toshi00さん (情報工学系 B4) (Public 4位)

となりました!おめでとうございます!🥳🍾

yumizsuiさんは中盤から首位をキープしていて、なんと5個もの公開カーネルを投稿し、Public/Privateともに首位と見事な完全制覇でした!solutionも実験量を含めかなり完成度が高かったです。「そのユーザがレビュー数が多い上位28人か」という特徴量がユニークで印象に残っています。おめでとうございます!

trastaさんは他の参加者の人があまり取り組んでいなかった / あまりうまくいっていなかったNNをアンサンブルに組み込んでいたのが印象的でした。おめでとうございます!

toshi00さんは先ほど書いた評価文の特徴量をかなり丁寧に拾っていただいていてにっこりしました。また、「ポケモンかどうか」という特徴量が個人的にはめちゃくちゃウケました。おめでとうございます!

なお、表彰式の様子(スライド)は、

https://www.canva.com/design/DAFsqB3ENhg/Uyurnt23NIZYUWfMpIwR7A/view

から見ることができます。

そのほか、

4位. yuyu5510 さん (情報工学系 B3)
5位. konkoma さん (情報工学系 B2)
6位. shirasu_oisi さん (情報理工学院 B1)
7位. cp20 さん (情報理工学院 B1)
8位. urtun_trap さん (情報工学系 B4)
9位. ponjuice さん (情報理工学院 B1)


という結果になり、新入生からも3人が上位入賞しました!
おめでとうございます!

よかったこと、反省ポイント

ここまで書いてきたように初心者の人を含めてコンペを楽しめるように色々施策を打ちました。ここでは少しこれらの効果を振り返ってみようと思います。

まず、初心者向け配信・Starter Notebook・ずんだもん(?) は、どれもほとんどのKaggle初心者の参加者に見てもらえ、かつStarter Notebookを元にして徐々にスコアを上げていくという感じで取り組めてもらったことで、「バグって何もできないままコンペが終わってしまった...」という参加者が出てしまうことはかなり防げたと思います。

また、順位変動お知らせbotについても、どうしてもKaggleというサイト上でやっている影響でサークルのメインのコミュニケーションの場である部内SNSに盛り上がりが伝わりづらいところを、このBotの投稿とそれへの反応 (主に、順位が上がった人による「やったぜ!」という引用) によってかなり宣伝ができたと思います。
一般のコンペでも、Twitterや参加者Slackなどで同様のbotを稼働させるのはかなり良さそうと感じました。

また、ディスカッション賞・上位の参加者のsolution公開義務化は、今のところ完全にやってよかった!と思っています。どちらもコンペ中・終了後の盛り上がりに非常に大きく貢献してくれたと思います。
(実は去年のコンペでは、自分(運営)以外からのディスカッションの投稿がなく、根に持っていたのでリベンジを果たせてよかったです。)

さて、肝心の反省ポイントですが、Starter Notebookを宣伝しすぎたのか、solutionの多様性が若干低めになってしまったかな、と感じています。

Starter Notebook内では、例えば「欠損値は適当にこれで埋めます〜埋め方を考えてみてね」「モデルは適当にこれを使います〜 他にもこんなのがあるので試してみてね」というような感じの触れ方はなるべく至る所でしたのですが、むしろそれによってそれ以外の場所で工夫してみようという発想が生まれにくかったような感じがしました。Starter Notebookにもっと色々な手法に派生させていくための仕掛けを仕込んでおくべきだったかと思います。

また、それに加えてコンペ中盤などで適切に示唆を与えるノートブックを投下するなどしてある程度コンペの流れを制御したりするのも良さそうかなという感じがします。とはいえ、もちろん競技性としてはあまりにも運営が関与するのはイマイチですし、運営する人がどれくらい初心者をサポートしたいかによりそうです。

運営の感想

昨年に続いて二度目のコンペ開催ですが、一気に本格的になり、規模の面でも盛り上がりでも大きくステップアップできました。

ここだけの話、1年前、Kaggle含め機械学習をやる気満々でtraPに入部したのですが、当時はやっている人が本当に誰もいなく、かなり「(大丈夫か...?)」と思っていたのですが、今や40人近くがコンペに参加してくれるようになってとても嬉しいです。

部内SNSでの "Kaggle" というワードの発言数 (日数あたり、14日間の移動平均) を調べたのですが、じわじわと盛り上がり、コンペ開催期間中に爆発(?)していてとても満足です。

最後になりますが、スポンサーをしていただいたピクシブ株式会社様にはデータセットの選定でも相談に乗っていただきとてもお世話になりました。コンペ後のオフィス見学・参加者との交流でもコンペのタスクであるレコメンド関連のお話を色々と伺わせていただきました。本当にありがとうございました。

(個人的には、オフィス見学に伺わせていただいた際に、推しの直筆サインとツーショットを撮れたので、全ての労力がペイされました。本当に本当にありがとうございました。)



さて、このコンペですが、今後もKaggle部で毎年継続的に行なっていく予定です。

この記事を読んでいる東工大生・未来の東工大生の方は、ぜひtraPに入部して年々パワーアップしていくコンペに参加してください!

(また、Kaggle部と一緒に何かしたい!という方は、@abap34のTwitterまでお気軽にご連絡ください!)

以上です。

abap34 icon
この記事を書いた人
abap34

大岡山

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2017年11月14日
IBIS2017参加報告
Keijan icon Keijan
2022年4月7日
traPグラフィック班の活動紹介
annin icon annin
2021年8月12日
CPCTFを支えたWebshell
mazrean icon mazrean
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2021年3月19日
traPグラフィック班の活動紹介
NABE icon NABE
2023年7月13日
アルゴリズム班はやとき王選手権「競(けい)プロ」を開催しました!
abap34 icon abap34
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記