Kaggleのコンペでシェイクダウン!モチベーションアップ方法とは

  • 2020年12月7日
  • 2021年11月11日
  • Kaggle
  • 190view

 

金メダルとったメイド

Mechanisms of Action (MoA) Predictionコンペお疲れ様でした!
最終結果どうだった?

 

メダル無しのメイド

publicスコア(テストデータの25%で評価)だと銀メダルだったのに、
シェイクダウンでメダルどころか、無印になってしまったよ。
この数ヶ月、メダルとるために時間を費やしてきたのに!時間返せ~。

 

kaggleあるあるだね~。
publicで1位でも奈落の底に落とされることがあるから、気を落とすなって。
時間を費やしたと言うことは、それだけ何かを得たはずだよ!
一度は通る道だから、次頑張れ!

 

わかった・・・。
しかし、モチベーションをどのように維持したら良いのかわからないな。

 

結論から言うとモチベーションの維持の方法は以下の通り

 

  1. なぜシェイクダウンしてしまったのか原因追及して書き出す
  2. 勝者を祝う心の余裕を持つ
  3. 2,3日以内の短期間のアウトプット
  4. 寝ること
  5. 作業場所を変える

 

この記事では、なぜ上記のような答えなのか述べていきますよ!

 

筆者ってどんな人?

つい最近までは、UnityとPHPでスマホ(ios,Android)のゲーム開発をしていました。後輩が入るまでは、1人でクライアント側(Unity,objective-c,Java)とサーバーサイド(PHP,Cakephp,Redis,MySQL)まで実装するという開発体制で大変でしたが、そこでたくさんのことを学ぶことができました。

 

ゲーム開発の5年間で特に学んだことは、ユーザーを怒らすと大変面倒なことになる。しかし対応次第では180度態度が変わり熱烈なファンになることでした。

 

最近は、Pythonを使ったWeb開発をしています。

WEBシステムには、今後、機械学習(自然言語)も採り入れることになっているため、楽しみであります。

 

Kaggleに興味を持ったきっかけは?

Kaggleに興味を持ったのは、カレーちゃんが開催(現在も開催しているかどうかは不明)する、kaggleチュートリアルに参加したときです。

 

kaggleの概要説明から、タイタニックコンペで実際にカーネルを提出するところまで実践するという大変有意義な講義でした。他の参加者とも交流ができて楽しかったです。

 

Kaggleの挑戦のきっかけは、AIジョブカレの卒業コンペで、予測対象を誤りビリを取ってしまい、消化不慮の状態になってしまったのがきっかけです。

卒業コンペで上位2位に行くつもりだったのに、結果を聞いたときはショックで寝れなかったことを覚えています。

 

関連記事

    AI見習い メイド 機械学習に興味持って、「入門詐欺」と呼ばれる入門書を買って勉強したんだけど、数式のところで挫折してしまったよ。 […]

 

Kaggleの実績としては、1年間で10個ほどのコンペに参加して、銀メダルを1つ手に入れた程度です。

 

悪夢のシェイクダウンで400位以上も落とされて無メダルに

 

最終結果が出る前のPublicスコアでは102位のところにいました。シェイクダウンが起きても余裕で銀メダル圏内にいると思っていました。

 

 

いざふたを開けてみると・・・。

なんと512位!

 

「なんじゃこれは!いったい何が起きたんだ!!」

 

ショックを受けないはずがありません。

 

 

コンペ終了前夜はウキウキ気分だった

 

コンペ終了一週間前、publicスコアで4000人中70位に上がったときは、

「おれすげーーついに、全体の2%にまで上り詰めたぜ!」

「kaggle初めて1年くらい経つけど、自己最高記録だ!」

「シェイクが起きてもさらに100位以上も転落することは無いだろう。やっとの思いでエキスパートに入れそう」

と、うきうき気分だった。

 

もうやることはほぼない、より点数を上げるために適当にパラメータをいじる程度だった。

 

しまいには「これでシェイクが起きれば、もしかしたら金メダル圏内に入れるんじゃね?」

とまで慢心したのでした。

 

今思うと恥ずかしい限りです。

これでメダルは取れるわけ無いですね・・・。

 

最終結果が出たあと、トップ層はどのようなソリューションを解いていたのか気になったので確認してみた。

 

これでメダル取れていたらただの儲けもんだったと言う感想

 

4位を取った「Kanna Hashimoto」さんのソリューションを画像のみですがみてみましょう。

 

以下の4th Place Solutionより引用

https://www.kaggle.com/c/lish-moa/discussion/200808

 

 

「明らかに僕が作ったものとちがう!アンサンブルで使っているモデルの数が違う!

アンサンブル以外にも、たくさんのことを試していることがわかる。たしかにこれなら金メダルに行けるはずだ・・・」

 

