Gradient Boosting Decision Tree (GBDT) adalah algoritma pembelajaran mesin tingkat lanjut yang menggunakan metode iteratif untuk membangun kumpulan decision tree guna melakukan analisis regresi. Dengan mengoptimalkan fungsi loss secara progresif, algoritma ini mampu menangani masalah regresi linier maupun nonlinier serta menghasilkan prediksi yang sangat akurat.
Konfigurasikan komponen
Metode 1: Konfigurasi visual
Tambahkan komponen GBDT Regression ke halaman workflow Designer, lalu konfigurasikan parameter pada panel di sebelah kanan.
|
Parameter type |
Parameter |
Description |
|
Fields setting |
Input columns |
Kolom fitur dari sumber data input yang digunakan untuk pelatihan. Mendukung tipe DOUBLE dan BIGINT. Catatan
Jumlah kolom fitur tidak boleh melebihi 800. |
|
Label column |
Mendukung tipe DOUBLE dan BIGINT. |
|
|
Group column |
Mendukung tipe DOUBLE dan BIGINT. Secara default, seluruh tabel diperlakukan sebagai satu kelompok. |
|
|
Parameters setting |
Loss function type |
Tipe yang didukung adalah gbrank loss, lambdamart dcg loss, lambdamart ndcg loss, dan regression loss. |
|
Tau parameter in gbrank loss |
Nilainya harus berada dalam rentang [0,1]. |
|
|
Exponent base in gbrank and regression loss |
Nilainya harus berada dalam rentang [1,10]. |
|
|
Metric type |
Tipe yang didukung adalah NDCG dan DCG. |
|
|
Number of trees |
Nilainya harus berada dalam rentang 1 hingga 10000. |
|
|
Learning rate |
Nilainya harus berada dalam rentang (0,1). |
|
|
Maximum number of leaf nodes |
Nilainya harus berada dalam rentang 1 hingga 1000. |
|
|
Maximum depth of a tree |
Nilainya harus berada dalam rentang 1 hingga 11. |
|
|
Minimum number of samples on a leaf node |
Nilainya harus berada dalam rentang 1 hingga 1000. |
|
|
Sample sampling ratio |
Nilainya harus berada dalam rentang (0,1). |
|
|
Feature sampling ratio during training |
Nilainya harus berada dalam rentang (0,1). |
|
|
Ratio of test samples |
Nilainya harus berada dalam rentang [0,1). |
|
|
Seed for random number generator |
Nilainya harus berada dalam rentang [0,10]. |
|
|
Use Newton's method for learning |
Menentukan apakah akan menggunakan metode Newton. |
|
|
Maximum number of splits for a feature |
Nilainya harus berada dalam rentang 1 hingga 1000. |
|
|
Execution tuning |
Number of computing cores |
Sistem secara otomatis mengalokasikan jumlah instans pelatihan berdasarkan volume data input. |
|
Memory per core |
Sistem secara otomatis mengalokasikan memori berdasarkan volume data input. Satuannya adalah MB. |
Metode 2: Gunakan perintah PAI
Gunakan perintah PAI untuk mengonfigurasi parameter komponen GBDT Regression. Anda dapat memanggil perintah PAI melalui komponen SQL Script. Untuk informasi selengkapnya, lihat SQL Script.
PAI -name gbdt
-project algo_public
-DfeatureSplitValueMaxSize="500"
-DlossType="0"
-DrandSeed="0"
-DnewtonStep="0"
-Dshrinkage="0.05"
-DmaxLeafCount="32"
-DlabelColName="campaign"
-DinputTableName="bank_data_partition"
-DminLeafSampleCount="500"
-DsampleRatio="0.6"
-DgroupIDColName="age"
-DmaxDepth="11"
-DmodelName="xlab_m_GBDT_83602"
-DmetricType="2"
-DfeatureRatio="0.6"
-DinputTablePartitions="pt=20150501"
-Dtau="0.6"
-Dp="1"
-DtestRatio="0.0"
-DfeatureColNames="previous,cons_conf_idx,euribor3m"
-DtreeCount="500"
|
Parameter |
Required |
Default value |
Description |
|
inputTableName |
Yes |
None |
Nama tabel input. |
|
featureColNames |
No |
All numeric columns |
Nama kolom fitur dalam tabel input yang digunakan untuk pelatihan. Mendukung tipe DOUBLE dan BIGINT. |
|
labelColName |
Yes |
None |
Nama kolom label dalam tabel input. Mendukung tipe DOUBLE dan BIGINT. |
|
inputTablePartitions |
No |
All partitions |
Partisi dalam tabel input yang digunakan untuk pelatihan. Format berikut didukung:
Catatan
Gunakan koma (,) untuk memisahkan beberapa partisi. |
|
modelName |
Yes |
None |
Nama model output. |
|
outputImportanceTableName |
No |
None |
Nama tabel output untuk pentingnya fitur. |
|
groupIDColName |
No |
Full table |
Kolom pengelompokan data. |
|
lossType |
No |
0 |
Fungsi loss. Tipe berikut didukung:
|
|
metricType |
No |
0 |
Tipe-tipe tersebut meliputi:
|
|
treeCount |
No |
500 |
Jumlah pohon. Nilainya harus berada dalam rentang 1 hingga 10000. |
|
shrinkage |
No |
0.05 |
Tingkat pembelajaran. Nilainya harus berada dalam rentang (0,1). |
|
maxLeafCount |
No |
32 |
Jumlah maksimum node daun. Nilainya harus berada dalam rentang 1 hingga 1000. |
|
maxDepth |
No |
10 |
Kedalaman maksimum pohon. Nilainya harus berada dalam rentang 1 hingga 11. |
|
minLeafSampleCount |
No |
500 |
Jumlah minimum sampel pada node daun. Nilainya harus berada dalam rentang 1 hingga 1000. |
|
sampleRatio |
No |
0.6 |
Rasio pengambilan sampel untuk sampel selama pelatihan. Nilainya harus berada dalam rentang (0,1). |
|
featureRatio |
No |
0.6 |
Rasio pengambilan sampel untuk fitur selama pelatihan. Nilainya harus berada dalam rentang (0,1). |
|
tau |
No |
0.6 |
Parameter Tau dalam GBRank Loss. Nilainya harus berada dalam rentang [0,1]. |
|
p |
No |
1 |
Parameter p dalam GBRank Loss. Nilainya harus berada dalam rentang [1,10]. |
|
randSeed |
No |
0 |
Seed untuk penghasil angka acak. Nilainya harus berada dalam rentang [0,10]. |
|
newtonStep |
No |
1 |
Menentukan apakah akan menggunakan metode iterasi Newton. Nilainya dapat berupa {0,1}. |
|
featureSplitValueMaxSize |
No |
500 |
Jumlah maksimum pemisahan untuk suatu fitur. Nilainya harus berada dalam rentang 1 hingga 1000. |
|
lifecycle |
No |
None |
Siklus hidup tabel output. |
Contoh
-
Gunakan pernyataan SQL untuk menghasilkan data uji.
drop table if exists gbdt_ls_test_input; create table gbdt_ls_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(1 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 union all 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 ) a;Tabel data uji yang dihasilkan gbdt_ls_test_input adalah sebagai berikut.
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
-
Gunakan perintah PAI untuk mengirimkan parameter pelatihan komponen GBDT Regression.
drop offlinemodel if exists gbdt_ls_test_model; PAI -name gbdt -project algo_public -DfeatureSplitValueMaxSize="500" -DlossType="3" -DrandSeed="0" -DnewtonStep="1" -Dshrinkage="0.5" -DmaxLeafCount="32" -DlabelColName="label" -DinputTableName="gbdt_ls_test_input" -DminLeafSampleCount="1" -DsampleRatio="1" -DmaxDepth="10" -DmetricType="0" -DmodelName="gbdt_ls_test_model" -DfeatureRatio="1" -Dp="1" -Dtau="0.6" -DtestRatio="0" -DfeatureColNames="f0,f1,f2,f3" -DtreeCount="10" -
Gunakan perintah PAI untuk mengirimkan parameter komponen Prediction.
drop table if exists gbdt_ls_test_prediction_result; PAI -name prediction -project algo_public -DdetailColName="prediction_detail" -DmodelName="gbdt_ls_test_model" -DitemDelimiter="," -DresultColName="prediction_result" -Dlifecycle="28" -DoutputTableName="gbdt_ls_test_prediction_result" -DscoreColName="prediction_score" -DkvDelimiter=":" -DinputTableName="gbdt_ls_test_input" -DenableSparse="false" -DappendColNames="label" -
Lihat tabel hasil prediksi gbdt_ls_test_prediction_result.
label
prediction_result
prediction_score
prediction_detail
0
NULL
0.0
{“label”: 0}
0
NULL
0.0
{“label”: 0}
1
NULL
0.9990234375
{“label”: 0.9990234375}
1
NULL
0.9990234375
{“label”: 0.9990234375}
0
NULL
0.0
{“label”: 0}
0
NULL
0.0
{“label”: 0}