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