本記事の対象者
- データ解析や機械学習をしてみたいと思うけど実務経験のない方
- Pythonのプログラミングの学習を始めたての方
はじめに
記事を書く前に簡単な自己紹介をしておきます。
- 普段は主にPythonを使ったデータ解析や機械学習をやっています。
- プログラミングは基本独学
- Rも多少かじってます。
すごくざっくりですがこんな感じ。私は自分のブログもやっているので、独学でプログラミングを習得した方法について気になる方はこちらをご覧ください。
ここでは、特にPythonでのデータ解析や機械学習を独学で習得しようとしている方に読んでほしい記事となっています。
プログラミングの独学
独学でプログラミングを学習しようとしている方はどのように勉強されているでしょうか?
書籍・ウェブサイト・Udemy、今ではYoutubeという方も多いのかもしれません。
私はというと、以下のようなサイクルでプログラミングを勉強していました。
- 何を作るか(どの言語を勉強するべきか)考える。
- 書籍やGoogle検索などでインプット
- 他の方のコードを真似て、適宜コードをいじる
- 分からないところは更にグーグル検索し、エラーを解決。
- 作りたいものができたら、1に戻る。
一見すると、シンプルかつ特に問題のなさそうなPDCAサイクルに見えるのではないでしょうか。
実際のところ、"何かを作る"ことに関して言えばこういった独学でも全く問題ないと思います。
独学の壁
独学の壁を感じ始めるのは設定した課題に対して機械学習をやってみようと思ってからです。
結論から言うと、得られた結果が妥当かどうかが素人には判断がつかないのです。
書籍に乗っ取って勉強を進めているうちは良いのです。
コードも書籍に記述されていますし、得られた結果をどのように解釈すればよいのかも解説してあるので。
問題は、いざ自分で課題を設定し解決しようとするときです。
例えば、機械学習の前処理フェーズである主成分分析を行うとき。
欠損値処理はどのように行うのか?相関係数の高い説明変数は素直に削除してよいのか?ScalingはAuto Scalingで良いのか?などなどプログラミングや機械学習分野だけを独学してきた人にとっては解決できないお悩みがたくさん発生します。
この記事で伝えたいこと
要は何が言いたいねん!ですよね。
機械学習を行う分野にも詳しくないとダメだよ!!!!ということです。
データサイエンスの分野では"ドメイン知識"という風に言います。
ドメイン知識がないと、得られた結果が妥当かどうか・データの前処理が正しく行えているのかということが分かりません。
コミュニケーション大事
自分にはドメイン知識がない!どうすればいいんだ!という方、ご安心ください。
ドメイン知識がある方と交流すればよいのです。
結局のところ、プログラマーやデータサイエンティストにもコミュニケーション能力はとても大事だと思います。
自分の不足している知識は、その分野に詳しい人に教えていただきましょう。一方的に教えてもらうわけではなく、きちんと議論するようにしましょうね。
まとめ
私はデータ解析や機械学習を行う上でドメイン知識が重要になるということに気が付くまでにかなり遠回りしてしまいました。
私と同じように遠回しをしてしまわないよう、データ解析や機械学習において前処理を正しく行い、得られた結果に対して誤った解釈をしないようにするためには、ドメイン知識が重要になるということを念頭に置いてもらえれば幸いです。