データ未経験僧侶が2ヶ月でPythonで予測モデルを作れるようになるまで
こんにちは。Hakali Inc.の秦です。
北海道にある浄土真宗のお寺に生まれて、今は住職になる前の俗世での修行期間として、7名のスタートアップでデータ活用コンサルタントとして働いています。
せっかくの修行期間なので、働く中での気づきを書き残しています。
転職して4ヶ月が経ちましたが、色々とデータ分析スキルも付いてきたので、今日は学習エントリ的なものを書いてみようかと思っています。
こういうやつ。昔からこういうの書くのちょっと憧れだったんよな〜〜〜。
コロナでの自宅待機で時間を持て余している方も多いかと思いますが、せっかくの自己研鑽期間だと思うので、この期にPython勉強してみよう!と考えている人の助けになれば嬉しいです。
できるようになったこと
僕はもともと文系学部出身だったので、データとかエンジニアとかとは縁遠い生活を送っていました。意識は高かったので、自主的にプログラミングを勉強しようと思い立ったことは数知れませんが、その度にことごとく挫折してきました。
前職でもExcel作業はあるものの、数式が組まれたフォーマットを使うことがほとんどだったので、調べながらギリVlookupが書けるくらい。
そんなレベルでも、入社2ヶ月後くらいにはPythonとTableauを駆使してギガバイト単位のCSVデータを処理・分析し、Prophetという時系列予測OSSを駆使し需要予測モデルを作り、Webスクレイピングからの自然言語処理をかませるようになっていました。
どうやってこれらのスキルを習得したかを書いていきます。
プログラミング学習の必須条件
秘訣というと大げさですが、これがあったから挫折せずに続けられた!と感じることが2つあります。
これです。
究極、この二つがあればどれだけ時間がかかったとしても、ある程度は書けるようになると思います。
僕が学生の時は「HTMLは最低限書けるようになった方がいいらしいぞ」とか「Rubyってやつがアプリ開発で熱いらしいぞ」とか「Pythonの授業取ってみるか」とか、色々チャレンジはしましたが、結局どれも続けることができませんでした。思い返すと、
①漠然とやり始めて明確な目標がなかった ②一人で勉強していた
ことが一番大きな原因だったかなと思います。詳しく説明していきます。
①Pythonで何をしたいのか、目的を明確にする
まじでこれ超重要。
社会人なら、仕事のどんな業務にどう活用したいのかをまず定めましょう。
大学生なら、「就職で活かす」「ドヤりたい」以外の目的も設定しましょう。
言い換えると、ゴール設定です。何ができたらゴールなのかを決めることが大切です。
「プログラミング出来るようになりてえ〜〜!」
って誰もが一度は呟いたことがあるフレーズだと思いますが(?)、何を持って出来るなのか。「Hello World.」を出力するだけでも書けたとは言えます。
僕もデータ分析や簡単な予測モデルは作れるようになりましたが、アプリ開発などは全くわかりません。(それは出来るとは言わないのでは?というツッコミはナシで)
というのも、このゴール設定を明確にしないと、巨大なPython沼に沈んで死にます。
なぜならPythonで出来ることはめちゃくちゃあるからです。領域でいうとだいたいこんな感じ↓
いや、そりゃ全部できたらカッコいいですが、いっぺんに学ぼうとするのは無理がありますよね。必要な領域を絞って一つずつ潰していくことが大切です。
ちなみに、Pythonではライブラリという「ある目的のために機能をまとめたパッケージ」が存在していて、基本さえ理解していれば、このライブラリを駆使することで発展的な処理も割と簡単にできてしまいます。
自分に必要なライブラリを絞ることで、最短ルートでやりたいことができるようになると思います。
ちなみに僕もこの桜カラーのところくらいしかできません。ただ、実務の上では今のところはここの領域だけで間に合っています。
という感じで、Pythonで何をやりたいのかを明確にすれば、領域を絞って効率よく学習することができます。
例えばアプリを作りたいなら、まず具体的なサービスイメージを明確にしましょう。自ずと必要な機能が見えて、学習の方向付けができるはずです。
世の中の学習本や学習サイトは、当然ながら自分の為だけに作られているのではなく、最大公約数のニーズを満たすべく作られています。
それを愚直に1から最後まで学ぼうとすると、膨大な量になりますし、難しい内容もたくさん出てきます。(それが全く使うシーンのない領域だというのに・・・!)
なので、繰り返しになりますが、まず最初に「これができるようになりたいから勉強するんだ!」ということを明確にすることをおすすめします。
目的に向かって最短ルートで学習しましょう。
さて、
「えーでもさー、まず仕事にどう使えるのかすらわかんないんだけど。」
という声が聞こえます。そこで登場するのが、②の話です。
②「うん、これでいいんだよ」と励ましてくれる人を見つける
これも超大事です。
ここにきてちょと懺悔ですが、僕の場合はかなりチート環境がありました。
社長が仕事を受注してきて「これはPythonのこの辺のライブラリを使えば多分できるよ。」と方針を立ててくれるので、僕はそこに向かってヒイヒイ言いながらも突き進むのみ。
やりたいことに対して、Pythonをどう駆使すれば実現できるのかの道筋が明確だったのです。
しかも、マジで出来ない死ぬ。終わりだ。という時には、席の後ろを振り返って「もう無理っす〜〜〜。泣」と泣きつけば、Python本を何冊も書いている弊社CTOが、どれどれ。ふむ。ババババババって助けてくれます。
まあそんな環境だったので出来るの当たり前と言えば当たり前なのですが、言うても皆めっちゃ忙しいので、基本的には自分で調べて進めることがほとんどでした。
ただ、圧倒的によかったのは、困ったときや迷った時に「大丈夫。それでいいんだよ」と言ってくれる人がいるということ。
プログラミング初めたての頃は、こんな課題に直面します。
・何となく出来るようになってきた気がするけど、勉強の仕方合ってる?
・ってか今何合目くらいなん?
・なんかやりたいことの30%くらいは実装できた気がするけど、これこのまま進んじゃっていいの?この時点で間違ってたらどうしよう。
・どうしてもエラーになる!なんで?コードミス?そもそも根本的にやり方が正しくない?ってかパソコン壊れてる?呪い?
などなど。
一つの処理を実現させるためには、ある程度のコードは書かなければならず、時間がかかります。
しかし無駄なことは出来るだけ避けたいというのが人間ですから「これで間違ってたらどうしよう。」という不安が常について回ります。真っ暗で何も見えない中を歩いている感覚です。そういう時に、
「すませんー!こっちの方向で合ってますかーーー?」
と聞ける人がいるかいないかで全然違うと思います。
そんな時、
「大丈夫。それでいいんだよ。」
この一言があるだけで救われるのです。「俺は間違ってない。進もう!」と思えます。
・・なんだ、仏教の話になってしまった。
お釈迦様が亡くなる寸前に残した言葉に、「自灯明・法灯明」というものがあります。
「自灯明・法灯明」とは、
自分自身に灯りをともし(自灯明)、ブッダの教えを頼りに(法灯明)、人生を歩んでゆきなさいという意味の言葉です。
自分自身を灯りとし、迷いながらも遠くでかすかに見える法の灯りを頼りに、確かに歩んでゆきましょう。ということを言っています。
・・ということで、プログラミングを始める時には、まずはブッダを見つけてください。
迷える衆生を導いてくれる存在が重要です。
いや〜自分の周りにはそんな人いないなあ〜。」というそこのあなた。
僕があなたの菩薩になりましょう。合掌。
※菩薩とは:
悟りを求める人。(ブッダ=悟った人)
自らの悟りを求めるだけではなく、広く衆生の悟りの手助けをする人。
おまけ|Python学習にオススメなサイト・教材など
ここまで述べた2つがあれば、きっと大丈夫です。
最後に、僕がPythonの学習を進めていった具体的な道のりと、そこで使ったサイト・教材をご紹介します。
1、まず基本の文法を一周する
まずは基本的なところを理解しました。入門とか初級と書かれたPython本をさらっと一周するとか、Web学習サイトのPython初級編を一周するのが良いと思います。
僕はPyQというサイトで初級〜中級の手前(後半はかなり発展的でむずくて萎えてやめた)を一通りこなしました。最初は実際にコードを書きながら学習を進めていくスタイルが定着は早いと思います。
2、Pandasを勉強する
僕はデータ分析をするためにPythonを始めたので、データ処理のライブラリPandasをしっかり勉強しました。やや高ですが、Pandas本はこれがオススメです。わかりやすいのと、網羅的なので索引として使えます。
Excelだと、PCのスペックの問題もありますが50MBくらいの容量になると、フィルタかけたり列削除するだけでも処理に延々と時間がかかりますよね。
もし今やっている業務でそれ以上のデータ処理が必要だという場合は、PythonのPandasで処理するのが圧倒的に早いと思います。PythonならGB単位のCSVデータでもそんなに時間かからず処理できます。
3、分析手法を学ぶ
Python以前に、そもそも統計も勉強したことなければマーケの分析手法も重回帰分析や共分散構造分析をギリ名前聞いたことあるくらいでほとんど知識0だったので、そっちも勉強しました。
・Albertの統計基礎ページ
統計とは?分析とは?を学ぶにはこれがかなりわかりやすかったです。
・購買心理を心理を読み解く統計学
統計解析の手法が整理されて説明されているので、フレームを大量にインプットしたい時に有用でした。これも何度も読み返したい。
4、応用する
ここまで来れば、真っ暗だったPythonの世界の輪郭がぼんやりと見えるようになってきます。ここからは、本とかサイトで網羅的に学んでいくより、都度検索してインプットしていくのがオススメです。
多分こういうことできる方法あるんだろうなーとか、こんな感じで検索すれば出てくんだろ みたいな土地勘が付いてくるので、都度調べて習得していく方が早いと思います。
ーーーーーーーー
ということで、コロナの影響で鬱屈とした日々が続きますが、ピンチをチャンスに変えて、一緒に自己研鑽してパワーアップしましょう!
インターン生も募集してます!興味ある方はこちらまで!
最近Twitterもはじめました。