第1回 データ分析とは
はじめに
本シリーズ「Pythonで学ぶデータ分析実践」は、全12回を通じてデータ分析の基礎から実践までを体系的に学ぶ構成となっています。
Pythonを使いながら、統計学を「分析でどう使うか」という実務視点で解説し、実際に手を動かしながら理解を深めていきます。機械学習を学ぶ前に身につけておきたいデータ分析の基礎力を養成することを目指しています。
シリーズ全体の構成(全12回)
| 回 | テーマ |
|---|---|
| 第1回 | データ分析とは(本記事) |
| 第2回 | データの前処理 |
| 第3回 | データの把握 |
| 第4回 | 相関分析 |
| 第5回 | 統計的推定 |
| 第6回 | 統計的検定 |
| 第7回 | 分散分析 |
| 第8回 | 回帰分析 |
| 第9回 | 時系列データ分析 |
| 第10回 | クラス分類 |
| 第11回 | クラスタリング |
| 第12回 | 次元削減 |
第1回となる本記事では、データ分析とは何か、その流れや活用事例、統計解析との関係、ビッグデータの概念、そしてPythonで使用する主要ライブラリまで、データ分析を始めるために必要な知識を網羅的にまとめています。
これからデータ分析を学び始める方や、全体像を把握したい方の参考になれば幸いです。
1-1. データ分析とは
データ分析とは、何らかの目的を持ってデータを収集・整理したうえで、データの傾向を捉え、そこから新たな知見を見出す作業です。従来の手法では発見が困難な新しい知見を導き出せることがデータ分析の大きなポイントとなります。
データ分析により導出する知見として、以下の3つが考えられます。
- 現状の把握
- 原因の分析
- 未来の予測
現状の把握
データを集計・可視化することで「過去または現在において何が起きているか」を把握します。データの可視化や統計量(平均値や分散など)を計算することで、比較的容易に行うことができます。
今までの常識や手法では知ることができなかった事象や変化が発見できれば、それは新たな知見となります。
具体例:
- ECサイトの月別売上を集計し、売上が低下している月を特定する
- 顧客の年齢分布をヒストグラムで可視化し、主要ターゲット層を把握する
- アクセスログから時間帯別のアクセス数を集計し、ピークタイムを把握する
原因の分析
収集したデータを分析することで「起こった事象の原因を探る」ことができます。今まで発見できなかった「原因と結果の関係」が見つかれば、それは新たな知見となり得ます。
原因と結果の関係を見つけるためには、さまざまな種類の大量データを使用し精度を上げる必要があります。
具体例:
- 売上低下の原因が天候なのか、競合商品の影響なのかを分析する
- 製品の不良率が高い工程を特定し、どの製造条件が影響しているかを探る
- Webサイトの離脱率が高いページを特定し、離脱の要因を分析する
未来の予測
データ分析の結果をもとに「未来にどのような現象が起こるかを予測」することができます。ただし、未来の予測は「100%正確な予測をすることはできない」ことに留意する必要があります。予測精度を少しでも上げるため、さまざまな分析手法を検討します。
具体例:
- 過去の売上データから来月の売上を予測し、仕入れ量を決定する
- 顧客の行動データから解約しそうな顧客を予測し、事前にフォローする
- 気象データと売上の関係を学習し、天候に応じた需要予測を行う
データ分析を成功させるためのポイント
データ分析を始めるにあたり、以下の3つを意識する必要があります。
分析対象の問題を把握する
分析者は、なぜ分析をするかという理由やその問題について、正しく認識する必要があります。データの意味やその背景にある状況を理解し分析方針を明確にすることで、「どのようにデータ収集・整理を行い、どのように分析すればいいのか」といった判断が可能となります。
分析手法について理解する
分析手法はさまざまな手法があり、それらの手法を理解している必要があります。統計ソフトやデータマイニングツールを用いれば、データを入れるだけでそれなりの結果を得ることができますが、正しく分析手法を理解していないと間違った結果を得てしまい、相応しくない分析を行っていたとしてもその誤りに気づくことができません。
分析結果に対する正しい判断を行う
分析結果を得たら、その結果に対して正しい判断を行う必要があります。想定通りの結果が出る場合もあれば、想定に反した結果が出る場合もあります。想定外の結果が出た場合、データ分析手法を再検討し、データの処理方法や収集するデータの特徴についても見直す必要があります。場合によっては「そもそもの仮説が間違っていないか」といった方向転換が必要かもしれません。
1-2. データ分析の流れ(CRISP-DM)
データ分析プロジェクトを進めるための標準的なフレームワークとしてCRISP-DM(Cross-Industry Standard Process for Data Mining)があります。1996年に策定されたこのフレームワークは、業界を問わず広く採用されており、データ分析の進め方を体系的に定義しています。
CRISP-DMは以下の6つのフェーズで構成されています。
| フェーズ | 説明 |
|---|---|
| 1. ビジネスの理解 | 分析の目的やビジネス課題を明確にする |
| 2. データの理解 | 利用可能なデータを収集し、その特性を把握する |
| 3. データの準備 | 分析に適した形式にデータを加工・整形する |
| 4. モデリング | 分析手法を選択し、モデルを構築する |
| 5. 評価 | モデルの精度やビジネス目的への適合性を評価する |
| 6. 展開 | 分析結果を実務に適用し、運用する |
各フェーズの詳細
1. ビジネスの理解(Business Understanding)
プロジェクトの目的を明確にし、ビジネスの観点から分析要件を定義します。
- 解決すべきビジネス課題は何か?
- 分析結果はどのように活用されるか?
- 成功の基準は何か?
2. データの理解(Data Understanding)
分析に使用するデータを収集し、データの品質や特徴を確認します。
- どのようなデータが利用可能か?
- データの量は十分か?
- 欠損値や異常値はないか?
3. データの準備(Data Preparation)
収集したデータを分析可能な形に加工します。全体の作業時間の60〜80%を占めるとも言われる重要なフェーズです。
- 欠損値の補完・削除
- データの型変換
- 特徴量の作成
4. モデリング(Modeling)
分析の目的に適した手法を選択し、モデルを構築します。
- 適切なアルゴリズムの選択
- パラメータの調整
- 複数モデルの比較
5. 評価(Evaluation)
構築したモデルがビジネス目的に適合しているかを評価します。
- モデルの精度は十分か?
- ビジネス要件を満たしているか?
- 改善の余地はないか?
6. 展開(Deployment)
分析結果を実際のビジネスに適用し、運用に乗せます。
- レポートやダッシュボードとして可視化
- システムへの組み込み
- 定期的な再学習・モデル更新
これらのフェーズは一方向ではなく、必要に応じて前のフェーズに戻りながら反復的に進めます。例えば、モデリングの結果が期待に沿わない場合は、データの準備フェーズに戻ってデータの加工方法を見直すことがあります。
1-3. データ分析の活用事例
データ分析はさまざまな業界で活用されています。代表的な事例を紹介します。
| 分野 | 活用事例 |
|---|---|
| マーケティング | 顧客の購買履歴から嗜好を分析し、レコメンドや広告配信を最適化 |
| 製造業 | センサーデータを分析し、設備の故障予測(予知保全)を実施 |
| 金融 | 取引データからクレジットカードの不正利用を検知 |
| 医療 | 患者データを分析し、疾病リスクの予測や治療効果の評価 |
| 小売 | POSデータから需要予測を行い、在庫管理を最適化 |
| 交通 | 交通量データをもとに渋滞予測や最適ルートを提案 |
身近なデータ分析の例
Amazon・Netflixのレコメンド機能
ユーザーの閲覧・購入履歴や類似ユーザーの行動パターンを分析し、「あなたにおすすめ」の商品やコンテンツを自動的に提案しています。これは協調フィルタリングと呼ばれるデータ分析手法の一つです。
コンビニの商品陳列
POSデータ(販売時点情報)を分析し、時間帯や天候に応じて売れ筋商品の陳列を最適化しています。例えば、気温が高い日にはアイスクリームや飲料を目立つ位置に配置するなどの判断に活用されています。
スマートフォンの予測変換
入力履歴やよく使う単語の頻度を分析し、次に入力される可能性の高い単語を予測表示しています。
データ分析で求められるスキル
これらの事例に共通するのは、大量のデータから「パターン」や「傾向」を見出し、意思決定に活用しているという点です。データ分析を活用するためには以下のスキルが求められます。
- ビジネス理解力 — 何を分析すべきか見極める力
- 統計・数学の知識 — 適切な分析手法を選択する力
- プログラミングスキル — Pythonなどでデータを処理する力
- 可視化・伝達力 — 分析結果をわかりやすく伝える力
1-4. データ分析と統計解析の違い
統計解析とは
統計解析とは、膨大な量のデータを分析して、データの特徴やパターンなどさまざまな視点から仮説を立てたり検証したりする手法です。統計解析は統計学をもとにしており、さまざまな産業や調査研究で用いられています。
データ分析と統計解析の関係
| 項目 | データ分析 | 統計解析 |
|---|---|---|
| 目的 | データから知見を得てビジネスに活用する | データの特徴把握や仮説の検証 |
| 範囲 | 統計解析を含む広い概念 | データ分析の具体的手法の一つ |
| アプローチ | 探索的・実践的 | 理論的・数学的 |
統計解析はデータ分析の中核をなす手法であり、データ分析を行う上で統計解析の知識は不可欠です。
統計学の体系
統計学は大きく記述統計と推測統計の2種類に分類できます。
記述統計
あるデータを収集し、表やグラフなどで可視化し、平均や分散などデータの傾向を見ることでデータの特徴を把握する統計です。
例:
- ある商品の都道府県ごとの売り上げを棒グラフで可視化
- ある商品の月ごとの売り上げの推移を折れ線グラフで可視化
- ある商品の販売数とつぶやき数の関係を散布図で可視化
推測統計
手元にある過去データから未来のデータを推測、または母集団からサンプルを抽出し、そのサンプルの特性から母集団の特性を推測する統計です。推測で得た結果が正しいかどうかを検定します。
例:
- 過去の気象情報から未来の天気を予測
- ある商品の市場調査を1000人に対して実施し、その結果をもとに商品開発・プロモーション戦略を立案
主な統計解析手法
| 解析手法 | 説明 |
|---|---|
| 相関分析 | 2変量データの関係の強さを調べる |
| 回帰分析 | 実績データを元に予測式を作成し、未来のデータを予測 |
| 推定 | サンプルデータから全体を予測 |
| 検定 | データ集合に変化が生じているかを判定 |
| 分散分析 | データ集合の違いが偶然か必然かを調べる |
| クラスター分析 | 似ているデータを同一グループにまとめる |
1-5. ビッグデータとは
データ分析で扱うデータストレージとして「ビッグデータ」が使われています。ビッグデータには明確な定義が存在しませんが、一般的に「従来のデータベース管理システムでは扱いにくいほど巨大なデータ群」とされています。
ビッグデータは新商品やサービスの開発、ターゲット指向の広告配信、公共交通の路線計画、都市計画など多岐にわたる分野での利用が期待されています。
ビッグデータの特性(3V)
ビッグデータの特性は「3V」として知られています。
Volume(量)
巨大なデータサイズや急激なデータ量の増加を指します。データには文字や数値だけでなく、文章、音声、動画などの大容量データも含まれます。業務で利用されるデータに加え、ブログやSNSといった日常生活で生成される情報も含まれるのが特徴です。
規模感の例:
- YouTube:毎分500時間以上の動画がアップロード
- X(旧Twitter):1日あたり5億件以上の投稿
- IoTセンサー:1つのセンサーが毎秒数千件のデータを生成
Variety(多様性)
データの形式が多様であることを意味します。テキストデータ(文字、数値、日付)、文章、ログデータ、バイナリデータ(画像、音声、動画)など、さまざまなタイプのデータが含まれます。
| データ種別 | 例 |
|---|---|
| 構造化データ | RDBのテーブル、CSV、Excel |
| 半構造化データ | JSON、XML、ログファイル |
| 非構造化データ | 画像、音声、動画、テキスト文書 |
Velocity(速度)
データの生成速度や発生頻度が増加している状況を指します。スマートフォンやIoTデバイス(センサー、防犯カメラなど)の普及により、大量のデータがリアルタイムに生成されています。
リアルタイム処理が求められる例:
- 株価のリアルタイム分析
- SNSのトレンド検知
- 不正アクセスの即時検出
3Vを超える特性(5V)
近年では3Vに加え、以下の2つを加えた5Vで語られることもあります。
- Veracity(正確性) — データの信頼性や品質がばらつくこと
- Value(価値) — 大量のデータの中から、いかに有用な価値を見出すか
これらの特性を理解し適切に対応することが、ビッグデータを活用する上での鍵となります。
1-6. Pythonで使うライブラリ
データ分析ではPythonが広く使われています。Pythonが選ばれる理由としては以下が挙げられます。
- ライブラリが豊富 — データ分析に特化したライブラリが充実している
- コードが読みやすい — シンプルな文法で学習コストが低い
- コミュニティが活発 — 情報やサンプルコードが豊富に入手できる
- 機械学習との連携 — scikit-learn、TensorFlowなど機械学習ライブラリとの親和性が高い
以下に、データ分析で頻繁に使用する主要ライブラリを紹介します。
NumPy(ナンパイ)
数値計算のための基盤ライブラリです。多次元配列(ndarray)を効率的に扱うことができ、行列演算や数学関数が充実しています。Pandasやscikit-learnなど多くのライブラリの内部でも使用されています。
主な機能:
- 高速な配列演算(ベクトル化演算)
- 線形代数の計算(行列積、逆行列、固有値など)
- 乱数生成
- 統計関数(平均、分散、標準偏差など)
import numpy as np
# 配列の作成
arr = np.array([1, 2, 3, 4, 5])
# 基本的な統計量
print(f"平均: {np.mean(arr)}") # 平均: 3.0
print(f"標準偏差: {np.std(arr)}") # 標準偏差: 1.4142...
print(f"最大値: {np.max(arr)}") # 最大値: 5
print(f"合計: {np.sum(arr)}") # 合計: 15
# 2次元配列(行列)の作成
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(f"行列の形状: {matrix.shape}") # (3, 3)
Pandas(パンダス)
データの操作・分析に特化したライブラリです。表形式のデータを扱うDataFrameと、1次元データを扱うSeriesが主要なデータ構造です。CSVやExcelファイルの読み込み、データのフィルタリング・集計・結合などが簡単に行えます。
主な機能:
- CSV・Excel・JSON・SQLなど多様なデータの読み書き
- データの抽出・フィルタリング・並び替え
- 欠損値の処理
- グループ化と集計(groupby)
- データの結合(merge、concat)
import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv("data.csv")
# 基本情報の確認
print(df.head()) # 先頭5行を表示
print(df.describe()) # 基本統計量を表示
print(df.info()) # データ型や欠損値の情報
# データのフィルタリング
filtered = df[df["age"] >= 30]
# グループごとの集計
grouped = df.groupby("category")["sales"].mean()
Matplotlib(マットプロットリブ)
グラフ描画のための基本ライブラリです。折れ線グラフ、棒グラフ、散布図、ヒストグラムなど、さまざまな種類のグラフを作成できます。細かいカスタマイズが可能で、論文やレポートに適したグラフを描画できます。
主な機能:
- 折れ線グラフ、棒グラフ、散布図、ヒストグラム、円グラフなど
- 複数グラフの配置(サブプロット)
- 軸ラベル、タイトル、凡例のカスタマイズ
- 画像ファイルとしてエクスポート(PNG、PDF、SVGなど)
import matplotlib.pyplot as plt
# 折れ線グラフ
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(8, 5))
plt.plot(x, y, marker='o', label="売上推移")
plt.xlabel("月")
plt.ylabel("売上(万円)")
plt.title("月別売上推移")
plt.legend()
plt.grid(True)
plt.show()
# ヒストグラム
import numpy as np
data = np.random.randn(1000)
plt.hist(data, bins=30, edgecolor='black')
plt.xlabel("値")
plt.ylabel("頻度")
plt.title("データの分布")
plt.show()
Seaborn(シーボーン)
Matplotlibをベースとした統計データ可視化ライブラリです。より美しいグラフを少ないコードで描画できます。ヒートマップや箱ひげ図、ペアプロットなど、統計分析に適したグラフが充実しています。
主な機能:
- 統計的な可視化(箱ひげ図、バイオリンプロット、ペアプロットなど)
- 相関行列のヒートマップ
- カテゴリカルデータの可視化
- デフォルトで見やすいカラーパレット
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv("data.csv")
# 相関行列のヒートマップ
plt.figure(figsize=(10, 8))
sns.heatmap(df.corr(), annot=True, cmap="coolwarm", fmt=".2f")
plt.title("相関行列")
plt.show()
# 箱ひげ図
sns.boxplot(x="category", y="value", data=df)
plt.title("カテゴリ別の値の分布")
plt.show()
# ペアプロット(全変数の組み合わせ散布図)
sns.pairplot(df, hue="category")
plt.show()
ライブラリの比較まとめ
| ライブラリ | 用途 | 特徴 |
|---|---|---|
| NumPy | 数値計算 | 高速な配列演算、数学関数 |
| Pandas | データ操作 | 表形式データの読み込み・加工・集計 |
| Matplotlib | グラフ描画 | 基本的な可視化、細かいカスタマイズ |
| Seaborn | 統計可視化 | 美しい統計グラフ、少ないコード |
ライブラリのインストール
pip install numpy pandas matplotlib seaborn
Jupyter Notebookを使うと、コードの実行結果やグラフをインタラクティブに確認しながら分析を進めることができます。
pip install jupyter
jupyter notebook
1-7. データの準備
データ分析に取り組む際は、分析対象のデータを準備することが重要です。これにはデータ収集、データ蓄積、データ変換の3つの主要なプロセスがあります。データの準備はデータ分析の全工程のうち最も時間がかかる作業であり、全体の60〜80%を占めるとも言われています。
データの収集方法
データを新規に収集する場合、以下の方法があります。
| 収集方法 | 説明 | 例 |
|---|---|---|
| 手動入力 | 人の手によりデータを入力 | アンケート回答、調査票の記入 |
| 自動生成 | プログラムにより自動的に生成 | アクセスログ、操作ログ |
| センサー | 各種デバイスから自動取得 | 温度センサー、GPSデータ |
| スクレイピング | WebサイトからHTML/JSONを取得 | 商品情報、ニュース記事 |
| API連携 | Web APIを利用してデータ取得 | SNSデータ、気象データ |
Pythonでのデータ収集例
import requests
import pandas as pd
# Web APIからデータ取得の例
response = requests.get("https://api.example.com/data")
data = response.json()
# CSVファイルの読み込み
df = pd.read_csv("sales_data.csv")
# Excelファイルの読み込み
df_excel = pd.read_excel("report.xlsx", sheet_name="Sheet1")
データの蓄積方法
収集したデータは、適切なプラットフォームを活用して蓄積します。ビッグデータ技術は構造化データだけでなく、非構造化データの管理にも対応しており、ファイルベースのデータから特定のデータ項目を検索・抽出する機能を提供します。
| 蓄積技術 | 特徴 | 用途 |
|---|---|---|
| RDB(MySQL、PostgreSQL) | 構造化データの管理に最適 | 業務データ、トランザクション |
| Hadoop | 大量データの分散処理基盤 | ログデータ、バッチ処理 |
| NoSQL(MongoDB、Redis) | 柔軟なスキーマで多様なデータを管理 | JSON形式データ、キャッシュ |
| クラウドストレージ(S3、GCS) | スケーラブルなファイル保存 | 画像、動画、大容量ファイル |
データの変換
単にデータを生成し転送するだけでは、分析に適した形式になっていないことが多いです。特に音声、画像、テキストなどの非構造化データは、統計解析に適した形式に変換する作業が必要です。
| 非構造化データ | 変換処理 | 具体例 |
|---|---|---|
| 画像 | 画像内容を把握して、名称や数値などのデータに変換 | OCRによる文字認識、物体検出による分類 |
| 音声 | 音声データを、テキストの文章データに変換 | 音声認識によるテキスト化、感情分析 |
| 文章 | 単語、出現数、影響度などを文字や数値に変換 | 形態素解析、TF-IDF、Word2Vec |
データの品質
データを準備する際に重要なのがデータの品質です。分析結果の精度は入力データの品質に大きく依存します(Garbage In, Garbage Out)。
確認すべきデータ品質の観点:
- 完全性 — 欠損値がないか(次回の「前処理」で詳しく解説)
- 正確性 — データに誤りがないか
- 一貫性 — データ間で矛盾がないか
- 適時性 — データが最新の状態か
- 重複 — 同じデータが重複して登録されていないか
これらのプロセスを適切に管理することで、データ分析の精度と効率を向上させることが可能です。
1-8. 機械学習の手法
データ分析を進める中で、コンピューターにデータの特徴を自動的に学習させる技術が機械学習です。学習によって作られる「学習モデル」は、未知のデータに対する予測や意思決定に利用されます。
機械学習には主に3つの手法があります。
| 手法 | 説明 | 例 |
|---|---|---|
| 教師あり学習 | ラベル付きデータ(正解データ)を用いて予測モデルを学習 | 回帰、分類 |
| 教師なし学習 | ラベルなしデータから隠れた構造やパターンを発見 | クラスタリング、次元削減 |
| 強化学習 | 環境からのフィードバック(報酬)を基に最適な行動を学習 | ゲームAI、ロボット制御 |
教師あり学習
ラベル付けされたデータ(正解データ)を用いて、特定の入力から期待される出力を予測するモデルを学習させる方法です。パターン認識や予測問題に有効であり、主に回帰問題と分類問題に大別されます。
教師なし学習
ラベル付けされていないデータを使用して、データ内に隠された構造やパターンを発見する手法です。明確な答えが存在しない状況で有効であり、データの本質的な特徴やクラスタを自動的に識別します。
強化学習
環境からのフィードバック(報酬)を基に最適な行動を学習する手法です。エージェントは報酬を最大化する行動選択を目指します。代表的なアルゴリズムに「Q-Learning」や「アクター・クリティック」があります。
1-9. 機械学習のアルゴリズム
機械学習のアルゴリズムは、大きく「回帰」「分類」「クラスタリング」「次元削減」の4つに分けることができます。
| カテゴリ | 目的 | 主なアルゴリズム |
|---|---|---|
| 回帰 | 連続値の予測 | 線形回帰、ベイズ線形回帰 |
| 分類 | カテゴリへの分類 | ロジスティック回帰、決定木、SVM |
| クラスタリング | 類似データのグループ化 | k-means法、混合正規分布モデル |
| 次元削減 | 情報を保持しつつ変数を削減 | 主成分分析(PCA)、特異値分解 |
回帰(Regression)
関連する値Xから連続値Yを予測する手法です。過去のデータをもとに未知のデータを予測する際に用いられます。
例:過去の株価から将来の株価を予測、気温から電力消費量を予測
分類(Classification)
さまざまな対象を特定のカテゴリ(クラス)に分ける手法です。2つのクラスに分ける「2クラス分類」と3つ以上のクラスに分ける「多クラス分類」があります。
例:メールの迷惑メール判定、手書き数字の識別、画像内の物体判定
クラスタリング(Clustering)
与えられたデータを似た特性を持つグループに分ける手法です。
例:顧客データをライフスタイルや消費傾向に基づいて分類
次元削減(Dimensionality Reduction)
データの特徴を保ちつつ情報量を減少させる手法です。多くの特徴を持つデータをより少ない項目で表現し、データの解釈を容易にします。
例:体重と身長の2変数からBMIという1つの指標に縮小
1-10. 特徴ベクトル
テキスト、画像、音声などの非構造データは、そのままでは機械学習で扱えません。これらのデータを数値に変換し、複数の特徴を1つにまとめてベクトルとして表現したものを特徴ベクトルと呼びます。
特徴ベクトルの例
| データ | 特徴ベクトル |
|---|---|
| 人の体格 | [身長, 体重] → 2次元 |
| 地点の位置 | [緯度, 経度, 高度] → 3次元 |
| 住宅 | [面積, 築年数, 駅距離, 部屋数] → 4次元 |
特徴ベクトルの次元数は特徴の数に一致します。多くの機械学習アルゴリズムは、入力となる特徴ベクトルに重みをかけて内積を計算し、その結果を変換して出力値を得ます。
n個のサンプルそれぞれがm個の特徴を持つ場合、データ全体はn行m列の行列(matrix)として表現できます。
1-11. 機械学習のPythonライブラリ(scikit-learn)
Pythonには機械学習のための豊富なライブラリが揃っています。
| ライブラリ | 特徴 | 用途 |
|---|---|---|
| scikit-learn | シンプルなAPI、豊富なアルゴリズム | 古典的な機械学習全般 |
| TensorFlow | Google開発、大規模対応 | ディープラーニング |
| PyTorch | 直感的な記述、研究向け | ディープラーニング |
scikit-learnは初めて機械学習を学ぶのに最適なライブラリです。多数のアルゴリズムが実装されており、どのアルゴリズムも統一されたインターフェース(fit → predict)で使用できます。
公式ドキュメント: https://scikit-learn.org/stable/index.html
scikit-learnチートシート
scikit-learnには、データの特性に応じて適切なアルゴリズムを選択するためのチートシートが提供されています。
チートシートは大きく以下の4つに分類されています。
- Classification(分類) — カテゴリを予測
- Regression(回帰) — 連続値を予測
- Clustering(クラスタリング) — グループ化
- Dimensionality Reduction(次元削減) — 特徴量の圧縮
データ数や性質に応じて開始地点から矢印をたどることで、適切なアルゴリズムにたどり着けます。
1-12. 機械学習の流れ
データ収集からモデルが作成されるまでの流れは以下の通りです。
データ収集 → データ前処理 → データ分割 → モデル学習 → 予測 → 評価
↑ |
|____ パラメータ調整 ___|
データ前処理
収集したデータには異常値や欠損値が含まれる場合があります。これらはモデルの性能に悪影響を与えるため、事前に除去または補完が必要です。必要に応じてデータスケーリングやエンコーディングも行います(第2回で詳しく解説)。
データ分割
前処理後のデータを学習用データと評価用データに分割します。学習用データでモデルを構築し、評価用データでモデルの汎化性能を評価します。
アルゴリズムの選択
予測するデータの特徴(サンプル数、特徴量の数、ノイズの大きさなど)によって、使用すべきアルゴリズムが変わります。scikit-learnのチートシートが選択の指針になります。
ハイパーパラメータの最適化
機械学習モデルには、学習の方法を制御するハイパーパラメータがあります。最適なパラメータを見つけるために、学習→評価のサイクルを繰り返し、最も精度が高い設定を探索します。代表的な手法にグリッドサーチや交差検証があります。
まとめ
本記事では、データ分析の基礎として以下の内容を解説しました。
| 項目 | ポイント |
|---|---|
| データ分析とは | 目的を持ってデータから知見を見出す作業 |
| CRISP-DM | データ分析プロジェクトの標準的な進め方(6フェーズ) |
| 活用事例 | マーケティング、製造業、金融など多分野で活用 |
| 統計解析との違い | 統計解析はデータ分析の中核となる具体的手法 |
| ビッグデータ | 3V(Volume, Variety, Velocity)で特徴づけられる巨大データ群 |
| Pythonライブラリ | NumPy、Pandas、Matplotlib、Seabornが主要ツール |
| データの準備 | 収集・蓄積・変換の3プロセスが重要 |
| 機械学習の手法 | 教師あり学習・教師なし学習・強化学習の3種類 |
| 機械学習のアルゴリズム | 回帰・分類・クラスタリング・次元削減の4カテゴリ |
| scikit-learn | 統一されたAPIで多数のアルゴリズムを利用可能 |
次回以降の予定は以下の通りです。
- 【第2回】データの前処理(欠損値・外れ値・ダミー変数・データスケーリングなど)
- 【第3回】データの把握(基本統計量・ヒストグラム・箱ひげ図・散布図など)
- 【第4回】相関分析(共分散・相関係数・相関比・連関係数など)
- 【第5回】統計的推定(母集団と標本・点推定・区間推定・信頼区間)
- 【第6回】統計的検定(仮説検定・p値・t検定・カイ二乗検定など)
- 【第7回】分散分析(一元分散分析・二元分散分析・多重比較)
- 【第8回】回帰分析(単回帰・重回帰・一般化線形モデル・モデル評価)
- 【第9回】時系列データ分析(トレンド・季節性・ARIMA・SARIMAなど)
- 【第10回】クラス分類(決定木・ランダムフォレスト・ロジスティック回帰など)
- 【第11回】クラスタリング(k-means・階層クラスタリング・エルボー法など)
- 【第12回】次元削減(主成分分析・寄与率・可視化)
- 【発展編】分析精度の向上(特徴量エンジニアリング・ハイパーパラメータ調整・アンサンブル学習など)
- 【発展編】ニューラルネットワーク入門(パーセプトロン・誤差逆伝播法・TensorFlow・Kerasなど)
ぜひシリーズを通して、データ分析の基礎力を身につけていきましょう。