『kaggleのチュートリアル』を読んでみた(賞金稼ぎへの道4冊目「サブミットに挑戦しよう!」)
こんにちは、あおいもみあげですじゃなくて、あおもみです。
「敵を知り、己を知れば百戦危うからず」とかの有名な孫氏も言っておりますとおり、今回は、敵(カレーちゃんKaggle)を知り、今後の作戦を練ろうというところです。
そこで、今回はカレーちゃんが書いたという、Kaggleのチュートリアルなるものを、私が完読し、Kaggle初心者である私が、上から目線で初心者の目線から、レビューしていくという画期的な企画です。
Kaggleに参加するのに、壁となるもの・・・それは、ほぼ全てが英語で書かれているというところですかね。この本の第1章を読めば、割と丁寧に書かれているため、kaggleの概要がわかり、サブミットの方法が確かにわかりました。
だがしかし、甘い甘すぎるぞ、カレーちゃん(ただ言いたいだけ)
私のような初心者は高スコアのカーネルを見つけたら、これそのままフォークしてサブミットしても大丈夫なのかなという疑問がまず浮かぶところですが、そういう良さそうなカーネルをフォークしてからのそのままサブミットする方法が書かれていないではないか!くっ、なるほど、そうか、カーネルをフォークしてそのままサブミットするという姑息な手段は自分は取らないので、そんなものは紹介する必要がないということか。たしかに、カーネルをフォークしてそのままサブミットするなど、中国版のドラえもんのようなひどいパクりみたいなものだから、自分のアイデアを加えて少しでも改良してからサブミットしないと恥ずべきことなのだとでも言いたいんだろう。そうかそういうことなら、紹介してなくても良しとするとしよう。
・・・!
だが、、私は、決定的瞬間を目撃してしまった。↓
思いっきりカーネルそのままサブミットしてるんやないかーい!
しかも、カーネル書いた人をぴったりマークしているんかーい!
長友ばりのエースキラーだな、いやむしろ、カンテ並みの運動量だな。
いや、待てそうか、これは、我々初心者に、カーネルをそのままサブミットしてもいいよということを身をもって示しているんだな。なるほど、まずはとりあえず、そのままサブミットして、後からカーネルの内容を理解すればいいよという優しいメッセージを初心者に送り、初心者でもkaggleへ参加できるよということを身をもって体現しているのだな。
やるな、カレーちゃん。そこまで考えが回らなかった。さすが圧倒的オムライスだな。
そして、次の第2章からは、タイタニックコンペのデータを見ていき、データの可視化を行い、初心者にmatplotlib、seabornすげーと思わせ、急に勝手に欠損値を平均で埋める前処理とかしだしたにもかかわらず、それはあまり良い処理ではありませんとか言い出して、いやあんたが勝手にやったんでしょっていう突っ込み感満載の展開を繰り広げた後、ランダムフォレストだとか、交差検証とか、めっちゃひかれる言葉を言い出したとおもいきや、付録のpandas-profilingでコード2行でものすごい分析が出てきて今まで分析してきたの何だったのていう感じになり、lightGBMについても付録につけだして、初心者が食いつきやすいワードに軽くふれては、急に学習とかしだして、予測するという、私はまじめだから、全部写経して、動かしてはみたけれど、昔、予備校時代の数学の授業を受けていたときの、意味はわからないけど、とりあえず板書するみたいな、あの空虚さを思い出させてくれて、どうもありがとうという感じだったわ。
まぁ、何が言いたいのかというとだね、割と市販されている機械学習の本を読んでも、このプログラムは何をやっているのかという、コメントはけっこう付いているんだけども、初心者にはそれだけじゃわからないよ、もうちょっと詳しく説明してよっていう本が氾濫している状況だと思うのよ。そういう状況の中で、この本がkaggleに初めて取り組む初心者向けの本を目指しているならば、もっともっと丁寧に解説して、市販の本との差別化を図るべきじゃないか。特に私が声を大にしていいたいのは、引数だとか、ハイパーパラメータの詳細にはほとんどふれていないじゃないか。自分でツールのドキュメントとか見て調べないといけないんだろうけど、少しでも説明してくれると次につながっていって、あっ、これ進研ゼミでやったところだってなるんじゃないか。なんだrandom_state=0って。
そういうとこやぞ、カレーちゃん(ただ言いたいだけ)
まぁ、この薄い本でどこまで説明するかっていう問題は付きまとうと思うが、第3版で少しでも改良してくれるとうれしいですね。アンサンブルについて追加で書きたいと言っているみたいだが、たしかに、既存のカーネルをアンサンブルして高スコアを出すみたいのは読んでみたい気もするが、識別機に学習させて予測するところは、もっと丁寧に説明を加えてほしいですね。まぁ、私は自分で他の本で学習してだいぶわかってきたからいいんだけど、これから、縁あって購入する人のために、ぜひやってほしいところですね。
なんだかんだで、この本を読んで下記のとおり、カーネルをフォークしてサブミットまではいくことができたので、色々ぐだぐだ言ってきましたが、サブミットもしたことがない初心者に、サブミットをして、なんとなくkaggleの雰囲気を知ることができる本としては、おすすめできる本にはなっているのではないでしょうか?
てか、激強カーネルをフォークしてみたのに、スコアちょっと低くないか?なんだこれ、自分の超低スペックな環境のせいか?
今後、初参加するコンペについては、なんか激強カーネルとか出てきて、マルウェアの裏のコンペでワンチャン狙えるかなと思ったので、まずは、電線コンペをやっていくことにしましたので、強い方チームマージのほう何卒よろしくお願いします。(エッ・・・(´・ω・`))
てか、今の状況だと私は純度100%の激強カーネルをもとにしたモデルで、相手も激強カーネルをもとにしたモデルで2つをアンサンブルしても、純度100%ですみたいなおもしろい状況になるのではないか・・・まぁそれはそれでおもしろそうでいいですかね。
今日のおまけ
カレーちゃんへ、何か記事の中でたくさんいじってしまってすまんね。何か最近YouTubeを始めたみたいだけど、影ながら応援していますよ。
https://t.co/dAhNssiUVc
— カレー@kaggler (@currypurin) 2019年2月1日
「初めてkaggleのkernelを使う方へ、使い方を説明します」公開しました。(23分)
次の内容など、説明しています。
・Kernelの作成
・言語(Python・R)の選択
・GPUの使用
・inputフォルダの表示
・csvファイルの書き出し
詳細はyoutubeのページに書いています。
無料で見れると思えば、中々いい内容になっているのではないでしょうか。ただ、なんかゴニョゴニョ言ってて何言ってるのかわからないとこあるので、今をときめく、米津玄師も聞こえてるなら声だしていこうぜっていっているとおり、もうちょっと自信持って腹から声だしていこうぜ。
それと、YouTubeのチャンネル名は、個人的には、今のより、専業kagglerカレーchとかの方がいいと思うぞ。てか、自己紹介の動画も見たけど、あれYouTubeの意味あるか?なんか、スライド使って、小学生の読書感想文みたいで、超クオリティ低かったぞ。
そういうとこやぞ!カレーちゃん!(ただ言いたいだけ)