機械学習で顧客の購買行動を予測する方法:実装から精度向上まで徹底解説
はじめに
現代のビジネスにおいて、「この顧客は商品を購入するか?」という予測は企業の売上に直結する重要な課題です。機械学習を活用することで、顧客の行動履歴や属性データから購買確率を予測し、効率的なマーケティング戦略を立案できます。
本記事では、顧客の購買予測を行う機械学習モデルの構築方法を、初心者にも分かりやすく解説します。
顧客購買予測とは
顧客購買予測とは、過去の顧客データを基に機械学習アルゴリズムを使用して、特定の顧客が将来商品を購入する確率を算出する手法です。この技術により、以下のメリットが得られます:
- マーケティング効率の向上:購買可能性の高い顧客に集中してアプローチ
- コスト削減:無駄な広告費用の削減
- 顧客体験の向上:個々の顧客に適したタイミングでの提案
- 売上の最大化:確度の高い見込み客への重点的なセールス
必要なデータと特徴量
基本的な顧客データ
- 年齢、性別、居住地域
- 過去の購買履歴
- サイト滞在時間、閲覧ページ数
- メール開封率、クリック率
行動データ
- 商品ページの閲覧回数
- カート追加後の離脱率
- レビューの閲覧有無
- 価格比較の頻度
実装手順
1. データの準備と前処理
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# サンプルデータの作成
data = pd.DataFrame({
'age': [25, 35, 45, 30, 28],
'income': [3000000, 5000000, 7000000, 4000000, 3500000],
'page_views': [10, 25, 5, 15, 20],
'cart_adds': [2, 5, 1, 3, 4],
'purchased': [0, 1, 0, 1, 1]
})
# 特徴量とターゲットの分離
X = data.drop('purchased', axis=1)
y = data['purchased']
# データの分割
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
2. 機械学習モデルの構築
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# ランダムフォレストモデル
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
# ロジスティック回帰モデル
lr_model = LogisticRegression()
lr_model.fit(X_train, y_train)
# 予測実行
rf_pred = rf_model.predict(X_test)
lr_pred = lr_model.predict(X_test)
3. モデルの評価
from sklearn.metrics import confusion_matrix, roc_auc_score
# 精度の評価
rf_accuracy = accuracy_score(y_test, rf_pred)
lr_accuracy = accuracy_score(y_test, lr_pred)
print(f"Random Forest精度: {rf_accuracy:.3f}")
print(f"Logistic Regression精度: {lr_accuracy:.3f}")
# 購買確率の取得
purchase_prob = rf_model.predict_proba(X_test)[:, 1]
print(f"購買確率: {purchase_prob}")
主要なアルゴリズムの特徴
ロジスティック回帰
- メリット:解釈しやすく、高速
- デメリット:非線形関係を捉えにくい
- 適用場面:シンプルなデータセット、説明可能性が重要な場合
ランダムフォレスト
- メリット:高精度、過学習に強い
- デメリット:計算コストが高い
- 適用場面:複雑なデータ、特徴量が多い場合
勾配ブースティング(XGBoost)
import xgboost as xgb
# XGBoostモデル
xgb_model = xgb.XGBClassifier(
n_estimators=100,
learning_rate=0.1,
max_depth=3
)
xgb_model.fit(X_train, y_train)
xgb_pred = xgb_model.predict_proba(X_test)[:, 1]
特徴量エンジニアリング
新しい特徴量の作成
# 行動パターンの特徴量
data['conversion_rate'] = data['cart_adds'] / data['page_views']
data['engagement_score'] = data['page_views'] * data['cart_adds']
# カテゴリカル変数のエンコーディング
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data['gender_encoded'] = le.fit_transform(data['gender'])
モデルの精度向上テクニック
1. ハイパーパラメータチューニング
from sklearn.model_selection import GridSearchCV
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [3, 5, 7],
'min_samples_split': [2, 5, 10]
}
grid_search = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
scoring='accuracy'
)
grid_search.fit(X_train, y_train)
2. アンサンブル学習
from sklearn.ensemble import VotingClassifier
# 複数モデルの組み合わせ
ensemble = VotingClassifier([
('rf', RandomForestClassifier()),
('lr', LogisticRegression()),
('xgb', xgb.XGBClassifier())
], voting='soft')
ensemble.fit(X_train, y_train)
実装時の注意点
データの不均衡問題
顧客購買データは「購入しない」ケースが多く、クラス不均衡が発生しがちです。
from imblearn.over_sampling import SMOTE
# SMOTEによるオーバーサンプリング
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
時系列を考慮した検証
購買行動には時系列の要素があるため、適切な検証方法を選択する必要があります。
from sklearn.model_selection import TimeSeriesSplit
# 時系列クロスバリデーション
tscv = TimeSeriesSplit(n_splits=5)
scores = cross_val_score(model, X, y, cv=tscv)
実際のビジネス活用例
1. Eコマースサイト
- 商品レコメンドシステムとの連携
- カート放棄メールの自動送信
- 動的価格設定への活用
2. 小売店
- 店舗在庫最適化
- 個別プロモーション配信
- 来店予測との組み合わせ
パフォーマンス指標の選択
顧客購買予測では、以下の指標が重要です:
from sklearn.metrics import precision_recall_curve, roc_curve
# 精度と再現率の曲線
precision, recall, _ = precision_recall_curve(y_test, purchase_prob)
# ROC曲線
fpr, tpr, _ = roc_curve(y_test, purchase_prob)
# AUCスコア
auc_score = roc_auc_score(y_test, purchase_prob)
print(f"AUC Score: {auc_score:.3f}")
まとめ
顧客の購買予測は、適切なデータ準備とアルゴリズム選択により高精度なモデル構築が可能です。重要なポイントは:
- 質の高いデータ収集:顧客の行動を多角的に捉える
- 適切な前処理:欠損値処理やスケーリングの実施
- アルゴリズム選択:データの特性に応じた手法の選択
- 継続的な改善:新しいデータでのモデル更新
機械学習による顧客購買予測は、データドリブンな意思決定を支援し、ビジネス成果の向上に直結します。まずは小規模なデータセットから始めて、徐々にモデルの精度を向上させていくことをお勧めします。
■テックジム「AIエンジニア養成コース」
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<オンライン無料>ゼロから始めるPython爆速講座