僕がやったことと言えば、ディスカッションで取り上げられたものを取り入れたものばかりだった。

 

  1. PCAで列に対して特徴量を増やす
  2. PCAを利用して行に対して特徴量を増やす(唯一、自分であみだしたもの)
  3. RankGaussでさらに特徴量を増加させる
  4. 平均値、合計値なども特徴量として追加
  5. ニューラルネットワークで学習させる
  6. TabNetも追加して学習させる
  7. ニューラルネットワークとTabNetを組み合わせたアンサンブル
  8. 以上!

 

金メダルをとった「Kanna Hashimoto」さんのソリューションを見たとき、これはメダルに届くわけが無いと思ったのでした。相当時間を費やしたのでしょう。

 

周りを見ているとすごい。

チーム全体で銀メダル24個のチームもあった。

おそらく、何度挑戦しても、金に及ばないところで悔しい思いを何度もしてきたと思う。

最終的には、そのチームは金を取ることができていました。改めて努力されている方がたくさんいることに気付いた。

 

「まだまだ甘いな。こりゃぁ、勝てるわけ無いな」という思考になり、「しょぼーん」となっていたモチベーションは、回復したのでした。

 

結果的に、どのように戦っていけば良いか、より明確になったので、MoAコンペは大きな学びになりました。

 

kaggle始めた頃は、トップ層のソリューションをみても

「これどういう意味だろう?わからん!」で終わらせていましたが、

今ではソリューションの内容もわかるようなり、過去に比べると良くなっていることが実感できます。

 

本題!モチベーションを維持する方法

本題のモチベーションを維持する方法にふれます。

 

シェイクダウンからのモチベーション維持

 

なぜシェイクダウンしてしまったのか原因追及して書き出す

シェイクダウン後に「あーー落ちた、オワタ😭」で終わってしまうと、原因がわからずモチベーションを回復するのは不可能です。

 

シェイクダウンする理由のほとんどは、汎用性があるモデルを作れなかったからです。

よって、トップ層のソリューション(解法)を参考にして、何が違うのか原因を分析します。

 

原因分析をしたら、頭の中で終わらせるのでは無く、外部にアウトプットします。

私の場合は、資産を目に見える形で残したいと言う気持ちから、ブログに反省点などを書いて公開するようにしています。

 

これを読んでいる人には僕みたいに「ここまで頑張ればいいだろう。運良ければ金メダルにいくんじゃね?」みたいな考えにはなってほしくないと思います😊

 

ブログにまとめる方法は、思考を整理できます。

次の行動パターンが見いだせると、モチベーションに繋がります。

 

もしブログに書く時間が書ければ、Twitterに反省点をツイート、メモ帳に書くでも良いと思います。

 

 

勝者を祝う心の余裕を持つ

Twitterで、#kaggleで検索すると「優勝しました!」「金メダルに入りました」がチラホラあります。それをみると「おれ、負けたし、見る気しない」と思うかもしれません。

 

よく考えてみると、そのようなツイートをしている人は10人にも満たないと思います。Moaコンペだけで見ると、4000人以上の参加者がいて、金メダルはそのうちの全世界の20人のみです。かなりの少数のツイートだと思います

 

また、金メダル取った人の中には、kaggle初めて3ヶ月でソロ金を取ってしまう人(極少数)、数年かけてやっと金に届いた人と様々です。

 

良い成績を取った人にお祝いのコメントを残してあげると、意外に心の余裕が生まれるものです。

 

 

コンペ中のモチベーション維持方法

 

短期間のアウトプット

コンペは数ヶ月間の期間で開催されます。

(publicスコアがあるとは言え)最終結果が出るまで、モチベーションを維持するのは難しいです。

そこで短期間(2,3日以内)のアウトプットがおすすめです。

 

僕が実際にやったアウトプットを紹介します。

 

その1:カーネルの公開

 

短期間のアウトプットとして、kaggleのカーネル(Notebook)の公開がオススメです。

公開すると、他の参加者からの反応がすぐに来るからモチベーションも上がりやすいです。

 

反響(イイネみたいなもの)が良いと、短期でNotebooksNoviceのメダルが取れます。

 

俺の場合は、以下のような日本語のカーネルを公開しました。

 

【日本語】[Japanese] Riiid コンペに取り組む前の準備

 

MoAコンペは、「作用機序」「遺伝子発現」など専門用語が多すぎて、回答しずらい環境でした。

 

僕の場合は、日本語に翻訳してくれたものがあったけど、前知識がそもそもなかったのでその情報が欲しかった。

どんなコンペを戦っているのか人に説明できなかったので、説明できるようにしたかった。

アウトプットを通して、より整理できてモチベーションが上がりました。

 

その2:新しい知識を得たらブログで公開 

コンペ中に新しい知識を得たら、コンペに直接関係ない部分でブログに公開。

