こんにちは、nissyです。
ですが、化学メーカーのデータサイエンティストとして働いてる経験を通しての私の考えは、プログラミング言語、特にPythonは絶対に学んだ方が良いです。
今の実務でデータ分析の経験を積んで、データサイエンティスト転職を目指す人、長期的にデータサイエンスに関わっていきたいと思っている人はPythonはマストです。
- 機械学習を学ぶために参考書や動画などで勉強してみたけど、中々学習が進まない。
- ノンコーディングで機械学習が実装できるということを知り、プログラミングの勉強をしなくても良いと思っている。
- エクセルでしかデータ処理を行なったことがない。
- 化学系の大学院を修了
- 新卒で大手化学メーカーに入社、9年間で工場勤務→研究棟勤務→本社勤務を経験(ジェネラリストコース)
- 30代でデータサイエンス系の大学院を修了(リスキリング)
- 化学系データサイエンティストとして転職
Pythonを学ぶメリット3選
機械学習の参考書(数学で表現されたアルゴリズムの部分)が理解できる様になる
偏見も入っていますが、化学系研究開発職の人は数学に対して苦手意識を持つ人が多いです。
また、研究や製品開発の過程で数学を使う機会自体も非常に少ないです。
線形代数の感覚がなければ機械学習の参考書の冒頭部分で理解が追いつかなくなるでしょう。
線形代数の感覚を養う一番の方法はPythonでデータ分析を学ぶことです。
例えば、重回帰分析の回帰係数を最小二乗法で計算する場合、以下の式の様に解析的に回帰係数を計算することを最初に学びます。
$$ w=(X^TX)^{-1}X^Ty $$
Xにはどの様なデータセットが入っていて、yにはどの様なデータセットが入っているかイメージつきますか?
式として理解するだけでは不十分で、上記の式を使って実際にデータセットから回帰係数を計算するイメージを掴む必要があります。
PythonではPandasというライブラリーを使用することでデータセットをベクトル・行列として扱うことができます。Pythonを通してまず掴んでほしいことは、このデータセットを行列・ベクトルとして扱う感覚です
実際にデータセットを用いて、感覚を掴んでみましょう。
(データセットの図)
例えば上図の様なcsvファイルを以下の形式で読み込みます。
1 2 |
import pandas as pd X = pd.read_csv("dataset.csv") |
データセット(dataset.csv)は30×9のデータが入っており、それをXという変数に置き換えています。
この様にデータセットをXとして読み込み、2*Xとコードを書けば、行列の計算の様に全てのセルの値が2倍されます。
この様にデータセットをXという文字に代入すれば、先ほどの回帰係数を最小二乗法で計算することも容易になることが想像できると思います。
繰り返しになりますが、データセットを行列・ベクトルとして扱う感覚を掴むことが機械学習のアルゴリズムを理解する第一歩になります。
他の人が作成したコードを利用できる(コピペ力)
プログラミング言語を学んだ後、自分のオリジナルでコードを書いて機械学習を実装する・・・
なんてことはほとんどありません。
言語を一通り理解した人が次に身につけるのは”コピペ力(リョク)”です。
たくさんの方がPythonで行なったデータ解析の実例をWeb上にアップしています。
クオリティが高いものが多く、参考書以上に詳しく紹介されている情報もたくさんあります。
私自信も参考書や論文、セミナーなどから得たアイディアをGoogleで検索して参考となるコードを探してコピペを行います。
参考となるコードを探して、自分の開発環境で実装できる力”コピペ力(リョク)”を磨くことで分析の幅を広げることができます。
コピペだけでは同じ様に実装できないこともあり、自分の開発環境やデータセットの構造を修正して、実装できる様に調整する必要があります。
大量のデータを処理することができる
初学者のレベルを越えた中級者向けのメリットも記載しておきます。
「データ解析は前処理までが8割」と言われています。ビッグデータと言われる様な大量のデータセットを前処理するにはPythonが必要不可欠です。
例えば製造工程で得られるセンサーから読み取ったデータを扱うことを想像してください。
センサーは装置が稼働している間のデータを継続的に取得してくれます。
1日で取れる情報量も非常に多いですし、それを1ヶ月、1年、それ以上の単位で分析を行いトレンドを掴みたい場合、エクセルでの処理では絶対に対応できません。
この様なビッグデータを処理する機会に出会えたとき、それはあなたのスキルを飛躍的に向上させることができるチャンスです。
この様な機会があった場合に自ら率先してデータ分析の職務に参加できる様になるために、今から少しずつでもPythonを勉強しましょう。
データ分析に必要なコードだけ学ぶ
Pythonでは非常に多くのライブラリーを扱うことができますが、基本的に職務に応じて使用するライブラリーは偏ります。
私はテーブルデータの解析がメインの仕事なので、使用するライブラリーはデータセットを扱うPandas、グラフ作成のためのmatplotlib、機械学習実装のためのScikit-learn、がメインです。
Pythonを通じて様々なことが実装できますが、用途を限定すれば覚えることも絞ることができます。
勉強方法としては参考書や動画、プログラミングスクールを活用するなど色々と選択肢はありますが、データサイエンティストへの転職を目指している方は、まず以下を達成することを目標として設定するのが良いです。
「自分のデータセット」という部分がポイントです。
“ボストンの住宅価格”や”アヤメ分類”のデータセットなどを使って機械学習を学んでも中々次につながるイメージがつきにくいと思いますので是非挑戦してみてください。
プログラミング習得が早い人の特徴3選
“何を”したいかを考えている(目的意識)
プログラミング言語を使って何を達成したいかを明確に言語化できている人は、プログラミング習得も早い印象があります。少しビジネスライクな言い方をするとKPIを明確にしていることと同義です。
プログラミングはあくまでツールなので、達成したい目的が明確でなければ価値を生み出しません。
例えば「こんなグラフを作ってみたい」といったアイディアがあれば大抵はPythonで実装でます!
メンターがいる
一緒に切磋琢磨できる人、親身になって教えてくれる人がいる環境を整えることもプログラミング習得のために考えるべき重要な事柄の一つです。
私の場合、33歳のときに通った大学院での環境がプログラミングスキル獲得の上で重要だったと感じています。
質問力を鍛えている
大学院の先生に質問したとき「質問の意図が読み取れない」とよく注意を受けました。
良い意味で質問に対して正確に答えようとしてくれる先生が多かったので、こちらも質問をするときは最新の注意を払います。
特に技術的な質問をする場合は、以下のことを質問に入れる様に指導を受けていました。
- 何をやりたくて
- そのために、具体的に何をやって
- その結果、どんな問題が生じていて
- 何を知りたいか
まとめ
機械学習初学者は最初に「機械学習のアルゴリズムの理解」、「Pythonなどのプログラミングスキル習得」という大きな壁を越えなければなりません。
長期的にデータサイエンスに関わっていきたいと思うのでしたら、是非Pythonのプログラミンスキル習得から逃げずに勉強するべきです。
最初の目標設定としては「自分のデータセットをPandas前処理してからScikit-learnで重回帰分析を実装する」ことをオススメします。
コメント