書籍「Pythonによるあたらしいデータ分析の教科書」を読んで学んだこと

Python
この記事は約16分で読めます。

  • 「Pythonによるあたらしいデータ分析の教科書」はどんな人におすすめ?
  • どんなことが学べるの?

この記事はそんな疑問をお持ちの方へ向けて書いています。

はじめまして。

IT企業でデータ分析をしています、ナバと申します。

Python3 エンジニア認定データ分析試験対策で「Pythonによるあたらしいデータ分析の教科書(翔泳社)」 を読みました。

✓Pythonによるあたらしいデータ分析の教科書

この本はこんな方にオススメ

  • Python3 エンジニア認定データ分析試験に合格したい
  • 機械学習の流れを理解したい
  • Pythonを使ったデータ分析の基礎を学びたい

本の目次

1データ分析エンジニアの役割
2Pythonと環境
1実行環境構築
2Pythonの基礎
3Jupyter Notebook
3数学の基礎
1数式を読むための基礎知識
2線形代数
3基礎解析
4確率と統計
4ライブラリによる分析実践
1NumPy
2pandas
3Matplotlib
4scikit-learn
5応用: データ収集と加工

1~2章で学んだことを紹介します。

【 1章 】データ分析エンジニアの役割

本章の主な内容は以下です。

  1. Pythonの特徴
  2. データ分析エンジニアの役割
  3. 機械学習の種類と流れ

1. Pythonの特徴

  • 言語として仕様が分かりやすい
  • コンパイル不要な動的スクリプト
  • 豊富な標準ライブラリと外部パッケージ
  • データ分析以外にも応用範囲が広い
  • オープンソース
  • Webシステムを構築できる
  • IoTデバイスの操作に向いている

データ分析に使われる主な外部パッケージは、Jupyter NotebookNumPypandasMatplotlibSciPyscikit-learnとなります。それぞれの主な用途は後述の機械学習処理の流れをご参照ください。

Python vs. R

データ分析の分野でPythonとよく比較されるのR言語です。

私もRは実務でよく使います。

R言語は統計に関するライブラリの充実度はPythonをしのぐと言われています。

また、Rの統合開発環境であるR studioも数分で構築できるので初心者でも始めやすい言語です。

ただし、Rは大規模データの処理やWebへの応用、サーバーサイドでの動作には向かない場合があります。

また、機械学習に焦点を置いた場合、Pythonのscikit-learnパッケージは多くの機械学習アルゴリズムに対応しているため、実装の単純さではPythonが優れています。

両者にはそれぞれ適所がありますので、状況に応じて上手に使い分けましょう。

私が所属する会社のチームではPythonとRの両方のスキルを習得する育成方針をとっています。

2. データ分析エンジニアの役割

筆者はデータ分析エンジニアという職種名はこの本で初めて知りました。

現在の日本では、この類の職種といえばデータサイエンティストやデータアナリスト、MLエンジニアと呼ばれることが多いと思います。

データ分析エンジニアというのはデータサイエンティストに対して一般社団法人Pythonエンジニア育成推進協会が新たに定義した職種のようです。

まずはデータサイエンティストの役割

この本ではデータサイエンティストの役割は以下としています。

  • モデルやアルゴリズムの構築
  • 新たな解法や新技術への取り組み
  • 解決したい課題に向き合う実務
  • データとの向き合い方の提示
  • 分析結果の評価

データサイエンティストの役割は研究分野実務で重視する役割が変わってきます。研究分野(いわゆるアカデミア)は新たな解法や新技術への取り組みが重視されます。

一方、実務では解決したい課題に向き合うことが重視されます。

実務側の人間である私は、課題に応じて新たな解法や新技術を論文からキャッチアップして実行できる能力が大切だと思います。

データ分析ビジネスの第一線で活躍されている方々は共通して論文読んで実践する習慣があります。

データ分析エンジニアの役割

データ工学を実践する1つの職種としてデータ分析エンジニアを位置付けているようです。

