Article Outline
🔍 Google BigQuery ML
TOC
Collection Outline
句(節)
演算子
関数
入門 @Udemy
DS100ノック
ML
アクセス解析
|| BigQueryMLでAutoML
create or replace model `{my_project.my_dataset}`.{モデル名}
options(
model_type = 'AUTOML_CLASSIFIER' --( ※ )使用アルゴリズム
/* 使用モデル別にオプションを適時変更 */
-- , budget_hours = 1.0 --(e.g.)時間制限
-- , num_clusters=5 --(e.g.)分割数(クラスタリング時)
-- , standardize_features = true --(e.g.)
) as {クエリ} -- 使用するデータセット
;
| データセット収集
オープンデータ(人工知能研究センター) に色々あるよ!
今回は、カリフォルニア大学アーバイン校 Machine Learning データセットのリポジトリから『顧客解約予測データセット』(公開されている)
| モデリング
#standardSQL
/* MODEL_DEVLOP */
create or replace model `my_dataset`.AUTO_ML_1 -- モデル名
options(
model_type = 'AUTOML_CLASSIFIER' -- 使用アルゴリズム
-- , input_label_cols = [''] -- ターゲット名(カラム)
, budget_hours = 1.0 -- 時間制限
) as
/* クエリ(学習に使用するデータを抽出する) */
select
State
, Account_Length
, Area_Code
, Total_Charge / Account_Length as avg_daily_spend
, CustServ_Calls / Account_Length as avg_daily_cases
, Churn_ as label -- 推論するラベル
from
`my_dataset.CSV_CUSTOMER_ACTIVITY`
where
date(2020, 1, 1) <= Record_Date
;
| 評価・推論
#standardSQL
/*
* ◇ BigQuery ML
* 先に、「MODEL_DEVLOP」を実行。実行後、コメントアウトしてView化して同一ファイルで扱うのもあり
* 次に、「MODEL_EVALUATE」「MODEL_PREDICT」を実行。
*/
with
/* MODEL_EVALUATE */
evaluation as (
select
*
from
ml.evaluate(model `my_dataset`.AUTO_ML_1, (
/* サブクエリ(モデル作成に使用した特徴量を抽出するクエリ) */
select
State
, Account_Length
, Area_Code
, Total_Charge / Account_Length as avg_daily_spend
, CustServ_Calls / Account_Length as avg_daily_cases
, Churn_ as label
from
`my_dataset.CSV_CUSTOMER_ACTIVITY`
where
date(2020, 1, 1) <= Record_Date
)
)
)
/* MODEL_PREDICT */
, predict as (
select
predicted_label
, prob
, State
, Account_Length
, avg_daily_spend
, avg_daily_cases
from ml.predict(model `my_dataset`.AUTO_ML_1, (
/* サブクエリ(予測するのに必要な特徴量を抽出するクエリ) */
select
State
, Account_Length
, Area_Code
, Total_Charge / Account_Length as avg_daily_spend
, CustServ_Calls / Account_Length as avg_daily_cases
-- , Churn_ as label -- ∵推論時不要
from
`my_dataset.CSV_CUSTOMER_ACTIVITY`
where
date(2020, 1, 1) <= Record_Date
)
), unnest(predicted_label_probs)
where
predicted_label = 'True.' -- ∵2値分類の為
)
/* OUTPUT */
select * from evaluation; -- モデル評価
-- select * from predict; -- 推論
▼ 実施時に出たエラー文
(error)Unable to identify the label column in query statement. Either specify the label column using OPTIONS(input_label_cols=['your_label_col']) or name the label column in the data as 'label'.
- BigQuery ML unable to identify label column in data - stack overflow
- feedbackThe CREATE MODEL statement - Google Cloud
|| 実コンペでもやっているで参考にしよう(Kaggle)
| Taitaicコンペ
cf. 「BigQueryML」でSQLを書いて機械学習モデルを構築&予測できる! - Qiita
#standardSQL
begin
/* モデル作成 */
create model `Kaggle_titanic`.MODEL_TAITANIC
options (model_type = 'logistic_reg') as
select
Pclass
, title
, is_female
, family_size
, is_alone
, age
, embarked
, fare
, class_age
, Survived as label
from
`Kaggle_titanic.preprocessed_data` --(前処理終わりのテーブル)
left join
`Kaggle_titanic.label_train` using(PassengerId) -- ラベル付与
where
train_flag = 'train'
;
/* モデル評価 */
select * from ml.evaluate(model `Kaggle_titanic`.MODEL_TAITANIC, (
select Pclass, title, is_female, family_size, is_alone, age, embarked, fare, class_age, Survived as label
from `Kaggle_titanic.preprocessed_data`
left join `Kaggle_titanic.label_train` using(PassengerId)
where train_flag = 'train'
)
);
/* モデル推論(テストデータに対して) */
select * from ml.predict(model `Kaggle_titanic`.MODEL_TAITANIC, (
select Pclass, title, is_female, family_size, is_alone, age, embarked, fare, class_age, Survived as label
from `Kaggle_titanic.preprocessed_data`
where train_flag = 'test'
)
);
/* 係数算出(特徴量の重み) */
select
processed_input
, weight
from
ml.weights(model `Kaggle_titanic.model_titanic`)
order by
abs(weight) desc
;
/* サブミット作成 (※Kaggle用) */
select
PassengerID
, predicted_label as Survived
from ml.predict(model `Kaggle_titanic`.model_titanic, (
select PassengerID, Pclass, title, is_female, family_size, is_alone, age, embarked, fare, class_age, Survived as label
from `Kaggle_titanic.preprocessed_data`
where train_flag = 'test'
)
);
end
|| REFERENCE
- SQLだけでモデルが作れる!BigQuery ML による自動モデル作成と Tableau による可視化 - SkillUpAI
- AutoML Tables が BigQuery ML で一般提供に - Google Cloud
- BigQuery上のGA4データを元にしたGoogle Auto ML Tablesの試用レビュー - PRINCIPLE
- 「BigQueryML」でSQLを書いて機械学習モデルを構築&予測できる! - Qiita
- BigQuery MLでスロット使用量が急増しているプロジェクトやユーザーを異常検知する - yasuhisa's blog