売上を正確に予測することは、マーケティング戦略の最適化、在庫管理、収益最大化に不可欠である。
BigQueryのGoogle Analyticsのサンプルデータセットを利用し、トラフィックソースやユーザーデモグラフィックが購入行動にどのように影響するかを分析する。
この分析の目的は、BigQuery MLを使って予測モデルを構築し、売上を予測するとともに、売上に寄与する主要な要因を特定することにある。
内容
- データの準備
- データの全体像を探る
- トラフィックソースと販売への影響
- ユーザー層と購買行動
- データの加工と整理
- モデル選定
- ロジスティック回帰
- ランダムフォレスト
- XGBoost
- 深層ニューラルネットワーク(DNN)
- モデル実装
- モデルの作成とトレーニング
- モデルの評価
- モデル比較
- パフォーマンス指標(AUC、精度、再現率、正確度、F1スコア)
- 追加特徴量のモデルパフォーマンスへの影響
- ディープニューラルネットワークのパフォーマンスへの調整の影響
- 結論
- BigQuery ML使用の利点
- BigQuery ML使用の欠点
1. データの準備
まず、Google Analyticsのサンプルデータセットからデータを準備する。以下のSQLクエリは、トラフィックソース情報、ユーザーデモグラフィック、売上データを統合したテーブルを作成する。
-- Data Preparation
CREATE OR REPLACE TABLE `predictive-behavior-analytics.Section3.sales_prediction_data` AS
SELECT
CONCAT(fullVisitorId, CAST(visitId AS STRING)) AS session_id,
trafficSource.source AS traffic_source,
trafficSource.medium AS traffic_medium,
device.deviceCategory AS device_type,
geoNetwork.country AS country,
totals.pageviews AS pageviews,
totals.timeOnSite AS time_on_site,
totals.transactions AS transactions,
IFNULL(totals.transactionRevenue, 0) / 1000000 AS revenue
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN '20160801' AND '20170731';
2. データの全体像を探る
データの概要分析(EDA)は、データセット内のパターンや関係性を理解するための重要なステップとなる。以下、異なるトラフィックソースやユーザーデモグラフィックが売上にどのように影響を与えるかを把握するため、データの概要分析を実施する。
トラフィックソースと売上への影響
目的: 各トラフィックソースが売上にどのように寄与しているかを分析する。
アプローチ
- 主要なトラフィックソースの特定: オーガニック検索、ダイレクト、リファラルなど、訪問数や取引数が多いトラフィックソースを特定する。
- コンバージョン率の計算: 各トラフィックソースのコンバージョン率を測定し、売上促進における効果を評価する。
- 収益貢献度の評価: 各トラフィックソースから得られる収益を評価し、最も利益をもたらすソースを特定する。
-- Traffic Sources and Sales Impact
SELECT
traffic_source,
COUNT(*) AS total_visits,
SUM(transactions) AS total_transactions,
SUM(transactions) / COUNT(*) AS conversion_rate,
SUM(revenue) AS total_revenue
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data`
GROUP BY
traffic_source
ORDER BY
total_visits DESC;
説明:
- total_visits: 各トラフィックソースからの訪問回数。
- total_transactions: 各トラフィックソースによる取引数。
- conversion_rate: コンバージョン率、すなわち訪問に対する取引の割合。
- total_revenue: 各トラフィックソースから得られる総収益。
結果
以下の表は、トラフィックソースごとの訪問回数、取引数、コンバージョン率、総収益をまとめたもの。
主要なトラフィックソース
1) ダイレクト
– ダイレクトトラフィックは、訪問回数と収益の両方で最も高く、直接サイトを訪れるユーザーが購入する傾向が強いことを示している。
2) Google
– Google検索トラフィックもサイトの収益に大きく貢献している。コンバージョン率は高くないが、訪問数が多いため、総収益が大きい。
3) YouTube.com
– YouTubeからのトラフィックは多いものの、コンバージョン率と収益は比較的低い。これは、YouTubeがトラフィックを促進する一方で、売上には結びつきにくいことを示している。
4) パートナー
– パートナーリファラルは他のソースと比べて高いコンバージョン率を示しているが、訪問数が少ないため、総収益は控えめである。
5) DoubleClick for Advertisers (DFA)
– DFAトラフィックは高いコンバージョン率と大きな収益を示しており、売上を促進する効果が高いことがわかる。
トラフィックソース | 訪問回数 | 取引数 | コンバージョン率 | 総収益 |
Direct | 369,303 | 9,116 | 0.0028% | $1,181,882 |
241,280 | 2,441 | 0.0043% | $229,022 | |
youtube.com | 212,422 | 11 | 0.0047% | $314 |
Partners | 16,359 | 9 | 0.0611% | $597 |
analytics.google.com | 16,115 | 0 | 0.0000% | $0 |
DFA | 5,671 | 132 | 0.0188% | $76,928 |
google.com | 4,657 | 5 | 0.0215% | $347 |
m.facebook.com | 3,360 | 11 | 0.0546% | $187 |
baidu | 3,351 | 0 | 0.0000% | $0 |
sites.google.com | 2,975 | 43 | 0.0344% | $4,391 |
ユーザー属性と購入行動
目的: ユーザー属性(デバイスの種類、国など)と購入行動の関係を調べる。
アプローチ
- デバイス種別分析: デバイスの種類(デスクトップ、モバイル、タブレットなど)がユーザー行動と売上へどう影響するか分析する。
- 地理的分析: 国ごとの売上実績を分析し、高収益な市場を特定する。
デバイス種別分析のSQLコード
-- Device Type Analysis
SELECT
device_type,
COUNT(*) AS total_visits,
SUM(transactions) AS total_transactions,
SUM(transactions) / COUNT(*) AS conversion_rate,
SUM(revenue) AS total_revenue
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data`
GROUP BY
device_type
ORDER BY
total_visits DESC;
地理的分析のSQLコード
-- Geographical Analysis
SELECT
country,
COUNT(*) AS total_visits,
SUM(transactions) AS total_transactions,
SUM(transactions) / COUNT(*) AS conversion_rate,
SUM(revenue) AS total_revenue
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data`
GROUP BY
country
ORDER BY
total_revenue DESC
LIMIT 10;
説明:
- total_visits: デバイスタイプまたは国ごとの訪問数。
- total_transactions: デバイスタイプまたは国ごとの取引総数。
- conversion_rate: デバイスタイプまたは国ごとの訪問数に対する取引の割合。
- total_revenue: デバイスタイプまたは国ごとに生成された総収益。
結果:
1) デバイスタイプ別分析
以下の表は、各デバイスタイプによる訪問総数、取引総数、コンバージョン率、および総収益をまとめたもの。
デバイスタイプ | 訪問総数 | 取引総数 | コンバージョン率 | 総収益 |
デスクトップ | 662,737 | 11,028 | 0.0001587% | $1,472,575 |
モバイル | 208,000 | 864 | 0.0004864% | $49,769 |
タブレット | 30,360 | 178 | 0.0034899% | $9,421 |
デスクトップ: デスクトップユーザーは最も多くの訪問数と総収益を占めている。コンバージョン率は低いものの、訪問数が多いため、総収益が高く、デスクトップは最も収益性の高いデバイスタイプとなっている。
モバイル: モバイルユーザーはデスクトップユーザーと比較してコンバージョン率が高いが、総収益は大幅に低い。これは、モバイルユーザーは購入に至る確率が高いものの、購入額が小さいか、高額な取引が少ないことを示唆している。
タブレット: タブレットユーザーは3つのデバイスタイプの中で最も高いコンバージョン率を示している。しかし、タブレットユーザーからの総収益は最も低い。このことは、タブレットユーザーは訪問数は少ないものの、サイトを訪れた際に購入に至る可能性が高いことを示唆している。
2) 地理的分析
以下の表は、トップ10の国別に訪問数、取引数、コンバージョン率、および総収益をまとめたもの。
国 | 総訪問数 | 取引総数 | コンバージョン率 | 総収益 |
アメリカ | 363,457 | 11,396 | 0.0002864% | $1,444,138 |
カナダ | 25,784 | 199 | 0.0040408% | $32,824 |
ベネズエラ | 2,128 | 153 | 0.0114125% | $13,374 |
日本 | 19,690 | 18 | 0.0053775% | $6,728 |
ケニア | 769 | 3 | 0.0130039% | $5,268 |
ナイジェリア | 1,440 | 2 | 0.0006944% | $3,302 |
台湾 | 12,975 | 19 | 0.0077071% | $1,920 |
インドネシア | 9,258 | 18 | 0.0017675% | $1,840 |
オーストラリア | 12,654 | 13 | 0.0079026% | $1,745 |
イギリス | 37,251 | 19 | 0.0031878% | $1,689 |
アメリカ: アメリカは、総訪問数、トランザクション数、収益においてトップであり、最も価値のある市場である。コンバージョン率は低いものの、訪問数の多さにより総収益が大きくなっている。
カナダ: カナダは、アメリカと比較してコンバージョン率が高く、カナダのユーザーは購入に繋がりやすいことを示している。総収益も注目すべき点で、カナダは高価値な市場である。
ベネズエラ: ベネズエラは、上位10カ国の中で最も高いコンバージョン率を示している。総訪問数は比較的低いものの、高いコンバージョン率により収益が大きくなっている。
日本、ケニア、ナイジェリア、台湾、インドネシア、オーストラリア、イギリス: これらの国々は、コンバージョン率と総収益が様々である。日本とケニアは高いコンバージョン率を示し、これらの国のユーザーは購入傾向が強いことが示唆される。しかし、これらの国の総収益は、アメリカやカナダと比べると低く、訪問数の少なさが影響している可能性がある。
3. データの加工と整理
データの加工と整理は、予測モデルを作成するためのデータセットを準備する上で重要なステップ。これには、生データを機械学習アルゴリズムで使用できる有意義な特徴量に変換する作業が含まれ、モデルのパフォーマンスを向上させることができる。ここでは、主にカテゴリカル変数の作成、追加特徴量の導出、数値特徴量の正規化の3つの側面をカバーする。
カテゴリー
目的: トラフィックソースやユーザーの属性をカテゴリーに変換し、機械学習モデルで使用できるようにする。
アプローチ
- トラフィックソース: トラフィックソース情報(例: trafficSource.source)をカテゴリーに変換する。これにより、モデルが「google」、「direct」、「referral」などの異なるトラフィックソースを区別できるようになる。
- ユーザー属性: デバイスの種類(device.deviceCategory)や国(geoNetwork.country)などのユーザー属性をカテゴリー変数に変換し、これらの属性が購入行動に与える影響をモデルに反映させる。
-- Feature Engineering: Categorical Variables
CREATE OR REPLACE TABLE `predictive-behavior-analytics.Section3.sales_prediction_data_with_categorical` AS
SELECT
*,
CAST(traffic_source AS STRING) AS traffic_source_cat,
CAST(device_type AS STRING) AS device_type_cat,
CAST(country AS STRING) AS country_cat
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data`;
説明:
- traffic_source_cat: トラフィックソース (trafficSource.source) をカテゴリカルな文字列に変換。
- device_type_cat: デバイスの種類 (device.deviceCategory) をカテゴリカルな文字列に変換。
- country_cat: 国 (geoNetwork.country) をカテゴリカルな文字列に変換。
正規化
目的: ページビューや滞在時間などを正規化し、モデルに効果的に寄与できるようにし、スケールを揃える。
アプローチ
- ページビュー: ページビュー数を正規化する。
- 滞在時間: サイトの滞在時間を正規化する。
-- Feature Engineering: Normalized Variables
CREATE OR REPLACE TABLE `predictive-behavior-analytics.Section3.sales_prediction_data_normalized` AS
SELECT
*,
(pageviews - (SELECT AVG(pageviews) FROM `predictive-behavior-analytics.Section3.sales_prediction_data`)) / (SELECT STDDEV(pageviews) FROM `predictive-behavior-analytics.Section3.sales_prediction_data`) AS normalized_pageviews,
(time_on_site - (SELECT AVG(time_on_site) FROM `predictive-behavior-analytics.Section3.sales_prediction_data`)) / (SELECT STDDEV(time_on_site) FROM `predictive-behavior-analytics.Section3.sales_prediction_data`) AS normalized_time_on_site
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data`;
説明
- normalized_pageviews: ページビュー (pageviews) を平均値で引き、標準偏差で割ることで正規化。
- normalized_time_on_site: 滞在時間 (time_on_site) を平均値で引き、標準偏差で割ることで正規化。
4. モデル選択
このセクションでは、販売が発生するかどうかを予測するために4つの異なるモデルを紹介する。それぞれのモデルには強みと弱みがあり、比較することで予測タスクに最適なアプローチを特定できる。使用するモデルは、ロジスティック回帰、ランダムフォレスト分類器、XGBoost、ディープニューラルネットワーク (DNN) 。
初期特徴量選択の根拠
初期分析では以下の特徴のみを含めた:
- traffic_source_cat
- device_type_cat
- country_cat
- normalized_pageviews
- normalized_time_on_site
説明: これらの特徴は、探索的データ分析 (EDA) の結果と、BigQuery ML が大量の特徴を効率的に処理する制約に基づいて選択された。EDAにより、トラフィックソース、デバイスタイプ、国などのユーザー属性が購入行動に重要な影響を与えることが明らかになった。また、BigQuery MLの性能を考慮し、最も影響の大きい変数に絞り込んだ。
1. ロジスティック回帰
概要:
- タイプ: 線形モデル
- 目的: より複雑なモデルと比較するためのベースラインモデルとして使用。
- 強み: シンプルで解釈しやすく、計算効率が高い。
- 弱み: 特徴とターゲット変数の間に線形関係があると仮定するため、複雑なパターンを捉えにくい。
2. ランダムフォレスト分類器
概要:
- タイプ: アンサンブル学習モデル
- 目的: 複数の決定木を並列に組み合わせて「forest」を形成し、分類タスクを実行。
- 強み: 高次元データに強く、複数の木を平均化することで過学習に対して頑強、非線形関係を捉える、特徴重要度の評価が可能。
- 弱み: 非常に大きなデータセットでは計算負荷が高い、単一の決定木より解釈が難しい、非常に疎なデータセットでは問題が生じることがある。
3. XGBoost
概要:
- タイプ: 勾配ブースティングモデル
- 目的: ブースティングを使用して、前の木の誤差を修正しながら強力な予測モデルを構築。
- 強み: 高い予測精度、欠損データの処理能力、特徴重要度の提供。
- 弱み: ハイパーパラメータに敏感で、適切に調整しないと過学習のリスクがある。
4. ディープニューラルネットワーク (DNN)
概要:
- タイプ: ニューラルネットワーク
- 目的: 複数のニューロン層を使用して、データ内の複雑なパターンを捉える。
- 強み: 複雑で非線形な関係をモデリングでき、大規模データセットで優れた性能を発揮。
- 弱み: 計算資源を多く消費し、解釈が難しく、ハイパーパラメータの調整が必要。
5. モデルの実装
モデルの作成とトレーニング
- BigQuery MLを使用してSQLでモデルを定義し、トレーニングする。
- モデルタイプと目的変数列(made_purchase)を指定する。
-- Logistic Regression Model
CREATE OR REPLACE MODEL `predictive-behavior-analytics.Section3.log_reg_sales_model`
OPTIONS(model_type='logistic_reg', input_label_cols=['made_purchase']) AS
SELECT
traffic_source_cat,
device_type_cat,
country_cat,
normalized_pageviews,
normalized_time_on_site,
IF(transactions > 0, 1, 0) AS made_purchase
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data_final`;
-- Random Forest Model with Specific Features
CREATE OR REPLACE MODEL `predictive-behavior-analytics.Section3.random_forest_sales_model_revised`
OPTIONS(
model_type='random_forest_classifier',
input_label_cols=['made_purchase']
) AS
SELECT
traffic_source_cat,
device_type_cat,
country_cat,
normalized_pageviews,
normalized_time_on_site,
IF(transactions > 0, 1, 0) AS made_purchase
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data_final`;
-- XGBoost Model
CREATE OR REPLACE MODEL `predictive-behavior-analytics.Section3.xgboost_sales_model`
OPTIONS(model_type='boosted_tree_classifier', input_label_cols=['made_purchase']) AS
SELECT
traffic_source_cat,
device_type_cat,
country_cat,
normalized_pageviews,
normalized_time_on_site,
IF(transactions > 0, 1, 0) AS made_purchase
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data_final`;
-- Deep Neural Network Model
CREATE OR REPLACE MODEL `predictive-behavior-analytics.Section3.dnn_sales_model`
OPTIONS(model_type='dnn_classifier', hidden_units=[128, 64, 32], input_label_cols=['made_purchase']) AS
SELECT
traffic_source_cat,
device_type_cat,
country_cat,
normalized_pageviews,
normalized_time_on_site,
IF(transactions > 0, 1, 0) AS made_purchase
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data_final`;
モデル評価
- AUC、精度、再現率、正確度などの指標を使用してモデルのパフォーマンスを評価する。
- BigQuery MLの組み込み評価機能を使用してモデルを評価する。
評価クエリの例
-- Evaluate the Logistic Regression Model and save the results
CREATE OR REPLACE TABLE `predictive-behavior-analytics.Section3.log_reg_sales_model_evaluation` AS
SELECT
*
FROM
ML.EVALUATE(
MODEL `predictive-behavior-analytics.Section3.log_reg_sales_model`,
(
SELECT
traffic_source_cat,
device_type_cat,
country_cat,
normalized_pageviews,
normalized_time_on_site,
IF(transactions > 0, 1, 0) AS made_purchase
FROM
`predictive-behavior-analytics.Section3.sales_prediction_data_final`
)
);
6. モデル比較
以下、販売予測のために構築した4つのモデル(ロジスティック回帰、ランダムフォレスト分類器、XGBoost、深層ニューラルネットワーク(DNN))のパフォーマンスを比較する。複数のパフォーマンス指標を用いてこれらのモデルを評価・対比し、複雑さと解釈可能性のトレードオフについて議論する。
パフォーマンス指標
最適な予測パフォーマンスを提供するモデルを判断するため、以下の指標を用いて各モデルを評価した:
AUC(ROC曲線下面積):
定義: AUCはモデルの陽性クラスと陰性クラスを区別する能力を測定する。0から1の範囲で、1は完全な分類、0.5は判別力なしを示す。
用途: 分類閾値に関係なく、モデルの全体的なパフォーマンスを理解するのに有用。
精度:
定義: 精度は、予測された陽性例の総数(真陽性と偽陽性の両方)に対する真陽性予測の比率。予測された陽性例のうち実際に陽性である割合を示す。
精度 = TP / (TP + FP)
用途: 偽陽性のコストが高く、不正確な陽性予測を最小限に抑えたい場合に重要。
再現率:
定義: 再現率(または感度)は、実際の陽性例の総数に対する真陽性予測の比率。実際の陽性例のうち正しく予測された割合を示す。
再現率 = TP / (TP + FN)
用途: 偽陰性のコストが高く、できるだけ多くの真陽性を捕捉したい場合に重要。
正確度:
定義: 正確度は、予測の総数に対する正しい予測(真陽性と真陰性の両方)の比率。
正確度 = (TP + TN) / (TP + TN + FP + FN)
用途: モデルのパフォーマンスの一般的な尺度を提供するが、不均衡なデータセットでは誤解を招く可能性がある。
F1スコア:
定義: F1スコアは精度と再現率の調和平均。精度と再現率のバランスを提供する。
F1スコア = 2 * (精度 * 再現率) / (精度 + 再現率)
用途: 精度と再現率のバランスをとる必要がある場合に有用。
結果
販売予測のために構築した4つのモデル(ロジスティック回帰、ランダムフォレスト分類器、XGBoost、深層ニューラルネットワーク(DNN))のパフォーマンスを以下比較する
AUC、精度、再現率、正確度、F1スコアを用いてこれらのモデルを評価した。以下は結果の要約。
モデル | AUC | 精度 (Precision) | 再現率 (Recall) | 正確度 (Accuracy) | F1 Score |
ロジスティック回帰 | 0.98 | 0.41 | 0.17 | 0.99 | 0.24 |
ランダムフォレスト | 0.98 | 0.55 | 0.09 | 0.99 | 0.16 |
XGBoost | 0.98 | 0.00 | 0.00 | 0.99 | 0.00 |
深層ニューラルネットワーク | 0.98 | 1.00 | 0.00 | 0.99 | 0.00 |
AUC (Area Under the ROC Curve):
- 4つのモデルすべてが0.98の高いAUCを達成し、クラス(購入vs非購入)の区別に同様に効果的であることを示している。
精度(Precision):
- モデル間で精度に大きな差がある。深層ニューラルネットワークは完璧な精度(1.00)を達成し、購入を予測した場合は常に正しいことを意味する。
- しかし、これは極めて低い再現率を犠牲にしており、モデルは購入者のほとんどを識別できていない。
- ランダムフォレストとロジスティック回帰モデルは精度が低い(それぞれ0.55と0.41)が、精度と再現率のバランスがより良い。
- XGBoostは精度が0.00で、正しい購入予測を全く行えていない。これはその設定やデータセットとの適合性に問題がある可能性を示している。
再現率(Recall):
- 再現率はモデルが陽性例を識別する能力を測定する。
- すべてのモデルで再現率が非常に低かった。 深層ニューラルネットワークモデルの再現率は0.00で、実際の陽性例をほとんど捕捉できていない。
- ロジスティック回帰モデルの再現率は0.17で、他のモデルより高いが、依然として改善の余地がある。
- ランダムフォレストとXGBoostモデルの再現率は0.0で、精度と同様に陽性例の識別に失敗していることを示している。
正確度(Accuracy):
- すべてのモデルが0.99の高い正確度を示しているが、この指標はデータセットのクラス不均衡(購入者よりも非購入者が圧倒的に多い)のため、誤解を招く可能性がある。
- この文脈での高い正確度は、モデルが主に非購入者を正しく予測していることを意味し、低い再現率とF1スコアと一致する。
F1 Score:
- 精度と再現率のバランスを取るF1スコアは、これらのモデルが直面している課題をさらに明確に示している。
- ロジスティック回帰は0.24のF1スコアを達成し、4つの中で最も高いが、依然として真陽性の識別において貧弱なパフォーマンスを反映している。
- ランダムフォレストのF1スコアは0.16で、さらに悪いパフォーマンスを示している。
- XGBoostと深層ニューラルネットワークのF1スコアは共に0.00で、高い正確度とAUCにもかかわらず、実際の購入者を予測できていないことを確認している。
考察
すべてのモデルが高いAUCと正確度を示しているが、これらの指標だけではこのユースケースにおけるモデルの真のパフォーマンスを捉えきれていない。
すべてのモデルに共通する主な問題は、低い再現率であり、実際の購入者を効果的に識別できていないことを意味する。
ロジスティック回帰がモデル間で最もバランスが取れているが、そのパフォーマンスは実用には不十分である。
XGBoostと深層ニューラルネットワークは、その潜在的な可能性にもかかわらず、極めて低い再現率とF1スコアのため、有意義な予測を提供できていない。
追加特徴量の影響
ロジスティック回帰、ランダムフォレスト分類器、XGBoostモデルを改良する過程で、すべての利用可能な特徴量を追加した。この特徴量拡張により、モデルのパフォーマンスは大幅に向上した。以下の新旧のモデル比較にその効果が顕著に現れている。
旧結果
モデル | AUC | 精度 (Precision) | 再現率 (Recall) | 正確度 (Accuracy) | F1 Score |
ロジスティック回帰 | 0.98 | 0.41 | 0.17 | 0.99 | 0.24 |
ランダムフォレスト | 0.98 | 0.55 | 0.09 | 0.99 | 0.16 |
XGBoost | 0.98 | 0.00 | 0.00 | 0.99 | 0.00 |
新結果
モデル | AUC | 精度 (Precision) | 再現率 (Recall) | 正確度 (Accuracy) | F1 Score |
ロジスティック回帰 | 1.00 | 0.99 | 0.99 | 1.00 | 0.99 |
ランダムフォレスト | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
XGBoost | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
主要な結果
ロジスティック回帰:
- 拡張された特徴量セットにより、ロジスティック回帰はほぼ完璧なパフォーマンス(AUC、精度、再現率、正確度、F1スコアが1.0に近い)を達成した。
- この改善は、より単純なモデルであるロジスティック回帰が豊富な特徴量セットから大きな恩恵を受け、データ内の関係をより適切に捉える能力が向上したことを示している。
ランダムフォレストとXGBoostモデル:
- 利用可能なすべての特徴量を組み込んだ後、これらのモデルは完璧なスコア(AUC、精度、再現率、正確度、F1スコアがすべて1.0)を達成した。
- この劇的な改善は、追加の特徴量がモデルに陽性と陰性のインスタンスを効果的に区別するために必要な情報を提供したことを示唆している。
- ただし、完璧なパフォーマンスは過学習の可能性も示唆しており、モデルがトレーニングデータに対して例外的に良好に機能するが、新しいデータに対しては同程度に一般化できない可能性がある。
深層ニューラルネットワークのパフォーマンスに対する調整とその影響
深層ニューラルネットワーク(DNN)にも調整を加えた。他のモデルにはすべての利用可能な特徴量の追加を行ったが、BigQueryの容量制限のため、DNNは元の特徴量セットの使用に制限された。
DNNのパフォーマンスを向上させるため、モデルの設定に以下の変更を加えた。
DNNの設定変更:
- 隠れ層のユニット数の削減:
- 旧設定: [128, 64, 32]
- 新設定: [64, 32]
- 理由: 各隠れ層のユニット数を減らしてモデルを簡素化した。この調整はBigQueryの容量制限内でモデルサイズを管理し、特にデータセットが比較的小さい場合や複雑なモデルの場合に過学習を防ぐのに役立つ。
- 自動クラスウェイトの導入(
auto_class_weights=true
)- 理由: クラスの重みを自動調整することで、クラスの不均衡に対処し、モデルが多数クラスに偏らないようにする。これは、一方のクラスのインスタンスが他方よりも著しく多い場合に特に重要で、モデルが少数クラスのインスタンスをより効果的に認識できるようになる。
- 自動カテゴリハッシュの導入(
auto_category_hash=true
)
- 理由: このオプションはカテゴリ変数を自動的にハッシュ化することで入力特徴量の数を減らす。これはモデルサイズの削減に役立つだけでなく、高基数のカテゴリ特徴量をより効率的に扱えるようにする。
パフォーマンス比較
旧結果
Model | AUC | 精度 (Precision) | 再現率 (Recall) | 正確度 (Accuracy) | F1 Score |
Deep Neural Network | 0.98 | 1.00 | 0.00 | 0.99 | 0.00 |
新結果
Model | AUC | 精度 (Precision) | 再現率 (Recall) | 正確度 (Accuracy) | F1 Score |
Deep Neural Network | 0.98 | 0.16 | 0.98 | 0.93 | 0.27 |
再現率の向上:
新しい設定により、再現率が大幅に向上した(0.00から0.98へ)。これは、モデルが以前よりも陽性インスタンス(購入)の識別が大幅に改善されたことを示唆している。auto_class_weights=trueの使用が、トレーニング中にモデルが少数クラスに適切な注意を払うことを保証し、この改善に重要な役割を果たしたと考えられる。
精度の低下:
再現率は向上したが、精度は1.0から0.16に低下した。これは、モデルが真陽性の識別は改善されたが、偽陽性の数も増加したことを示している。このトレードオフは不均衡なデータセットを扱う際によく見られ、精度と再現率のバランスの重要性を浮き彫りにしている。
F1スコアの改善:
精度と再現率のバランスを取るF1スコアは0.00から0.27に改善した。この改善は、新しい設定が真陽性の識別と偽陽性の最小化の間でより良いバランスを提供していることを示している。
AUCと正確度:
AUCは高いままで、モデルが強い判別力を維持していることを示している。正確度は0.93にわずかに低下したが、これは精度と再現率のトレードオフを考えると予想される結果だ。この文脈での正確度の低下は必ずしも否定的なものではなく、不均衡なデータセットにおいて陽性インスタンスを正しく分類する能力が向上したことを反映している可能性がある。
結論
BigQuery MLを使用し、Googleアナリティクスのサンプルデータセットを活用して販売予測モデルを検証した。
この分析は、トラフィックソースやユーザー属性が購買行動にどのように影響を与えるかを理解し、販売を予測する予測モデルを構築することを目的とした。結果として、モデルのパフォーマンス、特に異なる機械学習アプローチの長所と短所について、価値ある洞察を得た。
BigQuery MLの利点:
- 統合の容易さ
- BigQuery MLはSQLとのシームレスな統合を可能にし、SQLに精通しているが複雑な機械学習フレームワークには精通していないデータアナリストにとってアクセスしやすい。これによりモデルの構築と展開の障壁が低くなる。
- スケーラビリティ
- BigQuery MLは大規模なデータセットを効率的に処理するように設計されており、大規模なeコマースデータセットの処理と分析に理想的だ。BigQueryに保存されているデータを別のプラットフォームにエクスポートする必要なくモデルを直接トレーニングできることは大きな利点だ。
- 速度とパフォーマンス
- Google Cloudのインフラストラクチャを活用することで、BigQuery MLは大規模なデータセットでも迅速にモデルをトレーニングし評価できる。この速度により、競争の激しいeコマース環境で重要な、より迅速な反復と実験が可能になる。
- 組み込みのモデル評価
- BigQuery MLは、AUC、精度、再現率、正確度、F1スコアの計算など、モデル評価のための組み込み関数を提供する。これによりモデルのパフォーマンス評価と異なるモデルの比較プロセスが簡素化される。
BigQuery MLの欠点:
- モデルの複雑さとサイズへの制限
- 深層ニューラルネットワーク(DNN)モデルで見られたように、BigQuery MLはモデルサイズに制限を課す。多くの特徴量や層を持つ複雑なモデルはこれらの制限を超える可能性があり、モデルのパフォーマンスに影響を与える可能性のある簡略化が必要になる。
- カスタマイズの制限
- BigQuery MLは便利だが、TensorFlowやPyTorchなどの専用の機械学習フレームワークと比較して柔軟性が低い。特にハイパーパラメータの調整や新しいアーキテクチャの実験において、詳細なカスタマイズオプションの不足が制限的に感じる可能性がある。
- 特徴量エンジニアリングの制約
- 手動での特徴量の相互作用やカスタム変換など、一部の高度な特徴量エンジニアリング技術は、Jupyter Notebookなどのpythonベースの環境と比較してBigQuery MLでの実装が難しい。これによりモデルの最適化能力が制限される可能性がある。
- 過学習の可能性
- 特徴量セットを拡張した後のランダムフォレストやXGBoostなどのモデルが達成した完璧なスコアは、モデルがトレーニングデータに対して例外的に良好に機能するが、新しいデータに対しては同程度に一般化できない可能性のある過学習を示唆している。これは、BigQuery ML環境でより困難になる可能性のあるクロスバリデーションと慎重なモデル調整の重要性を浮き彫りにしている。
最後に
BigQuery MLはデータウェアハウス環境内で直接機械学習モデルを構築し展開するための強力なツールだ。その使いやすさ、スケーラビリティ、SQLとの統合により、大規模なデータセットから迅速に洞察と予測を得たいデータアナリストにとって優れた選択肢となる。
ただし、ユーザーはカスタマイズに関する制限を認識しておく必要がある。