私の場合は、PACを利用して行単位で特徴量を追加する方法を編み出した(ヒントはネット上にあった)ので、それをブログ化した。

ブログにするのは面倒だが、短期間のアウトプットになるし、知識の整理になるので良かったと思います。

 

 

寝ること

疲れたら寝ること。

わからないことをただ数時間も悩んでいても進みません。

寝て起きると「あっそういうことか〜」と以外にすんなり知識としてインプットされることが多いのでおすすめです。

 

作業場所を変える

同じ作業スペースだけ飽きてくる。

そんなときは、作業場所を変えてみるのがオススメです。

 

僕の場合は、以下のようなことをやります。

  1. 家の中なら部屋を代えて気分転換
  2. ドリンク飲み放題のファミレスで作業
  3. スタバなど落ち着いた感じのカフェで作業
  4. 「Remo Cafe」というコアスペースとCafeのいいどこ取りをしたところで作業
  5. コアスペースで作業する
  6. もくもく会に参加してもくもくする
  7. 野外で作業

 

家以外の場所で作業するとき、作業場所に行ってから「何やるか?」と悩むとそれだけで時間のロスになるので、

行く前に何をやるのか決めてから行くのをオススメします。

 

野外で作業の補足

話しが少し脱線しますが、僕は、外に行けるときはパソコンをもって野外で作業をします。

特に多いのが、写真のような河川敷です。

つかれたときは、自然を見渡せるので、すぐに気分転換できます。

 

 

まとめ

以上、モチベーションの維持について書きました。

簡単にまとめると以下のとおりです。

 

  1. なぜシェイクダウンしてしまったのか原因追及して書き出す
  2. 勝者を祝う心の余裕を持つ
  3. 2,3日以内の短期間のアウトプット
  4. 寝ること
  5. 作業場所を変える

 

 

最も大事なことは、僕が機械学習の習得に苦しんでいるとき、AIジョブカレの講師が言ってくれた「あきらめないこと

それにつきます。

関連記事

    AI見習い メイド 機械学習に興味持って、「入門詐欺」と呼ばれる入門書を買って勉強したんだけど、数式のところで挫折してしまったよ。 […]

 

付録:独学で挫折した人向け・AI(機械学習)を短期間で学ぶ方法

独学で挫折してしまった
本買ったり、YoutubeでAIを勉強していたんだけど、結局から何を勉強してよいかわからず挫折してしまったんだ。どうしたら解消できる?

 

独学で挫折してしまった人向けに、PythonとAI(機械学習)について、短期間で効率的に学ぶ方法を紹介します。

それは、以下のようなサービス、プログラミングスクールを利用することです。

プログラミングスキルを習得している人でも機械学習の習得は、難しいため、独学で迷うよりは、プロに教えてもらったほうが遥かに最短経路で身につけることができます。

\AI(機械学習)を学べるプログラミングスクール5選/

イメージ スクール名 学べる内容 受講形式 特徴 料金めやす オススメする人
.Pro(ドットプロ) WEB開発
機械学習(AI)
教室授業 ✔教室による対面授業
✔WEB開発と同時にAIも学べる

AI×Django コース
24週間
¥517,800円

✔仲間と一緒に学びたい
✔AIありのWEBシステムを作りたい
Aidemy Premium Plan WEB開発
機械学習(AI)
オンライン ✔申し込んだ講座以外のカリキュラムも学べる
✔給付金制度を利用して最大70%支給あり

AIアプリ開発講座
12週間
¥528,000円

✔AI(機械学習)について広く学びたい
✔給付金を利用して実質70%引きで学びたい

AIジョブカレ 機械学習(AI)
数学、統計学
教室授業、オンライン ✔10万円台から受講可能
✔数学や統計学を学びたい人向けの講座あり

機械学習講座
16週間
¥132,000円

✔Python,数学、統計学など基礎から学びたい
✔授業形式で講師から学びたい
✔受講料を抑えたい
テックアカデミー WEB開発
機械学習(AI)
Unityでゲーム開発
オンライン ✔AI以外にPHP,Unity,C言語など、主要な言語を学べる
✔料金が10万円代から

Python+AIコース
8週間
¥316,800円

✔AI(機械学習)以外にも学びたいものがある
✔できる限り安い金額で学びたい
✔マイペースで学びたい
侍エンジニア 機械学習(AI)
ブロックチェーン
オンライン ✔現役エンジニアが入学から最後まで寄り添ってサポート
✔ブロックチェーンも学べる
AIコース
12週間〜
¥698,000〜
✔マンツーマンで教えてほしい
✔ポートフォリオのサポートが欲しい
✔ブロックチェーンにも興味がある

>>より詳しく5つのスクールについて知りたい方は、以下をクリック!

 

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG