前提
数学力・統計力・技術力がほぼすべて「ゼロより低い、マイナス」の化石エンジニア・アンモナイトがエンジニアとしての生き残りを目指して賞金が欲しくて 、Kaggleに挑戦する。
たぶん、Kaggleに挑戦する記事の中で、もっともレベルが低いと思う。
そもそも、なんでKaggleに挑戦するのかとゆーと、下記のよーなリカレント教育(大人の再教育)プランを考えているからです。
アンモナイトが考えた化石エンジニアの進化論:
ふりだし:「アンモナイト=太古の海中でたゆたってる化石エンジニア・Lv3」
→アジャイル開始:Done!
→社外コミュニティ参加:Done!
→スクラム経験:Done!
→CSM取得:Done!
→常識(他社研修視聴):Done!
→知識の深堀り=Kaggle:in progress
→知識の深堀り=アプリ作成:To do
→あがり:陸上(肺呼吸):人権を得る
あれ、こうやってフェーズ分けすると、意外と「あがり」が近いな?
そう思った方へ、下記をご参考までご確認ください。
・双六の怖ろしいところは「ふりだしに戻る」がトラップとして散在しているところです。
・将棋がチェスよりも複雑と言われるのは、将棋は駒を相手に取られて自駒にされてしまうからです。
つまり、人生、実力がつかなきゃ(実力があっても)いつでもふりだしに戻る可能性があり、かつ、身につけた・完全に理解したと思った知識・実力があっという間に陳腐化する可能性がある。
そして簡単に一行でまとめられている「Kaggle」と「アプリ作成」はタスクレベルに細分化すればとてつもねえ数のステップと時間と労力がかかるとやがて判明するハズ。
うん、これから先に待ち受けるリスクを完全に理解した。←自分が数分前に考えた教訓すら活かせないタイプの人生
1:現在の状況
で、課題になってるKaggleだが、ありがたい御本のおかげで以前、チュートリアルコンペの『タイタニック号』はクリア済である。
もっとも、写経以前の作業しかしていないため、なんでうまくいったのか、全く理解できていない。
つまり、Pythonでの機械学習の実践知はKaggleのアカウントを作った時と全く同じ、「ゼロ」である。
今回から、『タイタニック号』のコードの詳細を本格的に検討し、理解を試みる。
ナビゲーターとなってくださる御本は下記。いつもありがとうございます。
『PythonではじめるKaggleスタートブック』
https://www.amazon.co.jp/dp/4065190061
(書影は版元ドットコム様)
2:本日のお題
ズバリ、『タイタニック号』の理解。これに尽きる。
ていうか、サブミットしておいて、まだ理解がゼロってどういうことなの? あの熱狂の夜を忘れたっていうの? 無責任よ!
いや、一応、御本をサブミット部分までは読み、「なるほどなー」と感心し、サブミット&自分の順位を確認するところまではやった。
やったけど、コードの内容は理解してない。御本通りにサブミットしただけだから。
あと、ここ一年くらい記憶力がマジでヤバくて、ごめん、あの夜のことはほぼ覚えていない。
そもそもアンモナイトは『タイタニック号』の内容を激しく勘違いしてて、課題を「タイタニック号をどのように事故から救うか・事故を防ぐか」だと思ってたくらいの認識能力しかない。これはPythonだのKaggleだの以前の問題で、早とちりというか、自分が「こうだったらいいな!」と思った妄想を事実だと信じ込んでしまう残念な理解力というか、物事にあまり疑問を抱かない性格というか、まぁ、こんなんだから、社畜になったり、化石になったりするのである。
では、初めての遠足のよーにフレッシュな気持ちで元気良く、Kaggleログインからいってみよー!
3:気づきと学び
気づき:
……Pythonのコードではなく、御本の日本語が理解できない。いや、コードもふんわりとしかわからんが。
ひたすら御本の解説とコードの間を行ったり来たりして、読解と理解に努めたが、特徴量を求めるための探索的データ分析というワードが、もうわからん。わからんというか、なんだろう、実体験として現実味が持てない。
以前、これと同じ感覚を味わったことがある。そう、初めてKaggleに挑戦し、挫折した時だ。
(→で、足りない知識を補おうと、他社研修を視聴することにした)
つまり、まだ機械学習についてのインプットが足りないのだ。
機械学習というより、統計の知識かもしれない。
逆に手前の、データ確認してデータを整備するところはすんなりわかった。DB周りではよくやってたし、0と1しか持てないなら、列を増やすしかないとかはまったく疑問なし。
データを確認するの、本当に大事。●年前、スパゲティコードを引き継いだ時、動かないSQLが何本も入ってて、「サーバー上で全然SQLの結果を見ていないと何が起きるか」を身を削って学習したので、データ処理系の作業は絶対にデータを確認するようにしていた。当時は自己流で手探りだったので、すべての列でソートして欠陥・欠落・異常値を確認、最大値・最小値の確認、列数・行数を確認、目視結果とSQLの結果が一致することを確認、なんかをやってた。
本当に結果を確認しないで机上だけでSQL書くのはやめてほしい。ダメ、絶対。呪いと恨みの連鎖にしかならん。
学び:
とりあえず今日、理解したKaggleのコンペの取り組み方の流れは下記。正しい理解かどうか、怪しいが。
提供データの概要を確認する(Pandas Profiling)
→データ確認&データの整備
→特徴(特徴量)を洗い出すために探索的データ分析を行う(項目ごとに生存率との関連を調べる)
→仮説探し(EDA)
→仮説立てる
→仮説検証する(データ作ってみる)
→回答のサンプルデータと突き合わせて正誤判断?
→サブミット?
そもそもこの流れでええんかい??
自慢じゃないが、アンモナイトはタイタニック号を救う課題だと思ってたくらい思い込みが激しい頭脳の持ち主である。
上記の流れも「激しい思い込み」の可能性が高い。(でもSQLは確認する。マジで寿命が削られるから)
「今日のところはこれくらいにしてやんよ!」と完璧な負け犬のセリフとともに、御本を閉じ、ログアウト。
今回はいまのITの常識的なところというより、Kaggleの取り組み方で理解ができない箇所なので、つまづいたところを調べて深堀りするより、まずは御本を1周することで全体像をつかんだほうがいいと思った。
本日は以上で終わりです。お付き合いいただき、ありがとうございました!