Regresi logistik standar digunakan untuk klasifikasi biner. Komponen Logistic Regression for Multiclass Classification di Platform for AI (PAI) memperluas fungsionalitas tersebut untuk mendukung klasifikasi multikelas dengan menggunakan algoritma optimisasi L-BFGS. Komponen ini menerima data masukan dalam format sparse maupun dense.
Konfigurasikan komponen
Terdapat dua metode konfigurasi yang tersedia: gunakan Machine Learning Designer untuk penyiapan visual tanpa kode, atau gunakan perintah PAI untuk alur kerja deskriptif atau otomatis dalam pipeline.
Metode 1: Konfigurasi di Machine Learning Designer
Buka komponen Logistic Regression for Multiclass Classification di Machine Learning Designer (sebelumnya Machine Learning Studio) dan atur parameter berikut.
Fields Setting tab
| Parameter | Deskripsi |
|---|---|
| Training feature columns | Kolom fitur yang dipilih dari tabel input untuk pelatihan. Mendukung tipe data DOUBLE dan BIGINT. Maksimal 20 juta fitur didukung. |
| Target columns | Kolom label pada tabel input. |
| Sparse format | Apakah data input dalam format sparse. |
Parameters Setting tab
| Parameter | Deskripsi |
|---|---|
| Regularization type | Penalti yang diterapkan pada model selama pelatihan. Nilai yang valid: L1, L2, dan None. |
| Maximum number of iterations | Jumlah maksimum iterasi L-BFGS. Default: 100. |
| Regularization coefficient | Kekuatan penalti regularisasi. Tidak berlaku ketika Regularization type diatur ke None. |
| Minimum convergence deviance | Ambang batas konvergensi untuk algoritma L-BFGS. Pelatihan berhenti ketika selisih log-likelihood antara iterasi berturut-turut turun di bawah nilai ini. Default: 0.000001. |
Metode 2: Gunakan perintah PAI
Teruskan parameter langsung ke algoritma logisticregression_multi menggunakan perintah PAI. Jalankan perintah tersebut melalui komponen SQL Script. Untuk informasi lebih lanjut, lihat SQL Script.
Contoh berikut menunjukkan sintaks perintah:
PAI -name logisticregression_multi
-project algo_public
-DmodelName="xlab_m_logistic_regression_6096"
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="l1"
-Depsilon="0.000001"
-DlabelColName="y"
-DfeatureColNames="pdays,emp_var_rate"
-DgoodValue="1"
-DinputTableName="bank_data"Parameter
| Parameter | Wajib | Default | Deskripsi |
|---|---|---|---|
inputTableName | Ya | — | Nama tabel input. |
featureColNames | Tidak | Semua kolom numerik | Kolom fitur yang dipilih dari tabel input untuk pelatihan. Maksimal 20 juta fitur didukung. |
labelColName | Ya | — | Nama kolom label. |
inputTablePartitions | Tidak | Seluruh tabel | Partisi yang dipilih dari tabel input. Gunakan partition_name=value untuk partisi tunggal dan name1=value1/name2=value2 untuk partisi multi-level. Pisahkan beberapa partisi dengan koma (,). |
modelName | Ya | — | Nama model output. |
regularizedType | Tidak | l1 | Jenis regularisasi. Nilai yang valid: l1, l2, dan None. |
regularizedLevel | Tidak | 1.0 | Koefisien regularisasi. Tidak berlaku ketika regularizedType bernilai None. |
maxIter | Tidak | 100 | Jumlah maksimum iterasi L-BFGS. |
epsilon | Tidak | 1.0e-06 | Ambang batas konvergensi untuk algoritma L-BFGS. Pelatihan berhenti ketika selisih log-likelihood antara iterasi berturut-turut kurang dari nilai ini. |
enableSparse | Tidak | false | Apakah data input dalam format sparse. Nilai yang valid: true dan false. |
itemDelimiter | Tidak | , | Pembatas antar pasangan kunci-nilai dalam input format sparse. |
kvDelimiter | Tidak | : | Pembatas antara kunci dan nilai dalam input format sparse. |
coreNum | Tidak | Default sistem | Jumlah core. |
memSizePerCore | Tidak | Default sistem | Memori yang dialokasikan per core, dalam MB. |
Contoh
Contoh ini melatih model regresi logistik multikelas pada dataset dengan empat fitur dan menjalankan prediksi. Semua perintah dijalankan melalui komponen SQL Script.
Langkah 1: Buat data pelatihan
Jalankan pernyataan SQL berikut untuk membuat tabel multi_lr_test_input:
drop table if exists multi_lr_test_input;
create table multi_lr_test_input
as
select
*
from
(
select
cast(1 as double) as f0,
cast(0 as double) as f1,
cast(0 as double) as f2,
cast(0 as double) as f3,
cast(0 as bigint) as label
union all
select
cast(0 as double) as f0,
cast(1 as double) as f1,
cast(0 as double) as f2,
cast(0 as double) as f3,
cast(0 as bigint) as label
union all
select
cast(0 as double) as f0,
cast(0 as double) as f1,
cast(1 as double) as f2,
cast(0 as double) as f3,
cast(2 as bigint) as label
union all
select
cast(0 as double) as f0,
cast(0 as double) as f1,
cast(0 as double) as f2,
cast(1 as double) as f3,
cast(1 as bigint) as label
) a;Tabel tersebut berisi empat kolom fitur DOUBLE (f0–f3) dan satu kolom label BIGINT:
| f0 | f1 | f2 | f3 | label |
|---|---|---|---|---|
| 1.0 | 0.0 | 0.0 | 0.0 | 0 |
| 0.0 | 0.0 | 1.0 | 0.0 | 2 |
| 0.0 | 0.0 | 0.0 | 1.0 | 1 |
| 0.0 | 1.0 | 0.0 | 0.0 | 0 |
Langkah 2: Latih model
Jalankan perintah PAI berikut untuk melatih model dan menyimpannya sebagai multi_lr_test_model:
drop offlinemodel if exists multi_lr_test_model;
PAI -name logisticregression_multi
-project algo_public
-DmodelName="multi_lr_test_model"
-DitemDelimiter=","
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="None"
-Depsilon="0.000001"
-DkvDelimiter=":"
-DlabelColName="label"
-DfeatureColNames="f0,f1,f2,f3"
-DenableSparse="false"
-DinputTableName="multi_lr_test_input";Langkah 3: Jalankan prediksi
Jalankan perintah PAI berikut untuk menghasilkan prediksi dan menyimpan hasilnya ke multi_lr_test_prediction_result:
drop table if exists multi_lr_test_prediction_result;
PAI -name prediction
-project algo_public
-DdetailColName="prediction_detail"
-DmodelName="multi_lr_test_model"
-DitemDelimiter=","
-DresultColName="prediction_result"
-Dlifecycle="28"
-DoutputTableName="multi_lr_test_prediction_result"
-DscoreColName="prediction_score"
-DkvDelimiter=":"
-DinputTableName="multi_lr_test_input"
-DenableSparse="false"
-DappendColNames="label";Langkah 4: Lihat hasil
Kueri tabel multi_lr_test_prediction_result untuk meninjau output prediksi:
| label | prediction_result | prediction_score | prediction_detail |
|---|---|---|---|
| 0 | 0 | 0.9999997274902165 | {"0": 0.9999997274902165, "1": 2.324679066261573e-07, "2": 2.324679066261569e-07} |
| 0 | 0 | 0.9999997274902165 | {"0": 0.9999997274902165, "1": 2.324679066261573e-07, "2": 2.324679066261569e-07} |
| 2 | 2 | 0.9999999155958832 | {"0": 2.018833979850994e-07, "1": 2.324679066261573e-07, "2": 0.9999999155958832} |
| 1 | 1 | 0.9999999155958832 | {"0": 2.018833979850994e-07, "1": 0.9999999155958832, "2": 2.324679066261569e-07} |
Kolom output berisi informasi berikut:
prediction_result: Label kelas yang diprediksi.
prediction_score: Probabilitas yang diberikan untuk kelas yang diprediksi.
prediction_detail: Objek JSON yang memetakan setiap label kelas ke probabilitas prediksinya. Setiap kunci adalah label kelas dan setiap nilai adalah tingkat kepercayaan model terhadap kelas tersebut. Misalnya,
{"0": 0.999..., "1": 2.32e-07, "2": 2.32e-07}menunjukkan bahwa model memberikan kepastian hampir mutlak pada kelas0dan probabilitas hampir nol untuk kelas1dan2.