データ分析エンジニアが持つべき技術が以下の4項目です。

  • データの入手や加工などのハンドリング
  • データの可視化
  • プログラミング
  • インフラレイヤー(環境構築、データ基盤の取り扱い)

そして、付加的に持つべき技術として、以下3項目を挙げています。

  • 機械学習
  • 数学
  • ドメイン知識

データ分析エンジニアはデータサイエンティストと何が違うの?

データ分析エンジニアはデータハンドリングに重きを置いた職種ということだと筆者は解釈しました。

一方、データサイエンティストは後者の3つの技術(機械学習(もしくは統計)、数学、ドメイン知識)に重きを置いていると個人的には思っています。

データ分析業務はデータハンドリングが8割を占めると言われています。

業務の大部分を占めるこのタスクに多くのリソースをかけることができれば、分析サイクルを回すスピードも上がり、分析結果が意思決定に役立つ確率も上がってくるかもしれませんね。

そういう意味でも今後、データ分析エンジニアという職種が世の中に浸透して、盛り上がればいいですね。

データサイエンティストとして実務経験がある身としては、インフラレイヤーに労力をかけたくないので、そこに強いデータ分析エンジニアがチームにいるのはとても理想的です。

ただし、データ分析に関連する職種って役割ごとにちゃんと定義されていないのが実情だと思います。

この議題についてはしんゆうさんが深く掘り下げていて面白いのでぜひ見てみてください。

機械学習の種類と流れ

機械学習とは、データからアルゴリズムによってデータの特性を見つけて予測などを行う計算式の塊を作ります。

この塊をモデルといいます。

機械学習の学習方式は大きく3種類あります。

教師あり学習、教師なし学習、強化学習です。

・教師あり学習
正解データがある場合に用いられる学習方式です。

学習過程ではモデルの出力が正解データに近づくようにパラメータを調整していきます。

・教師なし学習
正解データがない場合に用いられる学習方式です。

その代表的な手法として、クラスタリングがあります。

クラスタリングでは似たような属性をもつデータをグループ化するイメージです。

例えば、BtoCのマーケティングの場合を考えます。

顧客データをもとに、似たような嗜好をもつ顧客をグループ化できれば、グループごとに最適な商品をおすすめすることで、売上アップが期待できます。

・強化学習
ブラックボックス的な環境の中で行動するエージェントが得られる報酬を最大化するような状態に応じた行動を学習していく方式です。

将棋や囲碁のようなゲームのルールを環境として与え、勝ちにつながる行動により高い報酬を与えていき学習を進めていきます。

詳しい説明は強化学習の専門書籍などを参考にしてください。

機械学習処理の流れ

下のフロー図は機械学習処理の流れと対応するPythonパッケージを示しています。

精度評価からデータ加工に伸びている矢印のフェーズがとても重要です。

モデルの精度を上げるために既存のデータから新しい特徴量を作ったりします。これを特徴量エンジニアリングといいます。

実務では分析に使えるデータの項目が限られていることが多々あります。

限られたデータの中でいかしてに精度を上げて、企業の意思決定に貢献できるかが分析者の腕の見せ所です。

特徴量エンジニアリングによって精度が上がった瞬間というのは本当に気持ちがいいものです。

Kaggleのような世界的なデータ分析コンペでも、特徴量エンジニアリングのスキルが結果を左右するといわれているほどです。

特徴量エンジニアリングに関する説明は、u++さんの記事が大変参考になるので是非見てみてください。

特徴量エンジニアリング については、下記の本が参考になります。

【 2章 】Pythonと環境

本章の主な内容は以下です。

  1. Python実行環境の構築
  2. Pythonの基礎構文

1. 実行環境の構築

ここではPythonのインストール、venvによる仮想環境の作成とpipコマンドでのパッケージ管理を行います。

Pythonのインストール

インストール手順 は公式サイトをご参照ください。

venvによる仮想環境(Windows)

