小売業界の商品および顧客に対する予測分析をデータサイエンスの方法
- 販売データ:商品ID、売上数量、売上金額、販売日、店舗ID。
- 顧客データ:顧客ID、年齢、性別、地域、購買履歴。
- 外部データ:天気データ、祝日情報、キャンペーン情報、経済指標。
- データベース:SQLを使用して販売データを取得。
SELECT product_id, customer_id, sales, date FROM sales_data;
- API:外部データ(天気やキャンペーン情報)を取得。
- CSV/Excelファイル:社内で保存されている履歴データ。
- 欠損値の処理:
- 欠損部分を特定し、平均値、中央値、またはゼロで補完。または、場合によっては欠損データを削除。
data['sales'].fillna(data['sales'].mean(), inplace=True)
- 異常値の処理:
- 箱ひげ図やZスコアを使用して異常値を検出し、必要に応じて修正または除外。
from scipy.stats import zscore data = data[(zscore(data['sales']) < 3)]
- データ型の統一:
- 日付型のデータを適切なフォーマットに変換。
data['date'] = pd.to_datetime(data['date'])
- カテゴリ変数のエンコード:
- One-HotエンコーディングまたはLabel Encodingを使用。
from sklearn.preprocessing import OneHotEncoder encoder = OneHotEncoder() encoded_features = encoder.fit_transform(data[['category']])
- 売上トレンド分析:
- 時系列データを分析し、季節性やトレンドを特定。
- 顧客セグメンテーション:
- 購入頻度、平均購入金額、再購入率を基に顧客を分類。
- 商品人気分析:
- 売上ランキングや売れ筋商品の特定。
- 時系列プロット:売上データの推移。
import matplotlib.pyplot as plt data.groupby('date')['sales'].sum().plot() plt.show()
- ヒートマップ:特徴量間の相関関係を視覚化。
import seaborn as sns sns.heatmap(data.corr(), annot=True, cmap='coolwarm')
- クラスタリング結果の可視化:
- PCAやt-SNEを用いて高次元データを2次元に圧縮し、顧客や商品クラスタを視覚化。
- 時系列特徴量:
- 曜日、月、季節、祝日フラグ。
data['day_of_week'] = data['date'].dt.dayofweek
- ラグ特徴量:
- 過去の売上(例:1週間前、1ヶ月前の売上)。
data['lag_7'] = data['sales'].shift(7)
- 集約特徴量:
- 商品別、店舗別、顧客別の平均売上や最大売上。
data['mean_sales'] = data.groupby('product_id')['sales'].transform('mean')
- 外部データの統合:
- 天気や祝日情報を結合して予測に活用。
- 販売予測:回帰モデル(XGBoost、LightGBM)、時系列モデル(ARIMA、Prophet)。
- 顧客分析:クラスタリング(K-Means、DBSCAN)、分類モデル(ロジスティック回帰、ランダムフォレスト)。
- データ分割:
- 訓練データとテストデータに分割。
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- クロスバリデーション:
- ハイパーパラメータを選択するための交差検証。
from sklearn.model_selection import GridSearchCV param_grid = {'n_estimators': [100, 200], 'max_depth': [3, 5, 7]} grid = GridSearchCV(estimator=model, param_grid=param_grid, cv=5) grid.fit(X_train, y_train)
- モデル学習:
- 最適なパラメータを用いて最終モデルを訓練。
model = grid.best_estimator_ model.fit(X_train, y_train)
- 評価指標:
- 回帰モデル:MAE(平均絶対誤差)、RMSE(平方平均二乗誤差)、R2スコア。
- 分類モデル:精度(Accuracy)、再現率(Recall)、F1スコア。
from sklearn.metrics import mean_absolute_error, r2_score mae = mean_absolute_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print(f"MAE: {mae}, R2: {r2}")
- API化:FlaskやFastAPIで予測モデルを提供。
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/predict', methods=['POST']) def predict(): input_data = request.json prediction = model.predict(input_data) return jsonify({'prediction': prediction.tolist()})
- 新しいデータを使った再トレーニング:
- 定期的に新しい販売データを取得し、モデルを更新。
- ダッシュボードの構築:
- TableauやPower BIを使用して予測結果をリアルタイムで監視。