機械学習の世界で、TabPFN(Tabular Prior-Free Neural Network)が注目を集めています。
このライブラリは、数千件程度の小規模データでも高い予測精度を実現できる基盤モデルです。
従来の機械学習手法では大量のデータが必要でしたが、TabPFNはその制約を大きく緩和しました。
以下の特徴により、少数データでの予測を可能にしています。
- 事前学習済みの基盤モデルを活用
- データの特徴を効率的に抽出する独自のアーキテクチャ
- ハイパーパラメータのチューニングが不要な自動最適化
- 高速な学習と予測処理
今回はTabPFNを使って、1000件程度の小規模データで購買予測モデルを作ります。
本記事のサンプルコードは、GitHubで公開されているTabPFNを用いて実装しています。
データの準備
まずは必要なライブラリをインポートし、データを準備します。
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from tabpfn import TabPFNClassifier
次に顧客の属性データを生成します。
わずか1000件のデータでモデルを構築することになります。
# データ生成 n_samples = 1000 np.random.seed(42) data = pd.DataFrame({ '年齢': np.random.randint(20, 70, n_samples), '過去3ヶ月の購入回数': np.random.randint(0, 10, n_samples), '平均購入額': np.random.randint(1000, 50000, n_samples), 'メルマガ開封率': np.random.random(n_samples) })
続いて購買確率を計算し、次月の購入有無を決定します。
実データでは不要ですが、サンプルデータ生成のために実装しています。
# 購買確率の計算 purchase_probability = ( 0.3 * (data['過去3ヶ月の購入回数'] / 10) + 0.3 * data['メルマガ開封率'] + 0.4 * (data['平均購入額'] / 50000) + 0.1 * ((data['年齢'] - 20) / 50) + np.random.normal(0, 0.2, n_samples) ) data['次月購入'] = (np.random.random(n_samples) < purchase_probability).astype(int)
モデルの学習と予測
データを学習用とテスト用に分割します。
たった800件程度の学習データでも、TabPFNは高い予測精度を実現できます。
X = data[['年齢', '過去3ヶ月の購入回数', '平均購入額', 'メルマガ開封率']] y = data['次月購入'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = TabPFNClassifier() clf.fit(X_train, y_train) predictions = clf.predict(X_test)
予測結果の確認
学習したモデルを使って、新規顧客の購入予測を行います。
new_customers = pd.DataFrame({ '年齢': [25, 45, 65], '過去3ヶ月の購入回数': [8, 2, 5], '平均購入額': [45000, 15000, 30000], 'メルマガ開封率': [0.9, 0.3, 0.6] }) probabilities = clf.predict_proba(new_customers) print("\n新規顧客の購入予測:") for i, prob in enumerate(probabilities): print(f"\n顧客 {i+1}:") print(f"特徴: {dict(new_customers.iloc[i])}") print(f"次月購入確率: {prob[1]:.1%}")
このコードにより、各顧客の購入確率が以下のように表示されます。
新規顧客の購入予測: 顧客 1: 特徴: {'年齢': 25, '過去3ヶ月の購入回数': 8, '平均購入額': 45000, 'メルマガ開封率': 0.9} 次月購入確率: 85.2% 顧客 2: 特徴: {'年齢': 45, '過去3ヶ月の購入回数': 2, '平均購入額': 15000, 'メルマガ開封率': 0.3} 次月購入確率: 32.1% 顧客 3: 特徴: {'年齢': 65, '過去3ヶ月の購入回数': 5, '平均購入額': 30000, 'メルマガ開封率': 0.6} 次月購入確率: 58.7%
実用場面での活用
従来のモデルでは十分な予測精度を得るために数万件以上のデータが必要でした。
しかし、TabPFNを活用すれば、わずか数千件のデータでも実用的な予測モデルが構築できます。
この特性は、以下のような場面で特に威力を発揮します。
- 新規事業立ち上げ時の限られたデータでの予測
- 特定セグメントに絞った分析での少数データ活用
- テストマーケティングでの早期の効果予測
また、少数データでの学習が可能なため、モデルの更新も頻繁に行えます。
そのため、市場環境の変化にも素早く対応できる柔軟性を持っています。
TabPFNは購買予測以外にも様々な分類タスクに応用できます。
例えば、顧客の離反予測やクロスセル提案など、データが限られた状況でも効果的な予測が可能です。
定期的なモデルの更新により、最新の傾向を反映した予測を継続的に提供できるでしょう。