2値分類#
データセット#
telco_churn_train
customerid |
gender |
seniorcitizen |
partner |
dependents |
tenure |
phoneservice |
multiplelines |
internetservice |
onlinesecurity |
onlinebackup |
deviceprotection |
techsupport |
streamingtv |
streamingmovies |
contract |
paperlessbilling |
paymentmethod |
monthlycharges |
totalcharges |
churn |
time |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4043-MKDTV |
Male |
0 |
Yes |
No |
71 |
Yes |
No |
Fiber optic |
No |
Yes |
Yes |
Yes |
Yes |
Yes |
Two year |
Yes |
Electronic check |
105.25 |
7291.75 |
No |
1677465939 |
7971-HLVXI |
Male |
0 |
Yes |
Yes |
72 |
Yes |
Yes |
Fiber optic |
No |
No |
No |
No |
No |
Yes |
Two year |
Yes |
Credit card (automatic) |
84.5 |
6130.85 |
No |
1677465939 |
2908-WGAXL |
Female |
0 |
Yes |
Yes |
56 |
Yes |
Yes |
No |
No internet service |
No internet service |
No internet service |
No internet service |
No internet service |
No internet service |
Two year |
Yes |
Credit card (automatic) |
24.95000076 |
1468.9 |
No |
1677465939 |
0927-CNGRH |
Male |
0 |
No |
Yes |
1 |
Yes |
No |
No |
No internet service |
No internet service |
No internet service |
No internet service |
No internet service |
No internet service |
Month-to-month |
No |
Mailed check |
19.54999924 |
19.55 |
No |
1677465939 |
2256-YLYLP |
Male |
0 |
Yes |
Yes |
68 |
Yes |
No |
DSL |
No |
No |
Yes |
Yes |
Yes |
Yes |
Two year |
Yes |
Bank transfer (automatic) |
72.94999695 |
4953.25 |
No |
1677465939 |
WF の記述#
以下の2値を持つ churn カラムを target_column
に設定する。
churn |
---|
No |
Yes |
_export:
ml:
input_database: ml_datasets
output_database: ml_results
+gluon_train:
ml_train>:
notebook: gluon_train
input_table: ${ml.input_database}.telco_churn_train
target_column: churn
model_name: churn_model
# 以下がオプション
time_limit: 3*60
+gluon_predict:
ml_predict>:
notebook: gluon_predict
model_name: churn_model
input_table: ${ml.input_database}.telco_churn_test
output_table: ${ml.output_database}.telco_churn_predicted
アウトプット#
予測結果を格納するテーブル#
+gluon_predict
タスクにおいて output_table
に指定した telco_churn_predicted テーブルが、予測結果を格納するテーブルとなる。
また、予測対象のテーブルとして +gluon_predict
タスクで input_table
に指定した telco_churn_test テーブルは既に結果が churn
カラムに入っているので、予測結果と比較することができる。(もちろん実ケースにおいては、予測対象のテーブルには結果が入っていない。)
customerid |
churn |
predicted_churn |
predicted_proba |
predicted_probabilities |
---|---|---|---|---|
8404-FYDIB |
No |
No |
0.2854697108 |
{“No”: 0.71453, “Yes”: 0.28547} |
9753-OYLBX |
No |
No |
0.2621820271 |
{“No”: 0.737818, “Yes”: 0.262182} |
5322-ZSMZY |
No |
No |
0.02351417206 |
{“No”: 0.976486, “Yes”: 0.023514} |
9938-ZREHM |
No |
No |
0.08578195423 |
{“No”: 0.914218, “Yes”: 0.085782} |
5781-BKHOP |
No |
No |
0.04580932856 |
{“No”: 0.954191, “Yes”: 0.045809} |
churn または predicted_churn#
予測対象のテーブルに target_column
が含まれている場合、予測結果は predicted_${target_column}
のカラム名で出力される。含まれていなければ ${target_column}
となる。今回の例では churn カラムが既に存在しているので predicted_churn
となる。予測結果(今回の例だと Yes or No)が格納される。
predicted_proba#
2値の内、文字列の意味で値の大きい方(降順に並び替えた上で Top にくる方)の予測結果についての確信度を 0 から 1 までの数値で格納。値が大きければ確信を持って予測したことになる。今回の例では Yes と予測した時の確信度が格納されている。
predicted_churn
カラムで No と予測したレコードに対しては、Yes の確信度を格納するこのカラムでは必ず 0.5 よりも小さいものとなっている。
Important
predicted_proba
は predicted_churn
の値に対する確信度ではなく、全レコード一律に、2値の内の大きい方の値を予測した時の確信度となっていることに注意しよう。
predicted_probabilities#
2値の両方における確信度を Map として格納したカラム。ただし、テーブルには文字列型として記録されていることに注意しよう。
predicted_churn
カラムで予測した値に対する確信度を出力する SQL は以下のようになる。
SELECT
customerid
,predicted_churn
,CAST(JSON_PARSE(predicted_probabilities) as map(VARCHAR, DOUBLE))[predicted_churn] AS predicted_proba2
FROM telco_churn_predicted
ORDER BY predicted_proba2 DESC
customerid |
predicted_churn |
predicted_proba2 |
---|---|---|
2848-YXSMW |
No |
0.983883 |
1052-QJIBV |
No |
0.98378 |
6928-ONTRW |
No |
0.983734 |
0640-YJTPY |
No |
0.983525 |
8229-BUJHX |
No |
0.983519 |
time_limit#
実行時間のソフトリミットを秒数で指定する。このオプションが指定されない限り、すべてのモデルの学習が終わるまで実行されることになるため、モデル検証時にはこのオプションを入れておくことをお勧めする。