このチュートリアルでは、ブーストツリー分類モデルを使用し、ユーザー属性データに基づいて個人の収入の範囲を予測する方法について説明します。このモデルは、値が 2 つのカテゴリのどちらに該当するか(この場合は、個人の年収が $50,000 を上回っているか下回っているか)を予測します。
このチュートリアルでは、bigquery-public-data.ml_datasets.census_adult_income
データセットを使用します。このデータセットには、2000 年と 2010 年の米国居住者のユーザー属性と収入情報が含まれています。
目標
このチュートリアルでは、次のタスクの手順について説明します。
CREATE MODEL
ステートメントを使用して、国勢調査の回答者の収入階層を予測するブーストツリー モデルを作成する。ML.EVALUATE
関数を使用して、そのモデルを評価する。ML.PREDICT
関数を使用して、モデルから予測結果を得る。
費用
このチュートリアルでは、Google Cloud の課金対象となるコンポーネントを使用します。これには次のコンポーネントが含まれます。
- BigQuery
- BigQuery ML
BigQuery の費用の詳細については、BigQuery の料金ページをご覧ください。
BigQuery ML の費用の詳細については、BigQuery ML の料金をご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、
Enable the BigQuery API.
に移動します。
データセットを作成する
ML モデルを保存する BigQuery データセットを作成します。
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] ペインで、プロジェクト名をクリックします。
「アクションを表示」> [データセットを作成] をクリックします。
[データセットを作成する] ページで、次の操作を行います。
[データセット ID] に「
bqml_tutorial
」と入力します。[ロケーション タイプ] で [マルチリージョン] を選択してから、[US (米国の複数のリージョン)] を選択します。
一般公開データセットは
US
マルチリージョンに保存されています。わかりやすくするため、データセットを同じロケーションに保存します。残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。
サンプルデータを準備する
このチュートリアルで作成するモデルは、次の特徴に基づいて、国勢調査の回答者の収入階層を予測します。
- 年齢
- 業務のタイプ
- 配偶者の有無
- 教育水準
- 職業
- 週あたりの労働時間
education
列がトレーニング データに含まれていないのは、education
列と education_num
列がどちらも、回答者の教育水準を異なる形式で表しているためです。
functional_weight
列から派生した新しい dataframe
列を作成して、データをトレーニング セット、評価セット、予測セットに分割します。データの 80% はモデルのトレーニングに使用され、残りの 20% は評価と予測に使用されます。
サンプルデータを準備するには、トレーニング データを格納するビューを作成します。このビューは、このチュートリアルの後半の CREATE MODEL
ステートメントで使用されます。
サンプルデータを準備するクエリを実行します。
Google Cloud コンソールで [BigQuery] ページに移動します。
[クエリエディタ] ペインで、次のクエリを実行します。
CREATE OR REPLACE VIEW `bqml_tutorial.input_data` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`;
[エクスプローラ] ペインで
bqml_tutorial
データセットを開き、input_data
ビューを見つけます。ビュー名をクリックして情報ペインを開きます。ビュースキーマが [スキーマ] タブに表示されます。
ブーストツリー モデルを作成する
国勢調査の回答者の所得階層を予測するブーストツリー モデルを作成し、国勢調査データでトレーニングします。クエリの完了には、約 30 分かかります。
次の手順でモデルを作成します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタに次のクエリを貼り付け、[実行] をクリックします。
CREATE MODEL `bqml_tutorial.tree_model` OPTIONS(MODEL_TYPE='BOOSTED_TREE_CLASSIFIER', BOOSTER_TYPE = 'GBTREE', NUM_PARALLEL_TREE = 1, MAX_ITERATIONS = 50, TREE_METHOD = 'HIST', EARLY_STOP = FALSE, SUBSAMPLE = 0.85, INPUT_LABEL_COLS = ['income_bracket']) AS SELECT * EXCEPT(dataframe) FROM `bqml_tutorial.input_data` WHERE dataframe = 'training';
クエリが完了すると、
tree_model
モデルが [エクスプローラ] ペインに表示されます。クエリはCREATE MODEL
ステートメントを使用してモデルを作成するため、クエリの結果は表示されません。
モデルを評価する
次の手順でモデルを評価します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタに次のクエリを貼り付け、[実行] をクリックします。
SELECT * FROM ML.EVALUATE (MODEL `bqml_tutorial.tree_model`, ( SELECT * FROM `bqml_tutorial.input_data` WHERE dataframe = 'evaluation' ) );
結果は次のようになります。
+---------------------+---------------------+---------------------+-------------------+---------------------+---------------------+ | precision | recall | accuracy | f1_score | log_loss | roc_auc | +---------------------+---------------------+---------------------+-------------------+-------------------------------------------+ | 0.67192429022082023 | 0.57880434782608692 | 0.83942963422194672 | 0.621897810218978 | 0.34405456040833338 | 0.88733566433566435 | +---------------------+---------------------+ --------------------+-------------------+---------------------+---------------------+
評価指標、特に
roc_auc
スコアが0.8
より大きいことで、モデルのパフォーマンスが良好なことが示されています。評価指標の詳細については、分類モデルをご覧ください。
モデルを使用して分類を予測する
次の手順でモデルを使用し、データを予測します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタに次のクエリを貼り付け、[実行] をクリックします。
SELECT * FROM ML.PREDICT (MODEL `bqml_tutorial.tree_model`, ( SELECT * FROM `bqml_tutorial.input_data` WHERE dataframe = 'prediction' ) );
結果の最初の数列は次のようになります。
+---------------------------+--------------------------------------+-------------------------------------+ | predicted_income_bracket | predicted_income_bracket_probs.label | predicted_income_bracket_probs.prob | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.05183430016040802 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.94816571474075317 | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.00365859130397439 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.99634140729904175 | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.037775970995426178 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.96222406625747681 | +---------------------------+--------------------------------------+-------------------------------------+
predicted_income_bracket
には、モデルの予測値が含まれます。predicted_income_bracket_probs.label
には、2 つのラベルが表示され、モデルがいずれかを選択する必要があります。predicted_income_bracket_probs.prob
列には、指定されたラベルが正しいラベルである確率が示されます。出力列の詳細については、分類モデルをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
- 作成したプロジェクトを削除する。
- または、プロジェクトを保存して、データセットを削除する。
データセットを削除する
プロジェクトを削除すると、プロジェクト内のデータセットとテーブルがすべて削除されます。プロジェクトを再利用する場合は、このチュートリアルで作成したデータセットを削除できます。
必要に応じて、Google Cloud コンソールで [BigQuery] ページを開きます。
ナビゲーションで、作成した bqml_tutorial データセットをクリックします。
ウィンドウの右側にある [データセットを削除] をクリックします。この操作を行うと、データセット、テーブル、すべてのデータが削除されます。
[データセットの削除] ダイアログ ボックスでデータセットの名前(
bqml_tutorial
)を入力し、[削除] をクリックして確定します。
プロジェクトの削除
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- ロジスティック回帰分類モデルを作成する方法について説明します。
- BigQuery ML の概要については、BigQuery の AI と ML の概要をご覧ください。