顧客行動予測
PyTorchを使用して顧客行動予測を行うサンプルコードを示します。
ここでは、顧客の過去の購入履歴から次に購入する商品を予測するというシナリオを考えてみましょう。
まずは、必要なライブラリをインポートします。
1 | import torch |
次に、顧客の購入履歴データを模擬的に作成します。
ここでは、10人の顧客が10種類の商品を購入した履歴をランダムに生成します。
1 | np.random.seed(0) |
次に、ニューラルネットワークのモデルを定義します。
ここでは、単純な全結合層のみのネットワークを使用します。
1 | class Net(nn.Module): |
次に、学習の設定を行います。
損失関数には二値交差エントロピーを、最適化手法にはAdamを使用します。
1 | criterion = nn.BCELoss() |
そして、学習を行います。
ここでは、100エポック学習を行うことにします。
1 | for epoch in range(100): |
最後に、学習結果をグラフ化します。
1 | predicted = net(torch.from_numpy(purchase_history).float()).detach().numpy() |
[実行結果]
このコードは、顧客の購入履歴を元に次に購入する商品を予測するものです。
ただし、これは非常に単純化された例であり、実際の問題ではより複雑なモデルやデータ前処理が必要になることをご理解ください。
ソースコード解説
コードの詳細を説明します。
1. import
文:
必要なライブラリをインポートします。torch
はPyTorchの主要なライブラリです。nn
はニューラルネットワークを定義するためのサブパッケージ、optim
は最適化アルゴリズムを含むサブパッケージ、numpy
は数値計算用ライブラリ、matplotlib.pyplot
はデータをグラフ化するためのライブラリです。
2. ランダムな顧客の購買履歴データの生成:
np.random.randint(2, size=(num_customers, num_products))
を使用して、0と1のランダムな値で構成されるnum_customers
x num_products
の行列 purchase_history
を生成しています。
これは仮想的なデータであり、各行が各顧客の購買履歴を表しています。
3. ニューラルネットワークモデルの定義:
Net
クラスを定義しています。nn.Module
を継承しています。
このモデルは、入力として num_products
個の特徴を受け取り、2つの全結合層 (fc1
と fc2
) を通して処理されます。fc1
は入力次元から50次元への変換を行い、torch.relu
関数によって活性化されます。
次に、fc2
は50次元から出力次元(num_products
)への変換を行い、torch.sigmoid
関数によって0から1の範囲にスケーリングされます。
4. ニューラルネットワークモデルのインスタンス化:
net = Net()
を使用して、定義した Net
クラスのインスタンス net
を作成します。
5. 損失関数と最適化アルゴリズムの定義:
この例では、損失関数に二値交差エントロピー(BCELoss)を使用しています。
最適化アルゴリズムにはAdamを使用しています。
学習率は0.001です。
6. モデルの訓練:
データをPyTorchのTensorに変換し、100エポックの間でモデルを訓練しています。
各エポックで、最適化アルゴリズムによって損失が最小化されるようにモデルの重みを更新しています。
7. 予測と結果のグラフ化:
訓練が終了した後、学習済みのモデルを使って購買履歴データを入力として予測を行い、predicted
という変数に予測結果を格納しています。
そして、元の購買履歴データと予測結果を2つのサブプロットを持つグラフとして表示しています。
上記のコードは非常にシンプルな顧客行動予測の例ですが、実際の問題にはさらなるデータの前処理やモデルの改善が必要になることがあります。