無料ツールで始めるデータ分析

顧客や商品を自動でグループ分け!無料ColabとPythonで実践するクラスター分析入門

Tags: クラスター分析, Google Colab, Python, 顧客分析, データ活用, 無料ツール

導入:データの中に隠された「グループ」を見つけ出す

データ分析を進める中で、「似た特徴を持つ顧客をまとめて、それぞれに合ったアプローチをしたい」「売れ行きのパターンが似ている商品をグループ化して、陳列やプロモーションを最適化したい」といった課題に直面することは少なくありません。しかし、手作業でデータの全体像からこうした共通点を見つけ出すのは非常に困難です。

このような場合に役立つのが「クラスター分析」という手法です。クラスター分析は、与えられたデータの中から、互いに似ているものを集めて「クラスター(集団)」を形成する分析手法です。これにより、データの中に自然に存在するグループやパターンを自動的に発見することができます。

データ分析に関心があり、表計算ソフトは使っているものの、プログラミングや高度な分析はこれからという方もいらっしゃるかと思います。高価な専門ツールを導入しなくても、無料で利用できるツールと基本的なコードを使って、このクラスター分析を始めることができます。この記事では、Google Colaboratory(以下、Google Colab)とPythonという無料ツールを使って、クラスター分析の基本と実践方法を解説します。

クラスター分析とは?なぜ無料ツールで始めるのか

クラスター分析の概要

クラスター分析は、多変量解析(複数の変数を持つデータを分析する手法)の一つで、観測対象(この場合は顧客や商品など)を、変数に基づいた類似性によってグループ分けする手法です。例えば、顧客の年齢、性別、居住地域、購入履歴などのデータを使って、似たような購買行動をとる顧客層を自動的に特定することができます。

この分析の目的は、データ全体をいくつかのグループに分割することで、それぞれのグループが持つ特徴を理解し、その特徴に基づいた戦略や施策を考えることにあります。人間の目では見つけにくい、データの中に潜む構造やパターンを浮かび上がらせることができるのが大きなメリットです。

無料ツールで始めるメリット

クラスター分析のような多変量解析を行うには、通常、統計解析ソフトウェアやプログラミング言語が必要になります。専門的なツールは高価な場合が多く、導入に躊躇する方もいらっしゃるかもしれません。

しかし、Google ColabとPythonを使えば、これらの高度な分析をコストをかけずに始めることが可能です。

これらのツールを組み合わせることで、専門ツールなしにクラスター分析を実行できる環境が手に入ります。もちろん、Pythonのコードを書く必要がありますが、基本的なコードであれば、この記事で紹介する手順に沿って進めることで実行可能です。

メリット・デメリット

メリット:

デメリット:

Google ColabとPythonでクラスター分析を実践する

ここでは、最も一般的なクラスター分析の手法の一つである「K-Means(K平均法)」を例に、具体的な手順を解説します。

1. Google Colabを起動する

Googleアカウントがあれば、以下のURLからGoogle Colabにアクセスできます。 https://colab.research.google.com/

「ノートブックを新規作成」を選択すると、コードを記述・実行できる画面が開きます。これがColabのノートブック環境です。

2. データを用意する

クラスター分析を行うためには、分析対象のデータが必要です。ここでは、顧客データ(例: 顧客ID、購入金額、アクセス頻度、サイト滞在時間など)を想定します。データはCSV形式で用意するのが一般的です。

例として、以下のような架空の顧客データをCSVファイルとして作成し、ファイル名を customer_data.csv とします。

| CustomerID | PurchaseAmount | AccessFrequency | StayDuration | | :--------- | :------------- | :-------------- | :----------- | | 1 | 10000 | 20 | 300 | | 2 | 30000 | 5 | 100 | | 3 | 5000 | 30 | 500 | | 4 | 25000 | 8 | 150 | | 5 | 8000 | 25 | 400 |

Colabのノートブック環境の左側にあるファイルアイコンをクリックし、「セッションストレージにアップロード」から作成したCSVファイルをアップロードします。

3. Pythonコードを記述・実行する

Colabのノートブックは、コードセルとテキストセルで構成されています。コードセルにPythonコードを記述し、実行ボタン(セルの左側にある再生マーク)をクリックして実行します。

Step 1: 必要なライブラリのインポート

まず、データ分析に必要なライブラリをインポートします。 * pandas: データの読み込みや操作に使います。 * sklearn.cluster.KMeans: K-Meansクラスター分析を実行するためのライブラリです。 * sklearn.preprocessing.StandardScaler: 分析前にデータを標準化するために使います。 * matplotlib.pyplot: 結果をグラフで可視化するために使います。

# 必要なライブラリをインポート
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

このコードセルを実行してください。エラーが出なければ成功です。

Step 2: データを読み込む

アップロードしたCSVファイルを読み込みます。

# CSVファイルを読み込む
# ファイル名はアップロードしたファイル名に合わせてください
df = pd.read_csv('customer_data.csv')

# 最初の5行を表示してデータを確認
print(df.head())

pd.read_csv() 関数でファイルを読み込み、df という変数に格納します。df はデータフレームと呼ばれ、表形式のデータを扱うのに便利です。df.head() でデータの冒頭部分を確認できます。

Step 3: 分析に使う変数を選択し、前処理を行う

クラスター分析では、各データ間の「距離」を計算して類似性を判断します。変数(PurchaseAmount, AccessFrequency, StayDurationなど)のスケール(値の範囲)が大きく異なると、スケールが大きい変数の影響が過剰になってしまうことがあります。これを防ぐために、データを「標準化(Standardization)」することが一般的です。標準化とは、データの平均を0、標準偏差を1に揃える処理です。

ここでは、CustomerID以外の数値変数を選択し、標準化を行います。

