Logistic Regression for Binary Classification melatih model klasifikasi biner menggunakan algoritma regresi logistik. Komponen ini mendukung data masukan berformat dense maupun sparse, serta menggunakan pengoptimal limited-memory BFGS (L-BFGS).
Cara kerja
Pelatihan berlangsung dalam tiga tahap:
Pemrosesan fitur — Algoritma membaca kolom fitur yang ditentukan (tipe DOUBLE atau BIGINT) dan kolom label dari tabel input. Jika input berada dalam format sparse, komponen mengurai pasangan kunci-nilai sebelum diproses.
Pelatihan — L-BFGS secara iteratif meminimalkan fungsi loss. Setiap iterasi memperbarui bobot model. Pelatihan berhenti ketika peningkatan log-likelihood antara dua iterasi berturut-turut berada di bawah
epsilon, atau ketika jumlah maksimum iterasi tercapai.Prediksi — Model yang telah dilatih memberikan setiap baris label kelas prediksi (
prediction_result), skor kepercayaan (prediction_score), dan distribusi probabilitas di seluruh kelas (prediction_detail).
Konfigurasikan komponen
Pilih salah satu metode berikut.
Metode 1: Konfigurasikan di Machine Learning Designer
Buka tab konfigurasi pipeline di Machine Learning Designer, lalu atur parameter pada panel komponen.
Fields setting
| Parameter | Deskripsi |
|---|---|
| Training feature columns | Kolom fitur dari tabel input yang digunakan untuk pelatihan. Mendukung tipe DOUBLE dan BIGINT. Maksimal 20 juta fitur. |
| Target columns | Kolom label dalam tabel input. |
| Positive class value | Nilai label yang merepresentasikan kelas positif dalam klasifikasi biner. |
| Use sparse format | Aktifkan jika data input berada dalam format sparse. |
Parameters setting
| Parameter | Deskripsi | Default |
|---|---|---|
| Regularization type | Regularisasi yang diterapkan selama pelatihan. Nilai yang valid: None, L1, L2. Lihat Pilih jenis regularisasi. | — |
| Maximum iterations | Jumlah maksimum iterasi L-BFGS. | 100 |
| Regularization coefficient | Kekuatan regularisasi. Tidak berpengaruh jika Regularization type diatur ke None. | — |
| Minimum convergence deviance | Ambang batas konvergensi (epsilon). Pelatihan berhenti ketika peningkatan log-likelihood antara dua iterasi berada di bawah nilai ini. | 0,000001 |
Tuning
| Parameter | Deskripsi |
|---|---|
| Cores | Diatur secara otomatis oleh sistem. |
| Memory size per core | Diatur secara otomatis oleh sistem. |
Metode 2: Konfigurasikan menggunakan perintah PAI
Jalankan perintah PAI berikut melalui komponen SQL Script.
PAI -name logisticregression_binary
-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 wajib
| Parameter | Deskripsi |
|---|---|
inputTableName | Nama tabel input. |
labelColName | Kolom label dalam tabel input. |
modelName | Nama model offline output. |
Parameter opsional
| Parameter | Deskripsi | Default |
|---|---|---|
featureColNames | Kolom fitur yang digunakan untuk pelatihan. Maksimal 20 juta fitur. | Semua kolom numerik |
inputTablePartitions | Partisi yang digunakan dari tabel input. Format: partition_name=value atau name1=value1/name2=value2. Pisahkan beberapa partisi dengan koma. | Seluruh tabel |
regularizedType | Jenis regularisasi. Nilai yang valid: l1, l2, None. | l1 |
regularizedLevel | Koefisien regularisasi. Tidak berpengaruh jika regularizedType diatur ke None. | 1.0 |
maxIter | Jumlah maksimum iterasi L-BFGS. | 100 |
epsilon | Ambang batas konvergensi. Pelatihan berhenti ketika peningkatan log-likelihood antara dua iterasi berada di bawah nilai ini. | 1.0e-06 |
goodValue | Nilai label yang sesuai dengan kelas positif. Ditentukan secara acak jika tidak ditentukan. | — |
enableSparse | Apakah data input berada dalam format sparse. Nilai yang valid: true, false. | false |
itemDelimiter | Pembatas antar pasangan kunci-nilai dalam input sparse. | , (koma) |
kvDelimiter | Pembatas antara kunci dan nilai dalam input sparse. | : (titik dua) |
coreNum | Jumlah core. | Dialokasikan secara otomatis |
memSizePerCore | Ukuran memori per core, dalam MB. | Dialokasikan secara otomatis |
Pilih jenis regularisasi
| Jenis regularisasi | Kapan digunakan | Efek |
|---|---|---|
| L1 (default) | Data berdimensi tinggi dengan banyak fitur tidak relevan | Mendorong koefisien fitur tidak relevan menjadi nol, menghasilkan model sparse |
| L2 | Sebagian besar fitur relevan; Anda ingin mencegah koefisien terlalu besar | Memperkecil semua koefisien menuju nol tanpa menghilangkannya |
| None | Dataset kecil atau saat Anda ingin memahami garis dasar tanpa regularisasi | Tidak ada regularisasi yang diterapkan; regularizedLevel diabaikan |
Format data sparse
Saat enableSparse diatur ke true, komponen membaca setiap sel sebagai string kunci-nilai. Kunci merupakan indeks berbasis nol; nilai harus numerik. Nilai kunci non-numerik menyebabkan error.
itemDelimitermemisahkan pasangan kunci-nilai dalam satu sel.kvDelimitermemisahkan kunci dari nilainya.
Contoh input dengan pembatas default (, dan :):
| key_value |
|---|
| 1:100,4:200,5:300 |
| 1:10,2:20,3:30 |
Contoh
Contoh ini menjelaskan alur kerja lengkap dari pelatihan hingga prediksi menggunakan dataset dense.
Langkah 1: Buat tabel pelatihan
DROP TABLE IF EXISTS lr_test_input;
CREATE TABLE 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), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(1 AS BIGINT)
UNION ALL
SELECT CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
) a;Tabel hasil lr_test_input:
| f0 | f1 | f2 | f3 | label |
|---|---|---|---|---|
| 1.0 | 0.0 | 0.0 | 0.0 | 0 |
| 0.0 | 0.0 | 1.0 | 0.0 | 1 |
| 0.0 | 0.0 | 0.0 | 1.0 | 1 |
| 0.0 | 1.0 | 0.0 | 0.0 | 0 |
| 1.0 | 0.0 | 0.0 | 0.0 | 0 |
| 0.0 | 1.0 | 0.0 | 0.0 | 0 |
Langkah 2: Latih model
DROP OFFLINEMODEL IF EXISTS lr_test_model;
PAI -name logisticregression_binary
-project algo_public
-DmodelName="lr_test_model"
-DitemDelimiter=","
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="None"
-Depsilon="0.000001"
-DkvDelimiter=":"
-DlabelColName="label"
-DfeatureColNames="f0,f1,f2,f3"
-DenableSparse="false"
-DgoodValue="1"
-DinputTableName="lr_test_input";Langkah 3: Jalankan prediksi
Untuk detail parameter komponen Prediction, lihat Prediction.
DROP TABLE IF EXISTS lr_test_prediction_result;
PAI -name prediction
-project algo_public
-DdetailColName="prediction_detail"
-DmodelName="lr_test_model"
-DitemDelimiter=","
-DresultColName="prediction_result"
-Dlifecycle="28"
-DoutputTableName="lr_test_prediction_result"
-DscoreColName="prediction_score"
-DkvDelimiter=":"
-DinputTableName="lr_test_input"
-DenableSparse="false"
-DappendColNames="label";Langkah 4: Tinjau hasil
Tabel output lr_test_prediction_result berisi:
| label | prediction_result | prediction_score | prediction_detail |
|---|---|---|---|
| 0 | 0 | 0.9999998793434426 | {"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
| 1 | 1 | 0.999999799574135 | {"0": 2.004258650156743e-07, "1": 0.999999799574135} |
| 1 | 1 | 0.999999799574135 | {"0": 2.004258650156743e-07, "1": 0.999999799574135} |
| 0 | 0 | 0.9999998793434426 | {"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
| 0 | 0 | 0.9999998793434426 | {"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
| 0 | 0 | 0.9999998793434426 | {"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
Kolom output:
prediction_result— label kelas prediksi (0 atau 1)prediction_score— probabilitas kelas yang diprediksiprediction_detail— distribusi probabilitas di seluruh kelas dalam bentuk objek JSON
Semua prediksi sesuai dengan label asli, dengan skor kepercayaan di atas 0,9999.