GoogleAnalytics360の売上高予測モデルの精度を前処理・特徴エンジニアリングで改善する 1/2

1

1. 前処理・特徴エンジニアリングの必要性

前回、GoogleAnalyticsのデータセットを使い、BigQueryMLで売上高の予測モデルを構築した。しかし誤差が大きく、予測した売上高と観測値はかけ離れており、そのままでは実用が難しいことが懸念される。

そもそも、モデル構築に用いたデータ自体が機械学習に適していないことが問題であると考えられる。そこで、モデル構築の品質を高めるために「前処理」と「特徴エンジニアリング」といった手法をモデル構築用のデータセットに対して施す場合が多い。詳細については以下で具体的な説明を行うこととする。

これらはどちらも、モデルが重み計算を円滑に行うための手法だが、主に前処理では欠損値や外れ値の処理など、モデルへのデータを投入しベースのモデルを作る段階までの処理だ。一方、特徴エンジニアリングでは特徴を増加・削減、または新たに作成していくことで、モデルの予測精度を高める処理といえる。

本稿では、この2つをデータに施した場合のモデルの精度を検証する。

2.データセットに存在する主な問題点

機械学習を行う際、未整形のデータセットで精度の高いモデルを作ることはほぼ不可能である。なぜなら、未処理のデータセットはモデルを構築するためのデータになっていない場合が多いからである。例えば、未処理のデータセットでは以下の考慮が必要となる。

2-1:整数の扱い
今回扱うデータセットの数値は整数と小数に分けられるが、機械学習では整数の扱い方には考慮が必要な場合がある。

整数はカテゴリ値として使用されることがある。例えば、[0,1]の値がある特徴であればYesとNo、[0,1,2]であれば服のサイズ(S、M、L)など、それ自体が意味のある数値となる。

カテゴリ値が小数と同様に重み計算に使われると、場合によっては正しく計算ができない可能性が考えられるため、整数型の確認は行うことを推奨する。

2-2:データのばらつき
データセットにおいて、全ての特徴の値は平均0、分散1の状態であることが理想だ。ただ、データセットの特徴量間でスケールが異なることが多々ある。

例えば、体重と身長、家の価格と部屋数では、数値の単位と値の範囲が異なる。このような特徴量間で異なるスケールのデータセットを学習させた場合、モデル構築の精度に悪影響を与えてしまうことが懸念される。

2-3:極端な外れ値
平均値と極端に隔離する特徴の値は一般的には外れ値と呼ばれ、モデル構築に悪影響を及ぼす可能性が考えられる。外れ値が存在する状態で学習を行うと、外れ値が過剰に評価されてしまうため、モデルの学習が正しく行われない可能性がある。

2-4:多種にわたるカテゴリ値
機械学習では本来数値しか扱えない。BigQueryMLで文字列が扱えるのは、内部的にOne-Hot-Encodingが行われ、以下のように0と1に置き換えられているからだ。

しかし、特徴内の文字列の種類が多すぎると、「次元の呪い」に陥る場合がある。これはデータの次元数が大きくなり過ぎると、表現できる組み合わせが飛躍的に多くなってしまい、手元にある有限なデータでは十分な学習結果が得られなくなることを指す。

そのため、本来はモデル構築には最小かつ、必要な次元数で特徴を抽出することが望ましい。

3.データの可視化と整形

次に、実際にデータの可視化と必要な整形を行う。まずはGoogleのビジュアライズツールであるデータポータル(旧データスタジオ)を用いてBigQueryと連結してデータを可視化し、どのような整形が必要かを記載する。

3-1:日付カラムを年、月、曜日に分割
BigQueryMLではdateカラムを8桁の文字列として見なす。このまま機械学習に投入すると、One-Hot-Encodingによって全日付の特徴が作成されることになる。

これは重みを計算するうえで非効率となるため、dateカラムから年と月、曜日(平日と休日で売上が変わると想定したため)を抽出し特徴として新しいカラムを作成する。※1

3-2:デバイス・OSカラムを結合し独立変数として扱う
デバイスとOSごとの販売件数を可視化している。比率をみるとPC端末での販売数が多いこと、OSがWindowsとMacintoshが大半を占めることがわかる。

図1:デバイス、OSごとの販売件数
図1:デバイス、OSごとの販売件数

PCが増加すれば、WindowsとMacが増加していくため、デバイスとOSには相関関係があると考えられる。特徴同士は独立させておくことが望ましい。

本稿では割愛するが、特徴同士に相関があると「多重共線性」と呼ばれる問題が発生するからだ。よって、デバイスカテゴリとOSを掛け合わせて、デバイス+OSとして新しい特徴を作成する。

3-3:突出した値を別途抽出する
国ごとの販売件数を比較すると、アメリカ大陸の販売件数が際立っており、他国との差が大きいことがわかる。

図2:国ごとの販売件数
図2:国ごとの販売件数

このように、特徴カラムの中で突出した値をもつものは、新しい特徴として抽出する。今回は「アメリカ大陸か否か」で新しい特徴を作成する。

3-4:ヒット数とページビュー数の正規化
ヒット数とページビュー数の値をヒストグラムで表示すると、以下のようになることがわかる。

図3:ヒット数の分布
図3:ヒット数の分布
図4:ページビュー数と分布
図4:ページビュー数と分布

図を見ると、多くのユーザのヒット数とページビュー数が1~20程度に収まり、データに偏りがあることがわかる。この状態はBigQueryMLの学習に悪影響を及ぼす可能性がある。※2

機械学習では誤差が最小となるような最適な重みを計算する。この重みの更新幅は学習率を呼ばれ、すべての特徴への重み計算に適用される。よって、他の特徴の値と桁数が異なると、重みの計算効率が著しく悪い。

ここではカテゴリ値は0と1に置き換えられるが、ヒット数とページビュー数は3桁の値をとっていることが問題となる。よって、ヒット数とページビュー数を正規化し、特徴内の値を0~1の間に収めるように直した。

お問い合わせ

当社のサービス・製品に関するご相談やご質問、お見積りのご依頼など、こちらからお問い合わせください。