riiidコンペお疲れ様でした!!
riiidコンペで銅メダルが確定して、やっとkaggleエキスパートに昇格することができました。これまでにゲットしたメダルは、以下の通りです。
- 銀メダル(ソロ)1つ
- 銅メダル(ソロ)1つ
このブログでは、どのようにすればkaggle Expertにたどり着けるのか、体験を元に書いていきます!
riiidコンペの詳細は、以下にまとめたので詳しいことは以下のURLを参照してください!
【日本語】[Japanese] Riiid コンペに取り組む前の準備・随時更新
どうしたらエキスパートになれるか
- ひたすら、カグラーさんが公開してくれたノートブックを理解する
- 詰まっても立ち止まらない!ディスカッションをヒントに進める!!
- 1に検証、2に検証、3,4がなくて5に検証して成功パターンと失敗パターンを洗い出す
- カグラーさんをフォローしておく⇒たまにヒントをツイッターに投稿してくれるケースが有る
カグラーさんのノートブックを理解する
Expertを取った今でも誰か(カグラーさん)が書いたコードを参考にしないと解いていくのが困難です。まずは、カグラーさんが書いたノートブックを参考にして知識を得ていきます。
悪く言えば、複数のカーネルを参照して、いいところ取りをしていけば、銅メダル、良くて銀メダルをとれるという印象でした。
コンペの問題を出されて何もない状態から書いていくのは、かなりの知識と経験が必要と言えます。
詰まったらディスカッションをヒントに進める
ある程度進んでいくと、次何をしたら良いかわからなくなることが多々あります。
そんなときは、ディスカッションを見てみます。
90%は、そこでヒントを得ることができます。ヒントを得ることができたら、ひたすら試していきます。
1に検証、2に検証、3,4がなくて5に検証
答えは無い!思いついたら、全て試してみましょう。
結局は、検証し続けることです。
「スコアがわるい=スコアが悪くなる方法を知ることができた!」という気持ちが、kaggleで戦い続けるのに必要です。
うまく行かないことが多く、そこで辞めてしまったら、メダルに届くことはないです。
カグラーさんをフォローしておく
ツイッターでカグラーさんをフォローしておきます。
トップのカグラーさんをフォローしておくと、kaggleを解くための重要なヒントがでてくることがあります。
また、トップランカーのツイートを見ていると、自分もモチベーションが高まることがあります。
私は、riiidコンペで2位になった「まますたん」さんをフォローしていたのだが、「今まさに戦っている」ことが伝わり、それがモチベーションの継続に繋がったのかもしれません。
あとは、戦っているのは自分だけじゃない(ソロ参加のため)という気持ちになりました。
筆者がkaggle Expertになるまでの軌跡
- AIジョブカレで機械学習の基礎をがっつり学ぶ
- ジョブカレ最終日のコンペで最下位になる
- 最下位がモチベーションになりKaggleに本格的に挑戦する
- Kaggle開始から7ヶ月後にやっとの思いで銀メダルゲット
- 数カ月間も無メダルが続く
- そしてやっとriiidコンペでKaggle Expertになることができた
私は、数学課程を卒業したわけでもない普通のITエンジニアでした。
プログラミング経験(Python,PHP,JAVA,C言語,C++,Unity,C#など)はあってもAI(統計学、数理モデルなど)については全くのど素人でした。
そんな初心者の状態からどのようにしてExpertに到達したのか書いていきます。
AIジョブカレで機械学習の基礎をがっつり学ぶ
最初は、機械学習を独学で学ぼうとしたが、どこから手をつけて良いかわからず挫折。
そこで、機械学習の一通りのことが学べるAIジョブカレというAIに特化したプログラミングスクールに行くことにしました。
AIジョブカレはAI教育に特化したスクールで、AIの実務家が直接教えてくれます。
機械学習(教師あり学習、教師なし学習、主成分分析など)からディープラーニング(ニューラルネットワーク、画像関連、自然言語学習)まで一通りのことが学べます。
2週間に一回の授業なので(講座によって違いあり)、ゆっくりペースで学べます。
料金も10万円台と他のスクールに比べてお手頃価格になっています❗
ジョブカレで学んだことは学んだことは以下の通りです。
- 教師あり学習(回帰)
- 教師あり学習(分類。最尤法の理解はかなり苦戦しました)
- 教師なし学習
- アルゴリズムの実装と評価
- データの前処理
- 次元削除
- グループワーク
- データベースからSQLを使ってデータを取り出して学習させる
- パラメータチューニング
その甲斐もあり、kaggleを初めて取り組んだときも、全くの初心者の状態からの開始では無かったので取り組みやすかったです。
AIジョブカレには、講座最終日に機械学習のコンペがありました。
コンペの参加者は、当時の私と同じように機械学習について初心者です。
参加者よりは、勉強してきたつもりなので、上位に行く自信がかなりありました(笑)。
しかし、予測対象を間違えてしまい最下位をとってしまいました。
とても悔しい思いをしまい、その日は、寝れなかったことを覚えています。
そこで、kaggleでメダルを取ろう!
という気持ちになりkaggleに挑戦するようになりました。
kaggle開始から7ヶ月後に銀メダルを取ることができた
AIジョブカレで機械学習の流れを学んでいたため、他の人のノートブックを読んだときは何が書いてあるか大体理解できました。
それでも、ジョブカレで学んだ内容だけでは知識が足りなかった(特に、ニューラルネットワークの部分)ので、ひたすら知識のキャッチアップを進めてきました。
メダル取る前に良くやっていたのは、スコアが高いノートブックをコピーして、パラメータを適当にいじるのみでした。今考えると、それでメダルが取れるわけなかったと言えます。
銀メダルを取ることができたコンペでは、特徴量の意味、ドメイン知識を取得するようにして取り組みました。
その結果、銀メダルを取ることができたのではと思います。
あとは、スコアが悪くても最後まで諦めないことでした。
数カ月間も無メダルが続いてモチベーションがどん底に
銀メダルを取れたあと、数ヶ月間メダルが取れないことが続きます。
画像処理、自然言語、強化学習、テーブルデータのコンペに挑戦してきたが、いずれも結果(メダル圏外)が残せなく、やる気をなくすこともしょっちゅうでした。
特に、強化学習のコンペが難しく感じました。
強化学習のコンペでは、ほとんど何もできない状態でしたが、ディープラーニングについて難しいという感情が消えました。
結果的に、強化学習のコンペも無駄ではなかったと言えます。
メダルが取れない期間、心がけたことは、コンペで学んだことはブログに残すようにしていました。また反省点もアウトプットしました。
1つのコンペは数ヶ月の期間で開催されるため、メダルを残せないと何もやっていなかったようになってしまうため、何かしら残したい気持ちがありました。
Expertを決めたriiidコンペ
riiidコンペに挑戦することになった。
まずは、どんなコンペか調べたり、データの意味の調査をするようにした。
調査の結果は、以下のカーネルにまとめた。
日本語で書いたノートブックだが、意外に好評(ノートブック部門で金メダルになった)だったことに驚いた。
思いつくことはひたすら検証することを続けていた。
コンペ終了の一週間前は、仕事終わったらkaggleに取り組んだ。
普段の仕事終わりは、Youtubeでマコなり社長、マナブの動画を見る毎日でしたが、見ている余裕が無かったです。
使えるリソース(GCP、ノートパソコン)は、モデルを作るために常に稼働していた。
思考を止めても、リソースだけは動かし続けるようにしていた。
ただ、riiidコンペの結果を左右すると言われているtransfomerの知識の習得を怠ってしまいました。
理由としては、transfomerにどのように新しい特徴量を反映させて良いか、わからなかったからです。わかったところで、本当にスコア上昇に効果があるのかわからなかったため、理解を辞めて、自分がわかる範囲で解こうとした。
その結果、銅メダルで止まってしまったものと思われます。
とりあえず、一つの目標だったExpertの称号を取ることができたのでよかったです!
今後は!?
次目指すところは、kaggle masterですね!
金メダルを最低1回は取らないと取得できない称号ですが、1年以内に取りたいと思います!