Udemyのデータサイエンティストコースを一通りやった

こちらは個人ブログの転載です

note.com

PMとしてデータを正確に把握することは非常に重要だと考えたときに、統計学的な有意性、ディープラーニングを用いたより正確なデータモデリングの作成において体系的な知識が必要になると感じ、Udemyを探していたところ 【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜 という講座が95%OFFで販売されており、興味本位で購入してみた。 実際にやってみたら定価でも十分なクオリティーであり、自分のような非データサイエンティストでも理解しやすい内容だったので、感想を書いてみる

学習できる内容

この講座では下記が学習できると書いてある

  • データサイエンティストになるために必要な一連のツールについて学ぶことができます
  • 統計分析、NumpyやPandasなどを使ったPythonのプログラミング、高度な統計学上の手法、Tableaau、StatsModelとScikitLearnを使った機械学習の実装、TensorFlowを使ったディープラーニングの実装
  • データの前処理の方法
  • 機械学習の背景にある考え方
  • Pythonを使って統計上の分析をする方法
  • Pythonを使った線形回帰とロジスティック回帰分析
  • クラスター分析と因子分析
  • 実生活における実践問題を通じた深い理解
  • TensorFlowをはじめとした、ディープラーニングを進める上で必要とされるツール
  • 過学習・過少学習とその解決方法について
  • 訓練用データ、検証用データ、テストデータの概要と具体的な実装方法について
  • 最先端の機械学習アルゴリズム(Adamなど)の概要と実装方法について
  • 信頼区間や検定など、少し難易度が高い統計上の知識
  • 機械学習の全体像と、それぞれの用語の深い理解
  • 汎用性の高い実装方法について
  • p値やt値といった統計上の指標と回帰分析との関係について
  • バッチ処理の概要と実装方法

かんたんにサマリをすると、

  • データに対峙したときに、統計学上の有意な形でデータをサマライズできるようになる
  • 各種分析手法(回帰、分類など)をどういうときに適応すべきかわかるようになる
  • 統計学をもとに、各種フレームワークを用いた機械学習ディープラーニングの実装の方法がわかるようになる
  • 上記をPythonを使って実際にプログラミングして求める手法がわかるようになる

というところで、非学習者でも一個一個丁寧に教えてくれるので、講義が終わったときには、たんにツールを使えるという状態ではなく、なぜそのツールを使う必要があるのか、そのツールを使うとどういうものが求まるのかということが体系的に理解できるようになる。

特に印象的だったもの

このコース、全部で26hもあるそうで、当然全部を紹介しているととんでもない量になってしまう。特に印象的だったものを書いてみる。

  • p値やt値といった統計上の指標と回帰分析との関係について
    • さらっと書いてあるものの、前半の統計学の手法においては、このテーマがかなり中心的にあったように思う。p値やt値は仮設検定(何かしらの仮設が有意であるといえるかどうかの判定)において重要な数値を持たらす。この数値によって仮設の有意性が図れるということで、具体的な例をもとに検定を行うことで実際のビジネスのシーンでどうやって活用されるのかの片鱗が見えた。
  • 機械学習の背景にある考え方
    • 機械学習はインプットとアウトプットの間のブラックボックスをなすものであるという考え方がとても腑に落ちた。ここでこう書くだけだと当たり前のようにも思えるが、実装を通じて意識するべきは「適切な問い(=ほしい結果)」の設定と「適切な情報の提供(=前処理などを通じたデータの整理)」にのみ集中することで結果を得ることができるというのが結構衝撃だった。
    • 基本的なこの考え方と、ベースとなる知識を持っていれば、仮に今後何かしらの壁にぶつかっても有識者に適切な質問の投げかけができ、彼らの返答も理解できるようになるのではという実感を得られたので、機械学習を業務に取り入れる心理的ハードルが一気に下がった。
  • Pythonを使って統計上の分析をする方法
    • 今回はロジスティック回帰だけやり、他の分析手法は一旦飛ばしてしまった。一方でどういう分析がどういう意味を持つのかというのは理解できたので、今後必要に応じて選択できるようにインデックスは貼っておく

学習をする上で用いた環境

本講座ではAnacondaを用いた環境設定方法を紹介していた。一方で自分の環境はMacであり、Anacondaを使った経験もないことから、環境の差異が発生すると面倒であるという点、また今後の実務においての使いやすさを鑑みてDockerの環境を選定した。

docker のimageとしては jupyter/docker-stacksにあるイメージが非常に使い勝手が良かったので、こちらを用いている

また、エディターはVSCodeのRemote Containerで作業。カーネルの選択などもDockerイメージ内部のPythonを選択することで簡単に実行できるのがとても良い

{
        "name": "Tensorflow Env",
        "dockerComposeFile": [
                "../docker-compose.yml"
        ],
        "service": "tensorflow",
        "workspaceFolder": "/home/jovyan/work",
        "settings": {},
        "extensions": [
                "ms-toolsai.jupyter",
                "ms-python.python"
        ]
}
version: "3"

services:
  tensorflow:
    image: jupyter/tensorflow-notebook
    ports:
      - 10000:8888
    volumes:
      - ./src:/home/jovyan/work

上記設定だけで、あとはVSCodeのReopen in Containerを選択するだけで環境が立ち上がる。とても楽。

本講座はGoogle Drive上に講義に用いるソースコードやデータなどが保管されており、都度ダウンロードしてzip解凍する形式をとっていた。 zip解凍後のディレクトリをそのままVSCodeDnDすれば環境に展開できたので、これも開発者体験としてはとても楽なのでおすすめ

今後の活かし方

本講座ではあくまで与えられた数値をもとにモデル化し、評価するというところまでで収まっている。十分実案件でも使える知識は身についているとは思うものの、実際に自分でやろうとすると理解不足なところが浮き彫りになるので、その際にこの講座に立ち返り、復習していくことで知識を身に着けていこうと思う。 また、問の立て方は理解したものの、有意性が事前にわかっている問であることが前提であるため(講義である以上は仕方ない)、適切な問いを建てることが難しそうだなと思った。ここはいくつか実際のデータを活用することで感覚的に理解できるようになれればと思っている