venvはPythonの仮想環境を作る仕組みで、Pythonをインストールすると標準で利用できます。

venvはプロジェクトごとに異なるバージョンのパッケージを使い分けたいときに便利です。

Windowsでvenvを作成していきます。まず、PowerShellを起動します。

そして次のコマンドを順番に実行します。

Set-Executionpolicy RemoteSigned -Scope CurrentUser
python -m venv venv-test
dir venv-test
venv-test\Scripts\Activate.ps1

仮想環境が有効になるとコマンドプロンプトに環境名が表示されます。

上の例では、最下行に環境名(venv-test)が表示されています。

pipコマンド

pipコマンドはPython環境に外部パッケージをインストールするためのコマンドです。

例えば、Numpyをインストールする場合は次のpipコマンドを実行します。

pip install numpy

なお、すでにインストールされているパッケージを最新化するには -U(upgrade)オプションを指定します。

pip install -U numpy

2. Pythonの基礎構文

Pythonの基礎的な構文や便利なモジュールをいくつかご紹介します。

私はAnacondaをインストールし、Jupyter Notebookでプログラムを実行して構文を習得していきました。

ちなみに教材の付属データのプログラムファイルもJupyter Notebook形式です。

条件分岐と繰り返し

条件分岐はif、elif、elseの組み合わせで行います。

繰り返しのfor文は繰り返し可能オブジェクトの要素を1つずつ取り出して変数に格納します。

下の例だと要素は1950, 2000, 2020で、変数はyearになります。

例外処理

例外処理はtry exceptで行います。例外が発生した場合はexcept節が実行されます。

内包表記

内包表記はリストやセットなどを簡潔に生成する機能です。

内包表記にはリスト内包表記セット内包表記辞書内包表記があります。

内包表記の説明の前に、まずは通常の繰り返し処理でリスト内にある文字列の長さのリストを生成する例を見てみましょう。

上と同じ処理をリスト内包表記では次のように記述でき、かなりスッキリします。

セット内包表記は{}で定義します。セットとはリストの重複する要素を除外したものです。

辞書内包表記は{}で囲んでkey: valueを定義します。

文字列操作

文字列を空白文字で分割するにはsplit()メソッドが便利です。

文字列から左右の空白文字を削除するにはstrip()メソッドが便利です。

pickleモジュール

pickleモジュールを使うと、Pythonのオブジェクトを直列化してファイルなどで読み書きできるになります。

pathlibモジュール

ファイルのパスを扱うにはpathlibモジュールが便利です。

まとめ

これまでご紹介してきた内容は教材のごく一部ですので、詳細は教材をご購入して学習してみてください。

教材には付属データのダウンロードサイトのURLが記載されていますので、Python初心者の方もお手軽にプログラミングの練習ができますよ!

また、PyQ(パイキュー)というオンライン学習サービスもあるみたいなので、コーディングスキルを鍛えたい方は活用してもいいかもしれませんね!

最後に、個人的にこの本で一番良かった点は、モデルの評価でよく使われるROC曲線の解説が丁寧でわかりやすかったところです。

教材はこちら ☟

Python3 エンジニア認定データ分析試験に興味がある方必見!
1000点満点で合格した私が勉強法、出題された問題を下記で紹介してます!

最後までお読みいただきありがとうございました。

AI・機械学習を学びたい方にオススメの講座

[TechAcademy]自宅で学べるオンラインのプログラミングスクール

あなたの現在の実力をもとに、もっとも効果的で無駄のないトレーニングメニューをご用意!
パーソナルメンターのメンタリングとオリジナル学習システムで目標到達まで最短距離で進みます。

こんな方にオススメ

機械学習を学びエンジニアとして活躍したい方
忙しい社会人の方でも、平日の夜、休日を使って学習することで働きながらでもジョブチェンジに挑戦することが可能です。

・将来の技術を学びたい学生の方
これからの時代に必要となる機械学習のスキルを身につければ、就職にも必ず役立ちます。

コメント

タイトルとURLをコピーしました