ここでは、AutoML による表形式データ ジャーニーの概要を紹介します。AutoML とカスタム トレーニングの主な違いについては、トレーニング方法の選択をご覧ください。
表形式データのユースケース
たとえば、あなたはデジタル小売店のマーケティング部門で働いているとします。あなたとチームメンバーは、顧客のペルソナに基づいてカスタマイズされたメール プログラムを作成しています。ペルソナを作成し、マーケティング メールが送信できるようになりました。次は、顧客を小売店の好みや消費行動に基づいて各ペルソナに振り分けるシステムを作成する必要があります。このシステムは新しい顧客も対象にします。また、顧客エンゲージメントを最大化するには、メールの送信タイミングを最適化できるように、顧客の消費習慣を予測することも必要になります。
デジタル小売店であれば、顧客とその購入情報に関するデータを持っています。しかし、新しい顧客についてはどうでしょうか。従来の方法では、購入履歴が長い既存顧客であればこうした値を計算できますが、履歴データが少ない顧客の場合はうまくいきません。これらの値を予測するシステムを作ることができ、個人の好みに合ったマーケティング プログラムをすべての顧客に迅速に提供できるとしたらどうでしょうか。
こうした問題の解決にうってつけなのが ML と Vertex AI です。
このガイドでは、AutoML のデータセットとモデルに対して Vertex AI がどのように機能するかについて説明します。また、Vertex AI でどのような問題を解決できるかについても説明します。
Vertex AI の仕組み
Vertex AI は、管理機能付き ML を適用して目的の結果を実現します。アルゴリズムやトレーニング方法の詳細は、データ型とユースケースによって異なります。ML にはさまざまなサブカテゴリがあり、それらはすべて異なる問題を解決し、異なる制約の中で動作します。
サンプルデータを使用して機械学習モデルをトレーニングします。Vertex AI は表形式の(構造化された)データを使用して機械学習モデルをトレーニングし、新しいデータに対する予測を行います。データセット内の列の 1 つはターゲットと呼ばれ、モデルはそれを学習して予測します。他のデータ列の一部は入力(特徴と呼ばれる)であり、モデルはそこからパターンを学習します。同じ入力特徴を使用してターゲット列とトレーニング オプションを変更するだけで、複数種類のモデルを構築できます。このメール マーケティングの例は、同じ入力特徴でターゲット予測が異なるモデルを構築できることを示しています。あるモデルでは顧客のペルソナ(カテゴリ型のターゲット)を予測し、別のモデルでは毎月の支出(数値型のターゲット)を予測します。さらに別のモデルでは、今後 3 か月にわたる商品の日々の需要(一連の数値型ターゲット)を予測します。
Vertex AI ワークフロー
Vertex AI は、次の標準的な機械学習ワークフローに従います。
- データの収集: 達成したい結果に向けて、モデルのトレーニング用データとテスト用データを選定します。
- データの準備: データを適切にフォーマットし、ラベルを付けます。
- トレーニング: パラメータを設定してモデルを構築します。
- 評価: モデルの指標を確認します。
- デプロイと予測: モデルを利用できるようにします。
ただし、実際にデータを収集する前に、解決しようとしている問題について検討して、データの要件を把握しておく必要があります。
データの準備
ユースケースを検討する
まずは問題に目を向けて、達成する必要のある結果を考えてください。
ターゲット列はどのような種類のデータですか。アクセスできるデータはどのくらいありますか。ユーザーが目的とする結果に基づいて、Vertex AI はユースケースを解決するために必要なモデルを作成します。
- バイナリ分類モデルは、バイナリの結果(2 つのクラスのうちのいずれか)を予測します。「はい」か「いいえ」で答える質問には、このモデルタイプを使用します。たとえば、バイナリ分類モデルを構築して利用者がサブスクリプションを購入するかどうかを予測できます。通常、バイナリ分類問題に必要となるデータは、他のモデルタイプよりも少なくなります。
- マルチクラス分類モデルは、1 つのクラスを 3 つ以上の個別クラスから予測します。このモデルタイプは分類に使用します。たとえば、小売業者がマルチクラス分類モデルを構築して、買物客をさまざまなペルソナにセグメント分けすることが考えられます。
- 回帰モデルは、連続値を予測します。たとえば、小売業者が回帰モデルを構築して、買物客が来月使用する金額を予測することが考えられます。
- 予測モデルは、一連の値を予測します。たとえば、小売店では、商品の在庫を前もって適切に確保できるように、今後 3 か月にわたる商品の日々の需要を予測することが考えられます。
表形式データの予測は、次の 2 つの点で分類回帰と異なります。
分類回帰では、ターゲットの予測値は同じ行の特徴列の値にのみ依存します。予測の場合、予測値はターゲットと特徴のコンテキスト値にも依存します。
回帰と分類の問題では、出力は 1 つの値になります。予測の問題では、出力は一連の値になります。
データの収集
ユースケースを確立したら、目的のモデルを作成するために使用されるデータを収集します。
ユースケースを確立したら、モデルをトレーニングするためのデータを収集する必要があります。データの調達と準備は、機械学習モデルを構築するうえで重要なステップです。利用できるデータによって、解決できる問題の種類が定まります。使用可能なデータ量はどれくらいですか。それらのデータは、答えを得ようとしている質問の内容と関連があるものですか。データを収集する際には、次の点に注意してください。
関連する特徴を選択する
特徴は、モデルのトレーニングに使用される入力属性です。特徴とは、モデルがパターンを特定して予測を行う方法であるため、問題に関連している必要があります。たとえば、クレジット カード取引が不正であるかどうかを予測するモデルを構築するには、購入者、販売者、金額、日時、購入した商品などの取引詳細を含むデータセットを構築する必要があります。その他に役立つ特徴として、購入者と販売者に関する過去の情報、購入された商品がどのくらいの頻度で不正行為に関係していたかなどが挙げられます。他にはどのような特徴が関連している可能性があるでしょうか。
冒頭の小売店のメール マーケティングのユースケースを考えてみます。必要となる特徴の列の例を以下に示します。
- 購入された商品のリスト(ブランド、カテゴリ、価格、割引など)
- 購入された商品の数(最終日、週、月、年)
- 消費された金額(最終日、週、月、年)
- 商品ごとに、毎日の合計販売数
- 商品ごとに、毎日の合計在庫数
- 特定の日に販促を実施するかどうか
- 既知の買い物客層
十分なデータを含める
一般的に、トレーニング サンプルが多ければ多いほど、成果は上がります。必要なサンプルデータの量は、解決しようとしている問題の複雑さにも比例します。バイナリ分類モデルの場合、正確なモデルを取得するために必要なデータは、マルチクラス モデルと比較するとそれほど多くはありません。なぜなら、1 つのクラスを 2 つのクラスから予測するのは、多数から予測するほど複雑でないからです。
完璧な数式はありませんが、推奨されるサンプルデータの最低数量は次のとおりです。
- 分類問題: 50 行 × 特徴数
- 予測問題:
- 5,000 行 × 特徴数
- 時系列 ID 列に一意の値 10 個 × 特徴数
- 回帰問題: 特徴数 × 200
バリエーションを考慮する
データセットには、問題空間に多様性を持たせてください。モデルのトレーニングで使用するサンプルが多様であればあるほど、目新しいサンプルや一般的ではないサンプルにも対応できる汎用化されたモデルが実現されます。小売店のモデルが、冬季の購入データだけを使ってトレーニングされた場合を想像してみましょう。夏服の嗜好や購入行動をうまく予測することができるでしょうか。
データの準備
利用可能なデータが見つかったら、トレーニングの準備ができていることを確認する必要があります。データに偏りがある場合、または欠損値やエラー値が含まれている場合は、モデルの品質に影響します。モデルのトレーニングを始める前に、次のことを考慮してください。詳細については、こちらをご覧ください。
データの漏出とトレーニング / サービング スキューを防ぐ
データの漏出とは、トレーニング時に入力特徴を使用した際に、予測しようとしているターゲットに関する情報、つまり実際にモデルを使用する際には把握できない情報を「漏出」させることです。これは、ターゲット列との相関性が高い特徴が入力特徴の 1 つとして含まれているときに検出できます。たとえば、顧客が来月にかけてサブスクリプションに申し込むかどうかを予測するモデルを構築しているとします。そして入力特徴の 1 つが、その顧客からの将来のサブスクリプションの支払いであったとします。この場合、テスト時のモデル パフォーマンスは強力になるかもしれませんが、本番環境でデプロイされたときはそうなりません。なぜなら将来のサブスクリプションの支払い情報はサービス提供時に存在しないからです。
トレーニング / サービング スキューとは、トレーニング時に使用される入力特徴が、サービス提供時にモデルに提供される特徴と異なるため、本番環境でモデル品質低下が生じる状態を指します。たとえば、毎時の気温を予測するモデルを構築する際に、一週間ごとの気温のみが含まれるデータを使ってトレーニングした場合です。別の例としては、学生の落第を予測する際に、トレーニング データには学生の成績が常に提供されているが、サービス提供時にはこの情報が提供されない場合です。
トレーニング データを把握することは、データの漏出やトレーニング / サービング スキューを防ぐために重要です。
- データを使用する前に、そのデータが何を意味するか、そのデータを特徴として使用するべきかどうかを必ず把握しておいてください。
- 相関関係を [トレーニング] タブで確認します。相関関係が高い場合は、フラグを付けて見直せるようにしてください。
- トレーニング / サービング スキュー: サービス提供時にまったく同じ形式で使用できる入力特徴だけをモデルに提供するようにしてください。
欠損データ、不完全データ、矛盾するデータをクリーンアップする
サンプルデータの値が欠損していることや正確でないことがよくあります。トレーニングに使用する前に時間をとって見直し、可能であればデータ品質を向上させてください。欠損値が多いほど、データが機械学習モデルのトレーニングに役立つ度合いが減ってしまいます。
- データに欠損値がないか確認し、可能であれば修正するか、列が null 可能に設定されている場合は、値を空白にします。Vertex AI は欠損値を処理できますが、すべての値を使用できる場合は最適な結果が得られる可能性が高くなります。
- 予測を行うには、トレーニングする行の間隔にばらつきがないことを確認します。Vertex AI は欠損値に代入法で対応できますが、すべての行が使用可能であれば、最適な結果が得られる可能性が高くなります。
- データのエラーやノイズを修正または削除して、データをクリーニングします。一貫性のあるデータにするために、スペル、略語、形式を確認します。
データをインポート後に分析する
Vertex AI には、データセットのインポート後の概要が表示されます。インポートしたデータセットをレビューして、各列の変数型が正しいことを確認してください。Vertex AI は列の値に基づいて変数型を自動的に検出しますが、それぞれを手動で確認することをおすすめします。さらに、null 値許容も確認する必要があります。これによって、列で値の欠落が許容されるか、null 値が必要かが決まります。
モデルのトレーニング
データセットをインポートしたら、次のステップはモデルをトレーニングすることです。Vertex AI は、トレーニングのデフォルトを使用して信頼性の高い機械学習モデルを生成しますが、ユースケースに基づいて一部のパラメータを調整することもできます。
できるだけ多くの特徴列をトレーニングで選択するようにしてください。ただし、それぞれをレビューして、トレーニングに適していることを確認してください。特徴の選択に関しては、以下の事項に留意してください。
- 各行に一意の値を持つランダムに割り当てられた ID 列のように、ノイズを発生させる特徴列を選択しないでください。
- 各特徴列とその値を把握しておいてください。
- 複数のモデルを 1 つのデータセットから作成する場合は、現在の予測問題の一部ではないターゲット列を削除してください。
- 公平性の原則を思い出してください。モデルのトレーニングで使用している特徴は、主流ではないグループにとって偏った、あるいは不公平な意思決定となるでしょうか。
Vertex AI がデータセットを使用する方法
データセットは、トレーニング セット、検証セット、テストセットに分割されます。デフォルトで Vertex AI が適用する分割は、トレーニングするモデルのタイプによって変わります。また、必要に応じて、分割を指定する(手動分割)こともできます。詳細については、AutoML モデルのデータ分割についてをご覧ください。
トレーニング セット
データの大部分をトレーニング セットに含めるようにします。これはトレーニング中にモデルが「見る」データであり、モデルのパラメータ、つまりニューラル ネットワークのノード間の接続の重みを学習するために使用されます。
検証セット
検証セットは「dev」セットとも呼ばれ、やはりトレーニング プロセス中に使用されます。モデルの学習フレームワークは、トレーニング プロセスの各イテレーションでトレーニング データを取り込んだ後、検証セットに対するモデルのパフォーマンスに基づき、そのハイパーパラメータ(モデルの構造を指定する変数)を調整します。トレーニング セットを使用してハイパーパラメータを調整しようとすると、モデルがトレーニング データに過度に適合してしまい、正確に一致しないサンプルを一般化するのが困難になる可能性が高いです。多少違ったデータセットを使ってモデル構造を細かく調整することで、モデルがより適切に一般化されます。
テストセット
テストセットはトレーニング プロセスにはまったく使用されません。モデルのトレーニングが完了したら、Vertex AI はモデル向けのまったく新しい課題としてテストセットを使用します。テストセットに対するモデルのパフォーマンスを知ることで、モデルが実世界のデータに対してどのように機能するかをおおよそ理解できます。
モデルの評価、テスト、デプロイ
モデルの評価
モデルのトレーニングが完了すると、モデルのパフォーマンスの概要が表示されます。モデルの評価指標は、データセット(テスト データセット)のスライスに対するモデルのパフォーマンスに基づきます。モデルが実際のデータで使用できる状態になっているかどうかを判断する際には、検討すべき主な指標とコンセプトがあります。
分類指標
スコアしきい値
顧客が来年にジャケットを購入するかどうかを予測する機械学習モデルを考えてみましょう。特定の顧客がジャケットを購入することを予測する前に、このモデルにはどの程度の確実性が必要でしょうか。分類モデルでは、各予測に信頼スコア(予測クラスが正しいというモデルの確実性の数値的評価)が割り当てられます。スコアしきい値は、特定のスコアがはい / いいえの決定に変換されるときを決定する数値です。つまり、モデルが「はい、この信頼度スコアは、この顧客が来年中にコートを購入すると結論づけるのに十分な高さです」と知らせる値です。
スコアしきい値が低いと、モデルが誤った分類を行うリスクがあります。このため、スコアしきい値は特定のユースケースに基づいて設定しなければなりません。
予測結果
スコアしきい値を適用した後のモデルによる予測は、4 つのカテゴリのうちの 1 つに分類されます。これらのカテゴリを理解するために、もう一度ジャケットのバイナリ分類モデルを考えてみましょう。この例では、陽性のクラス(モデルが予測しようとしていること)は、顧客がジャケットを来年に購入するということです。
- 真陽性: モデルは陽性のクラスを正しく予測している。モデルは顧客がジャケットを購入することを正しく予測しました。
- 偽陽性: モデルは陽性のクラスを誤って予測している。モデルは顧客がジャケットを購入すると予測しましたが、顧客は購入しませんでした。
- 真陰性: モデルは陰性のクラスを正しく予測している。モデルは顧客がジャケットを購入しないことを正しく予測しました。
- 偽陰性: モデルは陰性のクラスを誤って予測している。モデルは顧客がジャケットを購入しないと予測しましたが、顧客は購入しました。
適合率と再現率
適合率と再現率は、モデルがどの程度適切に情報を取得しているか、そしてどれだけの情報を除外しているかを把握するのに役立ちます。適合率と再現率の詳細。
- 適合率は、肯定の予測のうち、正しかった予測の割合です。つまり、顧客が購入するであろうと予測されたうち、実際に購入した割合です。
- 再現率は、モデルによって正しく予測された、このラベルが付けられた行の割合です。つまり、識別できるはずの顧客の購入のうち、実際に識別された割合を示します。
ユースケースに応じて、適合率または再現率の最適化が必要になる場合があります。
その他の分類指標
- AUC PR: 適合率 / 再現率(PR)曲線の下の面積。この値は範囲が 0~1 で、値が高いほど高品質のモデルであることを示します。
- AUC ROC: 受信者操作特性(ROC)曲線の下の面積。この範囲は 0~1 で、値が高いほど高品質のモデルであることを示します。
- 精度: 正しいモデルによって生成された分類予測の割合。
- ログ損失: モデル予測とターゲット値の間のクロス エントロピー。この範囲はゼロから無限大までで、値が小さいほど高品質のモデルであることを示します。
- F1 スコア: 適合率と再現率の調和平均。適合率と再現率のバランスを求めていて、クラス分布が不均一な場合、F1 は有用な指標となります。
予測と回帰の指標
モデルを構築すると、Vertex AI から提供されるさまざまな標準指標を使ってそのモデルを評価できます。モデルを評価する方法について完全な答えはありません。問題の種類や、モデルで達成したいことを合わせて評価指標を検討します。Vertex AI で利用できる指標の一部の概要を次に示します。
平均絶対誤差(MAE)
MAE は、ターゲットと予測値の平均絶対差です。一連の予測における誤差(ターゲットと予測値の差)の平均の大きさを測定します。MAE では、絶対値を使用するため、関係の方向性を考慮せず、過少パフォーマンスや過剰パフォーマンスが示されることもありません。MAE を評価するとき、値が小さいほど品質の高いモデルを示します(0 は完全な予測因子を表します)。
二乗平均平方根誤差(RMSE)
RMSE は、ターゲットと予測値の平均二乗差の平方根です。RMSE は MAE よりも外れ値の影響を受けやすいため、大きな誤差が心配な場合は RMSE のほうがより有用な評価指標といえます。MAE と同様、値が小さいほど品質の高いモデルを示します(0 は完全な予測因子を表します)。
二乗平均対数平方誤差(RMSLE)
RMSLE は対数目盛りの RMSE です。RMSLE は絶対誤差よりも相対誤差に対して敏感であり、過剰パフォーマンスよりも過小パフォーマンスを重視します。
観測された分位値(予測のみ)
特定のターゲット分位値の場合、観測された分位値では、指定された分位予測値の下に観測された値の実際の割合が示されます。観測された分位値は、モデルがターゲット分位値とどれくらい離れているかを示します。2 つの値の差が小さいほど、高品質なモデルであることを示します。
スケールされたピンボールロス(予測のみ)
指定されたターゲット分位値でのモデルの品質を測定します。数値が小さいほど、高品質のモデルであることを示します。さまざまな分位値のスケールされたピンボールロス指標を比較することで、そうした分位値間のモデルの相対精度を判断できます。
モデルのテスト
モデル指標の評価とは主として、モデルをデプロイする準備ができているかどうかを判断する方法ですが、新しいデータでテストすることもできます。新しいデータをアップロードして、モデルの予測が自分の予想と一致するかどうかを確認してください。評価指標や新しいデータによるテストに基づいて、モデルのパフォーマンスを引き続き向上させる必要があることがあります。
モデルをデプロイする
モデルのパフォーマンスが満足のいくものになったら、モデルの使用を開始します。本番環境で使用することになることも、一回限りの予測リクエストになることもあります。ユースケースに応じて、モデルをさまざまな方法で使用できます。
バッチ予測
バッチ予測は、多数の予測リクエストを一度で行うのに便利です。バッチ予測は非同期です。つまり、モデルはすべての予測リクエストを処理するのを待ってから、予測値を含む CSV ファイルまたは BigQuery テーブルを返します。
オンライン予測
モデルをデプロイして、REST API を使用して予測リクエストで使用できるようにします。オンライン予測は同期的(リアルタイム)です。つまり、予測はすぐに返されますが、API 呼び出しごとに 1 つの予測リクエストしか受け付けません。オンライン予測は、モデルがアプリケーションの一部であり、システムの一部が素早い予測ターンアラウンドに依存している場合に便利です。
クリーンアップ
不要な料金が発生しないようにするため、モデルを使用していないときはモデルをデプロイ解除してください。
モデルの使用が終了したら、アカウントに不要な料金が発生しないように、作成したリソースを削除します。
- Hello 画像データ: プロジェクトのクリーンアップ
- Hello 表形式データ: プロジェクトのクリーンアップ
- Hello テキストデータ: プロジェクトのクリーンアップ
- Hello 動画データ: プロジェクトのクリーンアップ