# 分析に使う変数を選択 (CustomerIDは除く)
# ここでは 'PurchaseAmount', 'AccessFrequency', 'StayDuration' を使用
X = df[['PurchaseAmount', 'AccessFrequency', 'StayDuration']]

# データの標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 標準化されたデータの最初の5行を表示 (numpy配列になる)
print("\n標準化されたデータ:")
print(X_scaled[:5])

df[['変数名1', '変数名2', ...]] で分析に使う列を選択します。StandardScaler() を初期化し、fit_transform() メソッドでデータの標準化を実行します。結果は X_scaled に格納されます。

Step 4: K-Meansモデルを作成し、クラスター分析を実行する

K-Meansでは、事前にクラスターの数(Kの値)を決める必要があります。最適なKの値を決定する方法もありますが、ここでは例としてK=3として分析を進めます。

# クラスター数 (K) を設定
# 分析者がビジネス要件やデータの性質から決める必要があります。
k = 3

# K-Meansモデルを作成
kmeans = KMeans(n_clusters=k, random_state=42, n_init=10) # n_init=10で安定化

# クラスター分析を実行
kmeans.fit(X_scaled)

# 各データがどのクラスターに属するかを取得
labels = kmeans.labels_

# 分析に使った元のデータフレームにクラスターラベルを追加
df['Cluster'] = labels

# クラスターラベルが追加されたデータの最初の5行を表示
print("\nクラスターラベルが追加されたデータ:")
print(df.head())

KMeans(n_clusters=k, random_state=42, n_init=10) でK-Meansモデルを作成します。n_clusters でクラスター数を指定します。random_state は結果を固定するための設定です。n_init=10 は、初期値を10回ランダムに選び、最も良い結果を採用するための設定です。

kmeans.fit(X_scaled) で分析を実行します。

kmeans.labels_ には、各データが割り当てられたクラスターの番号(0, 1, 2, ...)が格納されています。これを元のデータフレーム df に新しい列 'Cluster' として追加します。

Step 5: 分析結果を確認し、解釈する

各データがどのクラスターに属するかはわかりましたが、それぞれのクラスターがどのような特徴を持つグループなのかを理解することが重要です。これは、元のデータフレームにクラスターラベルを追加したものを使って、クラスターごとの平均値などを比較することで行います。

# クラスターごとの平均値を計算
# CustomerID列は含めずに集計
cluster_means = df.groupby('Cluster')[['PurchaseAmount', 'AccessFrequency', 'StayDuration']].mean()

print("\nクラスターごとの平均値:")
print(cluster_means)

df.groupby('Cluster') でデータをクラスターごとにグループ化し、.mean() で各変数の平均値を計算します。この平均値を見ることで、例えば「クラスター0は購入金額が高く、アクセス頻度も高い」「クラスター1は購入金額は低いが、滞在時間が長い」といった特徴を読み取ることができます。

Step 6: 結果を可視化する(オプション)

分析結果を視覚的に確認することも、クラスターの特徴を掴むのに役立ちます。ただし、3次元以上のデータは平面に図示するのが難しいため、ここでは例として2つの変数(AccessFrequencyとPurchaseAmount)の関係を、クラスターごとに色分けして散布図で表示します。

# 結果の可視化 (例として2つの変数で散布図を描画)
plt.figure(figsize=(8, 6))

# クラスターごとに色分けして散布図を描画
for cluster_id in sorted(df['Cluster'].unique()):
    cluster_data = df[df['Cluster'] == cluster_id]
    plt.scatter(cluster_data['AccessFrequency'], cluster_data['PurchaseAmount'], label=f'Cluster {cluster_id}')

# グラフのタイトルと軸ラベルを設定
plt.title('Cluster Analysis of Customers (AccessFrequency vs PurchaseAmount)')
plt.xlabel('Access Frequency')
plt.ylabel('Purchase Amount')
plt.legend()
plt.grid(True)
plt.show()

matplotlib.pyplot を使ってグラフを作成します。df.groupby('Cluster') でクラスターごとにデータを抽出し、それぞれのクラスターに属するデータの散布図を異なる色で描画します。plt.show() でグラフが表示されます。

この散布図から、「特定の領域に固まっているグループ(クラスター)」が存在することが視覚的に確認できます。例えば、右上にいる顧客は「アクセス頻度も高く、購入金額も多い優良顧客」といったように解釈できます。

分析結果を業務に活かすには?

クラスター分析で得られたグループ(クラスター)は、ビジネスにおける具体的なアクションに繋げることができます。

よくある疑問や注意点

結論:無料ツールでデータの中の宝物を見つけよう

この記事では、無料のGoogle ColabとPythonを使って、データの中に隠された類似グループを見つけ出すクラスター分析の基本的な流れを解説しました。データを用意し、必要なライブラリをインポートし、K-Meansを実行、そして結果を解釈するという一連のステップを、コード例と共に示しました。

クラスター分析は、顧客セグメンテーションや商品分析など、ビジネスの様々な場面で非常に強力なツールとなります。これまでデータ分析は難しい、高価なツールが必要だと思っていた方も、Google ColabとPythonを使えば、手軽に実践を始めることができます。

この記事で紹介した内容はクラスター分析の入門に過ぎませんが、まずは小さなデータで試してみて、データがどのようなグループに分かれるのか、どのような特徴を持つのかを観察してみてください。データの中に眠る新しい発見や、ビジネス上の課題解決のヒントが見つかるはずです。

今回のK-Means以外にも様々なクラスター分析の手法や、最適なクラスター数を決めるための発展的な手法があります。ぜひ、この記事を足がかりに、無料ツールを使ったデータ分析の世界をさらに深く探求してみてください。