Python 3 データ分析試験の勉強方法①

Python 3 データ分析試験の勉強方法①


認定テキストは下記です。
1章から5章までありますが、今回は1章のデータ分析エンジニアの役割の解説です。

こちらを読み込めば大丈夫なのですが
完全に読み込むのは初学者にはきついです。
受験した記憶から出題された問題をまとめてみました!
※問題を持ち帰ることはできないので私の記憶の限り記載しています。
※過去問は配布されておりません。

1.データ分析の世界

データ分析は幅広い分野で行われています。
例えば工場システムから出力される機器の温度変化や回転数などのデータを基に異常の兆候を事前に発見することが可能になりました。

データ分析ではPythonがデフォルトです。
Pythonはコンパイル不要なオープンソースのスクリプト言語です。

Pythonには多くの標準ライブラリがそろっていますが、外部パッケージも必要です。
有名なものにはJupyterNotebook、NumPy、pandas、Matplotlib、SciPy、scikitlearnがあります。

データサイエンティストは数学、情報工学、対象分野の専門知識が必要です。
対してデータ分析エンジニアでは最低限持つべき知識は以下となります。

必要技術詳細対応パッケージ、ライブラリ
データ入手、加工データを入手して、加工する技術Numpy、pandas
データの可視化グラフ等で分かり易くするMatplotlib、pandas
プログラミングPythonのスキルPython
インフラレイヤーサーバ構築のスキル
※データ加工は前処理ともいわれもっとも重要です。

2.機械学習の位置づけと流れ

機械学習は大量のデータから一定の法則性を見つけてそれを数式化します。
モデルといいます。
モデルはデータとアルゴリズムにて作成します。
このモデルに入力データ以外のデータ(未知データ)を入力して予測を行います。

機械学習なしに予測することも可能です。
1つ目はルールベースです。
単純に明日の天気が晴れなら売上予測が10万以上、雨なら3万未満、曇りなら3万~10万未満等の予測を立てます。
判別材料となるのは晴れ、曇り、雨の3パターンだけになりますのでルール化は可能です。
別の言い方をすればプログラミング可能です。
ですがルールが複雑になればなるほどプログラミングが不可能になります。

2つ目は統計です。
統計データから未知のデータを予測します。
ただ機械学習アルゴリズムは統計的手法のものも多いため明確に分類することはできません。

機械学習については以下の3パターンに分類できます。

  • 教師あり学習
  • 教師なし学習
  • 強化学習

教師あり学習

学習に利用する訓練データに正解となるラベルデータが存在する場合に用いられる方式です。
例えば手書き文字を認識するAIを開発したいとします。
以下のように手書きの訓練データに正解が付与されている場合に教師あり学習が用いられます。

教師あり学習では回帰分類の2種類があります。
まずは回帰です。
例えばあるコンビニで日の最高気温と飲料水の売り上げに相関性があるとします。
以下グラフ化します。
気温が上がると売上高も上がるという相関があります。
この関係性をy = 664.48x + 7354.4という数式(モデル)で表現できます。
※アルゴリズムは最小二乗法になります。

このモデルを用いて明日の売上高を予想してみましょう。
明日は27度になるという予報でした。以下のモデルxに27を代入します。
y = 664.48x + 7354.4から2万5295円と予想できます。
yつまり売上高を目的変数、xつまり気温を説明変数(特徴量)といいます。
現場ではこうした予想から仕入れ量を調整したりできます。
このように目的変数が連続値となるものを回帰といいます。

これに対して分類は目的変数がカテゴライズされているデータとなります。
例えばある顧客がその商品買うか買わないかを予測したいとします。
買うか買わないかを目的変数になるので0もしくは1を出力すればいいのです。
買うか買わないかをy(目的変数)として0か1が入ります。
説明変数はx1、x2でそれぞれに重みw1、w2がかかります。
y=b+x1w1+x2w2
y ≦ 0 なら 0 を出力(買わない)
y > 0 なら 1 を出力(買う)
このようなモデルを分類といいます。

教師なし学習

対して正解ラベルのない学習を教師なし学習といいます。
正解ラベルのない、つまり目的変数がないということです。
やや疑問かもしれませんが、それでもグループ分けをする手法になります。
代表的なものにクラスタリングがあります。
詳細アルゴリズムは後述しますがここではイメージだけ掴んで頂ければ幸いです。
アヤメという花を例に解説致します。


アヤメの花びらの長さをy軸、と幅をx軸として散布図を作ります。
すると大きく2つのグループに感覚的に分けれそうです。
つまりこの結果を用いて(モデルを用いて)未知のデータの花びら幅と長さを説明変数として
どちらのグループに属するかを予測するわけです。

強化学習
現在の状況をもとに取るべき行動を決定することを学習する仕組みです。
人間のプロに勝ったAlphaGoには強化学習が使われています。
教師あり学習と似てはいるのですが、明確な正解は与えられていません。


機械学習の処理の手順


正しい手順を選択せよという問題がありました。
処理の流れを記憶しておきましょう。

  • データ入手
  • データ加工
  • データ可視化
  • アルゴリズム選択
  • 学習プロセス
  • 精度評価
  • 試験運用
  • 結果利用

・データ入手、データ加工
データがなければ何も始まりません。
手に入れたデータはNumPy、pandasといったパッケージにて整え、欠損値対応をします。

・データ可視化
データを表やグラフで可視化します。
Matplotlibが活用されます。

・アルゴリズム選択
目的やデータに沿ったアルゴリズムを選択します。
この段階ではscikit-learnが活用されます。

・学習プロセス
この段階でもscikit-learnを活用し、学習を行います。

・精度評価
学習したモデルを用いて予測を行います。
この時は学習に使ったデータではなく、検証用の別データを用います。
単純に正解率だけで結論を出してはいけません。
この段階でもscikit-learnが活用されます。

・試験運用
この段階では結果のわからない未知のデータでの実行が必要になります。
結果が思わしない場合は、各プロセスを見直し、再実行します。
これらの繰り返しがより良い結果を作っていくことになります。

・結果利用
実業務に利用できるくらいの制度になれば、未知データを入力して予測するシステムを構築することができます。

3.データ分析に使う主なパッケージ(ライブラリ)

※書籍によってパッケージとライブラリの言葉の定義が異なります。
あまり気にしなくてよいでしょう。

Jupyter Notebook

Jupyter Notebookは、Webブラウザ上でPythonなどのコードを実行できる環境です。
下記のようにその場で実行結果が表示されます。

NumPy

Numpyの基礎的なところは下記で解説しています。
数値計算を扱うパッケージになります。

pandas

pandasの基礎的なところは下記で解説しています。
表データを加工するパッケージになります。

Matplotlib

Pythonで主に2次元のグラフを描画するためのライブラリになります。
このライブラリについての問題もそこそこあったかと思います。

matplotlib.pyplot をインポートします。
import matplotlib.pyplot as plt

それからグラフ化したいデータを用意します。
ndarray形式で作成します。

import numpy as np
y = np.random.rand(5)
y = y*10
print(y)

以下のようにランダムなデータが出来上がりました。

それではこのデータをグラフ化します。
plt.plot(y)
plt.show()



x軸についてのデータも任意の値を設定することができます。
x = np.array([1,2,3,4,5])
plt.plot(x,y)
plt.show()

※y軸の値はランダム関数を利用していますので値は毎回変化します。

scikit-learn

多くのサンプルデータを持っており、様々なアルゴリズムが実装されています。
詳細は後述します。

SciPy

NumPyと同様に数値計算を行います。
SciPyを構成する要素のひとつがNumPyです。

お疲れ様でした。
参考書籍はこちらになります。