Kaggle参戦記 〜入門からExpert獲得までの半年間の記録 & お役立ち資料まとめ〜
これはなに?
- デジタルマーケター 兼 プロダクトマネージャー 兼 データアナリスト (肩書長い…) の私が Kaggle に挑戦した約半年間の記録です。現時点で2つのコンペに真面目に取り組んで2つの銀メダル(入賞)を獲得出来ています。
- Kaggle挑戦期間を通して、有識者の素晴らしい資料に助けられたのでとても感謝しています。同じような志を持つ方に自分の記録が少しでも役に立てばと思い、有用な資料のリンク集に私のKaggle参戦記ポエムをつけてまとめてみました。
- 自分の得意領域で勝負しようと思ってテーブルデータのコンペばかり選んでいるのでDeepLearning系の話は全然ないです、すみません。
目次
プロローグ
初ガチコンペデビュー
スランプ → 一転して銀メダル獲得
2回目のコンペ挑戦
2個目の銀メダル獲得とその先
おまけ
('20/03/20追記) 入門に役立つ本
- このブログ記事を書いた後に、入門に役立つ本が出版されました。この入門記事ではkaggle-couseraをやる、と書いていますが、今から入門される方はまずはこの本で入門するのが良いかと思います。
- 上記の本で入門した後は、以下の本で実力を伸ばすのが良さそうです。
プロローグ
Kaggleへの興味の芽生え (2018年7月ごろ)
- 私はデジタルマーケティング畑の出身です。デジタルマーケは大量のデータを扱うことが要求されるので、データ分析やプログラミングのスキルは自然と身につきました。そのスキルを活かして一時期データアナリストもやってました。
- Kaggleのことは元々なんとなく知っていましたが、なんか凄いアンサンブル世界大戦が繰り広げられているだけの場所だと思っていました。そんなある日、「kaggle初心者の私が3ヶ月でソロゴールドを獲得した方法」というブログ記事を見つけました。
- このブログにはどのような流れでKaggleを勉強していったか、どんな資料が役に立ったか分かりやすく書かれていました。
- その後、このブログで知った「tkmさんのYoutube動画」を見て、なんとなくとっつきにくかったKaggleに一気に興味を持ち、ちょっとやってみっかーと思いたったのが2018年8月頃でした。
※ 自分はこの時点ですでにPythonや機械学習の基礎知識がありましたが、無い方はこの記事の末尾につけたような初心者本を一度読んでからやるのが良いかと思います。
初参戦 → 即撤退 (2018年8月)
- 2018年8月頃はHomeCreditというコンペがとても盛り上がっていました。
- データもなんとなく面白そうだったので、とりあえずKernel(参加者が自分のモデルを公開して議論する場所)からモデルをパクってきて参加してみました。
- ただ、モデルを改善するにあたり何から手をつけたらいいのかよくわからなかったので、全然手が進みませんでした。
- そのまま手探りで進めてみても良かったのですが、これでは良い結果は絶対に出ないだろうなと思い、まずはきちんと勉強することにしてすぐ撤退しました。
ガチ参戦に向けた修行 (2018年8〜10月)
- 自分自身の転職と被ってバタバタしていたので、以下の資料を使って3ヶ月ぐらいゆっくり勉強を進めました。
- How to Win a Data Science Competition: Learn from Top Kagglers
- Coursera の Kaggle 講座で、おすすめ資料として各所で常に話題に上がります。実際にKaggleで優勝している方々が講師をされており、非常に実践的な内容を知ることが出来ました。(これ無しで銀メダルを取れたイメージは全く湧きません)
- Validationに対する考え方や、過学習の避け方、木モデルと線形モデルに対する特徴量エンジニアリングの違いなどはこのコースを見ないと気づくことすらなかったと思います。
- いつかまとめたいと思っているのですが、自分の雑記メモはこの後も何度も見返しました。
- kaggle初心者ガイド
- Kaggler-jaというSlackグループの有志による初心者ガイドです。ここに載っている記事は一通り読みました。
- また、Kaggler-jaのSlackで話されている内容も示唆に富むものが多いのでぜひこちらから参加されることをおすすめします。
- Kaggle Meetup Tokyo #4 動画
初ガチコンペデビュー
初ガチコンペ…、のはずが。(2018年10月)
- 3ヶ月ぐらい勉強したところで、ちょうど良いコンペを見つけました。
- 「Google Analytics Customer Revenue Prediction」です
- 仮想のGAのデータが与えられて、売上予測せよというものでした。
- 私の出自はマーケターでGAチョットワカル( ̄ー ̄)ニヤリなのでこれは好都合だと思って喜び勇んで始めることにしました。
- しかし、データ眺めてさぁ始めようとおもったら
GAコンペ、TESTとTRAINのデータの質が違うとは聞いてたけど、なるほどなーという感想が芽生えつつあるよ!TRAINではdisplay ad全然つかってなかったのにTESTでは結構 (流入の5%強 )使ってるんだね!GDNのリマケ広告、最近強くなったもんね笑。
— ML_Bear (@MLBear2) 2018年10月8日
- その2日後にリーク(コンペ設計のミス)が発覚して
お、Discussion読んでたらすごい内容が出てきたよ。これ、GAのテストアカウントのデータ使ってるんだね。ということは…??!
— ML_Bear (@MLBear2) 2018年10月10日
- わずか10日後にコンペが大幅に変わってしまいました
Rコンペは完全な未来予測になったね!10/15までの来訪者の12月〜来年1月の再来訪による収益を当てろって!これはなかなか設計が変わって難しいね…。クリスマスもあるしなかなか大変だよ!でも、条件はみんな一緒なのでこれはこれでいいんじゃないかな。
— ML_Bear (@MLBear2) 2018年10月16日
- そのまま続けても良かったのですが、Leader Board (コンペ期間中のランキング表) が全く機能しないので、面白くなさそうだなと思って回避しました。
- Twitter界隈では年末ジャンボ宝くじと言われていましたが、真面目にやればそこそこ良い感じの結果が出たそうです。しかし、いま考えてもはじめてのガチコンペとしては回避して良かったと思います。
初ガチコンペ参戦 (2018年11月下旬)
- どうしたもんかねぇと思っていると、ほどなくして「Elo Merchant Category Recommendation」というコンペが始まりました。
- クレジットカードの購買データを用いて顧客ロイヤリティ的な数値を当てるコンペでした。
- マーケで使うLTVの概念とか流用できるかなー、と思ってよく考えずに参戦しました。
- 最後まで何を予測してるのかよく分からないコンペでしたが笑、結果としては以下の観点から初心者としては良いコンペでした。
- データサイズが大きくない
- Validationが難しくない
- 特別なドメイン知識を必要としない
ベースモデル作成(12月初旬)
- コンペ序盤はデータを眺めつつ、ベースとなるモデルを組んでいきました。
- データを眺めるのはpandas-profilingが圧倒的に便利でした
- ざーっとデータを見たあとはほぼマーケの実務と同じ感じでデータ分析しました
- データはすべてBigQueryに投入→粛々とSQL書いてデータ抽出
- 気になったところがあればExcelでコネコネ
- ベースモデル作成はKernelの写経から始めました。
- このKernelを改変したものをずっと使っていました
- はじめてコンペに参加する際は、KernelにめっちゃUpvoteがついているものを選べば大怪我はしないと思います。
- EloはValidationを気にせず↑のモデルのままで何も問題がなかったので、ある意味初心者に良いコンペだったと思います。
- 次のMalwareコンペに参戦したときに Validation すら作れず大変苦戦しました…。
- このKernelを改変したものをずっと使っていました
- 後々のことを考えてGCEにJupyter notebookを立てて作業していました
- 最初は8コアから始めて、最後の追い込みのときはは64コアとか使っていました。
- 64コアとはいえpreemptiveインスタンスだと非常に安く、GCPの無料体験枠で十分に収まりました。
- 参考になった記事: jupyter notebook on GCE
特徴量エンジニアリング(12月初旬〜中旬)
- ベースとなるモデルができたあとはひたすら基本的な特徴量を作りまくりました
- 各ユーザーの過去1ヶ月、3ヶ月、6ヶ月…の取引状況など、実務で使うような集計をたくさんしました
- Courseraで習ったような変換を行ったり、異常値の処理を作ったり有効な要素同士の割り算掛け算とかしました。(平均利用金額とか)
- 2〜10個ぐらいをモデルに追加 → スコア改善したらモデルに組み込みというのをひたすら続けました
- 良い特徴量を作っただけスコアが改善してとても楽しかったです
- このあたりでKaggleにハマり始めたと思います
- すこし応用的なもの
- 基礎的な特徴量を作った後は凝った特徴量を作って遊びました
- LDA / PCA / tSNE といった技術を活用してコネコネしてました
- この時期によく読んでた資料
- 特徴量エンジニアリングについて
- 実験の効率化について
特徴量選択(12月下旬)
- 特徴量作成も一段落ついてきたある日、Less is more というスレで高度な特徴量選択の有用性を知りました。
- その頃、簡単に思いつく特徴量はだいたい作って特徴量が300-400個ぐらいになっていました
- 減らしたほうが良いのかなと思って手を付けてみました
- 結果的にはうまく行きませんでした
- boruta / eli5 を使ってみましたが、CVにoverfittingしてしまうイメージでした
- 特徴量が300個ぐらいだと不要だったのかもしれません
- 次のMalwareも特徴量が200個ぐらいだったので使わなかった
- 参考になった記事
- borutaの解説記事
- 自分がborutaをやったあとに出た記事でした。先に読みたかった笑。
- eli5 permutation importanceの解説記事
- borutaの解説記事
ブレンディング(12月末)
- 特徴量選択に一通り失敗したあと、3つのモデルを混ぜ合わせて
スコアを上げるKernelを参考にしつつ、特徴量エンジニアリングだけじゃないスコア改善にトライしました。
- 各コンペの内容に合わせていろいろなモデルの混ぜ方を出来るようになると上位安定しそうです。
- Eloの場合も上位解法見てるとそれぞれ工夫されていました。
- 自分は↑のKernelと同じようなやり方しかしてなかったので金に届かなかったのかなとも思います。
- 後で見返してみたらこの時点で既に銀メダルを取れるスコアを出せていました
スランプ → 一転して銀メダル獲得
スランプ(2019年1月)
- 年が変わった頃から長いスランプに入りました。
- 基本的な特徴量をだいたい作りきったからか、全然スコアが上がりませんでした。
- この時期は何したかあんまり覚えていません笑
- 飽きてる
ELOコンペわからんぞ…!
— ML_Bear (@MLBear2) 2019年1月13日
outlier検出の精度を上げるべきか、それ以外のものか予測制度上げるべきか…。outlierによる誤差が大きいからそこ頑張ってみたくなるけど、そもそも予測が難しい。まぁよく出来てるっちゃよく出来てるんか…?
飽きてきたから他のコンペ見てみたい…。
- TargetEncoding失敗して凹んでる (今思えば避けられるだろ、っていう)
target を使った特徴量エンジニアリングをやってみてるんだけど「スコア下がるけどリークなだけ」なことが多くてぬか喜び感がハンパない…w 避けては通れないんだろうけどw
— ML_Bear (@MLBear2) 2019年1月14日
- いろいろ読んで試行錯誤はしました
- 【Kaggle】HomeCreditコンペ上位入賞者の手法まとめ(メモ)
- Kaggle Meetupの各回のスライド
アンサンブル(1月末)
- 特徴量エンジニアリングに飽きてきて気持ちが切れたので「後で使うもの先に作っておくか」と開き直ってアンサンブル(Stacking)のコードを書き始めました。
- 通常はコンペ1週間ぐらい前からやる作業だそうです
- EloではシンプルなAveragingはあまり効かなかった印象なので(異常値が丸め込まれちゃう?)、初コンペ参加者としてはこの時点でコードを書いておいたのは良い判断だったと思っています。
- 停滞していたスコアが如実に伸びてビックリしました
- 「コンペ序盤にアンサンブルで小手先のスコア向上しないほうが良いよ」(≒アンサンブルとかどうせみんなやるから、時間あるならオリジナリティがあることやれよ。)というセオリーの本質が少し理解できました。
- 勉強にはKAGGLE ENSEMBLING GUIDEを使いました。
- アンサンブルの基礎から応用まで丁寧に説明してくれている記事で、バイブルと言われているとのことです。
- 実際に学ぶべき点が非常に多く、次のコンペの時も合わせて何度も読み返しましたが、まだ2割程度しか理解できてない気がします笑
- その他に使った資料
- Stacked Generalizationで分類器のスコアをひねり出す
- ↑のGuideと併せて読むと理解が捗ると思います
- Simple Stacker LB 0.284
- Stacking実装は過去コンペのKernelを大いに参考にしました
- Owen Slide
- Stackingの勉強で見つけましたがその他の部分もとても参考になりました
- 実践多クラス分類
- アンサンブルでどんどんスコア上がる事例が載っていて面白かった
- Stacked Generalizationで分類器のスコアをひねり出す
Malwareコンペに浮気(2月初旬)
- Eloに完全に飽きたので他のコンペ(Malware)を覗き始めました
今のコンペ(Elo)が進まないことの気晴らしとして次のコンペ(マルウェア)のデータを眺めて滑らかに次のコンペに移行するライフハックを実践中…、ってこれやってたらいつまでも結果出ぇへんぞ…(´・ω・`)
— ML_Bear (@MLBear2) 2019年2月8日
- この後すぐEloコンペ再始動するのですが、その後も毎日少しづつMalwareコンペのKernel/Discussionに目を通し続けてました。
- その中でMalwareで使うベースモデルやアンサンブルモデルのKernelを見つけられました。
- そしてMalwareの銀メダルにつながってたので結果オーライでした
- 浮気用に使った資料
- 特徴量エンジニアリングの神スライド
- Malwareはほぼカテゴリ変数だったのでこの資料で色々な対処法を学びました
- lightgbm カテゴリカル変数と欠損値の扱いについて+α
- LightGBMでのカテゴリ変数の扱い方について学べました
- 特徴量エンジニアリングの神スライド
神Kernel現る(2月7日)
- 浮気した矢先にGrandMasterのraddarさんによる衝撃的な Kernel が現れました
https://t.co/n5zuHYDAg1
— ML_Bear (@MLBear2) 2019年2月8日
すげぇKernelきたw こういうリバースエンジニアリングみたいなのできるまじすごいw 世界は広い…!
Eloのtargetの数値の意味を Grandmaster が解き明かしてるKernel。サブスクリプション支払いになってる人を何人か見つけてきて、de-anonymized targetと突き合わせて証明してる。すごいという小並感しか出てこないwhttps://t.co/SOCxSpzuaj
— ML_Bear (@MLBear2) 2019年2月11日
- Eloコンペではいくつかの特徴量が謎の数値になっていました
- raddarさんはそれをリバースエンジニアリングしてキレイな数値にしてみせました
- 当時の感動を伝えられる語彙力が無いのが歯がゆいですが、世界トップクラスのデータ分析力を目の当たりにしてクラクラしました。
Eloコンペ再開 (2月中旬)
- raddar-Kernelにより今まで失敗していた特徴量(購入金額系など)の特徴量エンジニアリングに目処がつき、やる気が復活しました。
朝書き出したTODOタスクをポモドーロ・タイマーに従って淡々と消化するマンになる!
— ML_Bear (@MLBear2) 2019年2月9日
- SQLで特徴量をごりごり作りました
そしてその内容を元に特徴量候補をSQLでひたすら作るわたし…。
— ML_Bear (@MLBear2) 2019年2月11日
ギャップがすごいw
- raddarイベント以降、とてもはかどりました。
気分転換にMalwareのデータ見たりKernel読んだりしはじめたら、なぜかEloのスコアがぐいっと伸びたので、人間いかに気分転換が重要なのかがよく分かる…!(半分ぐらいはraddarさんの情報のおかげですが…)
— ML_Bear (@MLBear2) 2019年2月15日
初の銀メダル獲得(2/26)
- その後、(個人的には)滞りなくコンペは進み銀メダルゲットできました。(しかもTOP2%圏内でビックリ)
Eloコンペ、銀メダル取れました!(43 / 4221位)
— ML_Bear (@MLBear2) 2019年2月27日
初めて真面目に参加したコンペで銀狙って銀取れたの嬉しい! pic.twitter.com/iWUNYTlAQ1
- 最後の10日間ぐらいはほとんど何もできず、ただ下がっていく順位を眺めていました。
- みんなpublic LBにoverfittingしてるに違いないと自分に言い聞かせる日々でした
- 最終的には暫定130位まで落ちたが→43位(その後42位に)でフィニッシュでした
- 金圏にはかなり遠いかなと思っていたのですが、あと0.004で金でした
- 結果発表直後は「金圏、意外と近いな」と少し慢心してました(爆)
- が、その後上位解法を読んで「近くて遠いとはこのことか」と無事、謙虚に戻れました笑。
2回目のコンペ挑戦
2回目のコンペ参戦
- Eloはソロ銀取れたのですが最終の順位変動が結構大きいコンペで、Kaggleの実績がほとんどない自分はフロックっぽくて嫌でした。
- なので、フロック疑惑を晴らすのも兼ねて、Elo終了後の2週間で(それまで浮気していた)Microsoft Malware Predictionにチャレンジすることにしました。
- 結果としてはMalwareでもTOP2%で銀メダルを獲得できたものの、Elo以上に激しい順位変動があるコンペだったのでフロック疑惑は晴らせませんでしたw
- が、EloよりKernel/Discussionが充実しており大変勉強になったコンペでした。
- 細かい内容は振り返りにまとめた & 新しい資料少なめなので以下はサラッとです。
序盤から大苦戦 (2月下旬)
- Eloが終わる10日前ぐらいからEDA→初歩的なFEを実施していました
- Eloが終わったときからベースモデルを作成してテストしました
- Eloとの違いに大苦戦しました
Validation: CVとLBが合わない…
- EloのときはValidationが素直でした
- なので、Malwareに参戦して初めて、Courseraの先生が「羅針盤となるValidationを早期に作れ」と言っていた意味を理解できました。
- 以下のKernelや記事でAdversarial Validationの概念を初めて学んで試行錯誤しました (上手く行ったとは言ってない)
データ量: 計算全然終わらない…
- 特徴量エンジニアリングなどはTrainデータの一部で行ってました
- Trainデータ全量での計算はコンペ終了1週間前ぐらいから始めてました
- ↓全然楽じゃないことをまだ知らない少年だった頃の私のツイート
ELOで使ったコードリソースの大半がマルウェアでも使えるから楽だ…!MasterとかGrandMasterの人はこういうのの積み重ねがすごいんだろな〜!
— ML_Bear (@MLBear2) 2019年2月26日
ベースモデル作成と特徴量エンジニアリング(2月下旬〜3月初旬)
- 振り返りの内容と被るので割愛します。
- あまり時間もなかったので特に新しい資料などは探さず、ここまでに書いたものやコンペのDiscussionを読んでました。
Parameter Tunings
- MalwareコンペではLightGBMのパラメータチューニングが効きました
- Eloでも行っていたがあまり意味がなかった(なんかのKernelで凄く良いパラメータを引いていたようです)
- 使った資料
- 公式Docs
- LightGBMの公式資料は実践的でわかりやすかったです
- はじめてのKaggle体験記
- LightGBM関連の資料がたくさん載っていたので一通り「読み」ました (全て理解できたとは到底言い難い…)
- Kaggle Coursera の Week4
- 参考にはしましたが、後述するoptunaで自動化したのであんまり参考にはなってません…。
- CPMPさんのDiscussion
- 公式Docs
CPMPさんはパラメータチューニングをコンペの序盤と中盤の2回行うらしい。マルウェアは結構適当なパラメータでやってたけど、昨晩optuna回したら今までのパラメータと全然違うものが出てきて焦った (LBも上がった)。Validation概ね出来た時にやっておくべきだったかも…?https://t.co/HPyQk8PU9t
— ML_Bear (@MLBear2) 2019年3月5日
- ライブラリ
- optuna が非常に使いやすく、他のライブラリは検討もしませんでした
- 公式サンプル を多少変えただけで使えました
- 私は基本的にpreemptiveインスタンスなので(強制シャットダウンされたときも)最適化を途中から再開できるのも助かりました
- チューニング前後は以下の感じです
- optuna が非常に使いやすく、他のライブラリは検討もしませんでした
チューニング前
'num_leaves': 300, 'min_data_in_leaf': 75, 'boosting': 'gbdt', 'feature_fraction': 0.2, 'bagging_freq': 3, 'bagging_fraction': 0.8, 'lambda_l1': 0.1, 'lambda_l2': 0.1, 'min_child_weight': 50
チューニング後
'num_leaves': 1638, 'min_data_in_leaf': 1819, 'boosting': 'gbdt', 'feature_fraction': 0.202, 'lambda_l1': 50.300, 'lambda_l2': 41.923, 'min_child_weight': 8.56,
データ全量でのテスト(3/7〜)
- Malwareコンペのデータは重かったのでコンペ初〜中盤まではtrainデータを1/4ぐらいに絞っていろいろテスト
- trainデータ全てを使い始めたのはコンペ終了のわずか1週間前
- 自分は終了日を1日勘違いしてたので体感的には6日前
- 全量で回すとすぐにBest公開Kernel超えられたのでホッとしました
MalwareようやくアンサンブルKernel抜いたぞ…!って言ってもSingleModelで抜いたから後は突き放すだけなんだけど。それにしてもデータ重いいw#kaggle - because this RAM isn't going to use itself. https://t.co/8uH1H3BjpA
— ML_Bear (@MLBear2) 2019年3月8日
アンサンブル (3/8〜)
- 評価指標に合わせてアンサンブルの方法を変える必要があることをDiscussionで知りました
- KAGGLE ENSEMBLING GUIDEにも同じことが書いてあることに気づき、読み返しました。
Gibaさん曰く、AUCが評価指標のときはアンサンブルする前にrank化するのが良い…?まだ(個人的には)アンサンブル考えるタイミングじゃないので後でporto seguroのコンペのKernelとか読んでみよう。https://t.co/RwLBoQa7d4
— ML_Bear (@MLBear2) 2019年2月26日
- アンサンブル詳細は振り返りに書いたので以下サマリーです
- はじめはパラメータを変えたLightGBM3つでStacking: LB 0.698
- Kernelのdeep系FMをそのままStacking: LB 0.700
- DeepFactorizationMachine
- 喜びのTweet
- 危うさ: Kernelでは何も特徴量の前処理をしていなかったため、publicLBにoverfittingする可能性があると思っていた (実際していた)
マルウェア0.700到達!ただ、若干の危うさを残すモデルだからちょと怖い。FinalSub選択には注意しなきゃ。
— ML_Bear (@MLBear2) 2019年3月8日
- Kernelのdeep系FMの特徴量を自分のものに置き換えてさらにStacking: LB 0.701
- Kernelそのままのdeep系FMは消してRankAveraging: LB 0.700
- ファイナルsubmitには後ろ2つを選択
2個目の銀メダル獲得、そして…。
2個めの銀メダルでExpertに (3/14)
Malwareコンペ、Shakeすごすぎてワロタけど自分は無事2個めのソロ銀メダルをゲットできました!(Public34位→Priivate43位)
— ML_Bear (@MLBear2) 2019年3月14日
メダル確定したら Kaggle Expert だ!今回、Shakeがあってもなくても銀取れただろうし、銀はそこそこ安定して取れるようになったと思うので次は金とってMasterになりたい! pic.twitter.com/DNa0rV3UkM
マルウェアの銀メダル確定して、Expertになれました!(Expert牧場に入牧すると言うらしい笑)
— ML_Bear (@MLBear2) 2019年3月14日
次は金メダル獲ってMasterになりたい! pic.twitter.com/HhyuUwdN0z
今後は: 目指せKaggleMaster
- デジタルマーケやPMの業務に使えると思って機械学習の勉強がてらKaggleやり始めましたが、2つのコンペを経てKaggleそのものがとても楽しくなってきてしまいました。
- Kaggleについてはカレーちゃんさんのこのツイートが秀逸でした
kaggleは
— カレー🍛専業kaggler (@currypurin) 2019年2月26日
・チームプレイは楽しいしスコアが上がる
・ソロでもプレイ可能で優勝も狙える
・世界中の人が参加
・課金すると強くなるけど、課金だけでは強くなれない
・良い成績をとると、リアルにも良い影響
・kaggle勢とtwitter・リアルで交流すると更に楽しい
と奇跡的なバランスのネットゲームだな
- 幸いにもあと金メダル1個とれれば Kaggle Masterの称号が貰えるので、Master目指してやっていこうかと思います!
- って書いたけど金メダル簡単に取れたら苦労しませんw
- ということでこれからも自分のペースで頑張っていきます!
おまけ
まだ使ってないけど役に立ちそうなもの
- 遺伝的プログラミングによる特徴量生成
- K近傍を用いた特徴量抽出
- Linear Quiz Blending
- Linear Quiz Blending以外にも役立ちそうな高度なテクニックが満載
- FMを活用した特徴量作成
- Kaggle Past Solutions
- ちゃんと漁れば宝の山のはず
- FastRGF
- Courseraのセンセイ方も試してみる価値あるよ、と言ってたRGFの速い実装。
- Eloで試したけど上手くスコア出ず断念しましたが効くコンペもあるのかも
- Light LDA
機械学習の基礎を勉強する時に使ってたもの
Kaggle初参戦する以前に勉強していた時に役立った本リスト
Python機械学習プログラミング
- 機械学習の基礎の基礎から勉強できるテキストです。
- 実際にscikit-learnを用いたサンプルコードもほぼすべて載っているので、こちらで基礎固めを行いました。
- この本の内容が概ね理解できない、コード書けない、だと厳しいと思います。
PythonとKerasによるディープラーニング
- ディープラーニングに勉強のためにこの本を買いましたが、機械学習全般の話がとても平易な文章で書かれており、ディープラーニングよりも機械学習の全体の流れの勉強になりました。
- 高度な機械学習が行えるディープラーニングだからこそ、まずは簡単な手法でベースラインを作ってみる、などは、ディープラーニングに限らず様々な場面で基礎として有用だなと。
scikit-learnとtensorflowによる実践機械学習
- こちらもtensorflowを触ってみようと思って買ったのですが、前半の、scikit-learnを用いた機械学習の話のほうが役に立ちました
- アンサンブルの基礎的な考え方もこの本で学びました。
おわりに
- 超長文読んでいただきありがとうございました。(はたしてこの箇所まで読む人いるのだろうか…)
- 冒頭にも書きましたがKaggle界隈には有用な資料がたくさん転がっており、独力であっても勉強して結果を残すことが出来ると思います。
- 一度ハマれば勉強にもなるし楽しいし一石二鳥の趣味になると思います。
- この記事を読んでKaggleに興味を持ってくれる人が一人でもいて、どこかのコンペでお会いできたりすればこれ以上幸せなことはありません笑。