Odyssey CBTのPython3 エンジニア認定データ分析試験の学習を始めました。今回はデータ分析に関する基礎知識をインプットしておきました。今回は座学が多めです。
学習内容
Python3認定エンジニア・データ分析試験に向けて「Pythonによるあたらしいデータ分析の教科書」を学ぶ。 各種ツールと知っておくべき数式・アルゴリズムを学習する。Pythonでデータ分析、およびデータ分析をプログラミング・ビジネスに応用できる人材を目指す。
- 使用ライブラリー -
numpy、pandas、matplotlib、scikit-learn、SciPy
- 応用先 -
WEBスクレイピング、自然言語処理、画像処理
データ分析の世界
政府や地方自治体、大企業の発表するデータがオープンデータ化されている。 また、膨大なデータを処理できるクラウドソーシングサービス(BigQuery, Azure, AWSなど)が発展してきた。これらのデータを処理するために統計解析・多変量解析、機械学習といったアルゴリズム・分析モデルが活用されている。
データ分析は工場の異常検知システム・広告出稿の品質管理・天気予報などに応用されている。 特に深層学習(DL)の発展が目覚ましく、自動翻訳・会話生成などへの応用が進んでいる。
Pythonの活用
データ分析に使われるプログラミング言語は主にPython・Rとなっており、特にPythonでは豊富なライブラリーと外部パッケージを使ったデータ分析が行える。
Pythonの活用
- WEBシステム
- IoTデバイスの操作(Raspberry Pieなど)
- データ分析・機械学習
Pythonが苦手とする分野、その代替オプション:
- Webアプリのフロントエンド処理(→Flutter)
- デスクトップアプリ(→Flutter)
- 速度向上・最適化(→C・Fortran)
- 超大規模な処理(→SQL)
データサイエンティストとは何か?
数学、情報工学、事業の専門知識を総合的に持つデータ分析者のことを指す。具体的には下記の能力が求められる:
- モデル・アルゴリズムの構築と実装ができる
- 新たな解決法・新技術に携わる
- 解決したい実務に取り組んでいる
- データとの向き合い方・解釈を提示できる
- 分析結果を数学的に評価できる
データ分析エンジニア-基礎技術¶
データサイエンティストの中でもデータ分析エンジニアとは情報工学を基礎知識とし、データベース技術・データの活用に携わるエンジニアを指す:
- データの入手・加工(numpy, pandas)
- データの可視化(matplotlib, pandas)
- プログラミング(pythonの基礎)
- インフラレイヤーの実装(サーバーサイドエンジニアリング、データ基盤)
データ分析エンジニア-付加技術¶
基礎技術に加え、付加技術を身に着けると仕事の幅が広がる
- 機械学習(scikit-learn)
- 数学(線形代数、微積分、統計学)
- 専門知識(データ分析を適用する分野への知見・経験則)
機械学習の基礎知識
機械学習(ML、Machine learning)とは大量のデータから非明示的なアルゴリズムによってデータの特性を見つけ、予測に必要なニューラルネットワーク等のパターンを獲得するタスクである。 このパターンの塊をモデルという。モデルを作成するには入力データ、およびデータを処理するアルゴリズムが必要。
機械学習のタスク
- 教師あり学習 - 正解となるラベルがある場合、正解ラベルを目的変数・それ以外のデータを説明変数とする。定性データの予測には分類・定量データの予測には回帰のアルゴリズムを適用する。株価予測やチャットボットなどのアルゴリズムほとんどコレ。
- 教師なし学習 - 正解ラベルの代わりに、与えられたデータに特定のグループ・似た集団があるかを予測する。クラスタリング・次元圧縮といったアルゴリズムを適用する。文字の分類などの画像処理は教師なし学習・次元圧縮で学習している
- 強化学習 - エージェントと呼ばれるオブジェクトが得られる報酬を最大化する様な行動を獲得する。餌を探し回るネズミやネコを想像するとわかりやすい。ボストンダイナミックスのロボットの挙動の一気通貫学習・ChatGPT等の大規模言語モデルのリワードモデルの最大化に使われている。
機械学習を用いない予測アルゴリズム¶
- ルールベース - 条件分岐をハードコードすることでデータの特性を発見する。予測が正しいか否かを事後法的に証明しなければならない。 データの特性を獲得するのに必要なパラメータが多くなるとルールベース手法は使えない
- 統計的プログラミング - データから得られる統計量を用いて予測を行う。特にベイズ統計モデリングが迷惑メールの検出等に活用されている
データ分析のタスク¶
Googleのアナリストの場合
- 問いかけ
- 準備
- 処理
- 分析
- 共有
- 行動
機械学習(教師あり分類)のタスク
- データ入手
- データ加工(numpy, pandas)
- データ可視化(matplotlib)
- アルゴリズム選択(scikit-learn)
- 学習プロセスを実装(モデリング・ファインチューニング)
- 精度評価(scikit-learn)
- 試験運用
- 結果利用・課題整理
データ分析に使うツール・パッケージ¶
- Kaggle - Kaggleのサーバー上でJupterNotebookを利用できる。無償
- JupyterLab - Webブラウザー上でPythonコードを実行する。ファイルは.ipynb、内部はJSONとして処理されている。とても便利
- Numpy - 数値計算を行う。配列・行列とベクトルを用いた計算が高速で実行できる
- pandas - Numpyを基盤としデータフレーム構造を提供する。R言語と同じ要領でデータの変換・加工が行える
- Matplotlib - データの可視化を行う。元はMatlabと同じ機能を実装することを目指したパッケージ
- scikit-learn - 機械学習のアルゴリズム・評価に使う指標を実装できる
- scipy - 科学技術計算を高速で実装できる(線形代数・統計的処理など)
データ分析に関する基礎知識がインプットできたので、次回はさっそくNumpyの学習に取り掛かります。