Komponen Hutan Acak adalah klasifikasi yang terdiri dari beberapa pohon keputusan. Hasil klasifikasi ditentukan oleh modus dari kelas-kelas output dari pohon individu.
Mengonfigurasi komponen
Anda dapat menggunakan salah satu metode berikut untuk mengonfigurasi komponen Hutan Acak.
Metode 1: Mengonfigurasi komponen pada halaman pipeline
Anda dapat mengonfigurasi parameter komponen Hutan Acak pada halaman pipeline Machine Learning Designer dari Platform for AI (PAI). Machine Learning Designer sebelumnya dikenal sebagai Machine Learning Studio. Tabel berikut menjelaskan parameter-parameter tersebut.
Tab | Parameter | Deskripsi |
Fields Setting | Feature Columns | Secara default, kolom-kolom kecuali kolom label dan kolom bobot dipilih. |
Excluded Columns | Kolom-kolom yang tidak digunakan untuk pelatihan. Kolom-kolom ini tidak dapat digunakan sebagai kolom fitur. | |
Forced Conversion Column | Patuhi aturan berikut untuk mem-parsing kolom:
Catatan Untuk mem-parse kolom tipe BIGINT menjadi kolom tipe kategoris, Anda harus menggunakan parameter forceCategorical untuk menentukan tipe. | |
Weight Columns | Kolom yang berisi bobot setiap baris sampel. Kolom dengan tipe data numerik didukung. | |
Label Column | Kolom label dalam tabel input. Kolom tipe STRING dan tipe data numerik didukung. | |
Parameters Setting | Number of Decision Trees in the Forest | Jumlah pohon. Nilai valid: 1 hingga 1.000. |
Single Decision tree Algorithm | Jika sebuah hutan memiliki N pohon dan kondisi adalah algorithmTypes=[a,b]:
Sebagai contoh, jika sebuah hutan memiliki lima pohon dan [2,4] menunjukkan 0, 1 menunjukkan algoritma ID3, 2 dan 3 menunjukkan algoritma CART, dan 4 menunjukkan algoritma C4.5. Jika nilainya adalah None, algoritma pohon akan dialokasikan secara merata di seluruh hutan. | |
Number of Random Features for Each Decision Tree | Nilai valid: [1,N]. N mewakili jumlah fitur. | |
Minimum Number of Leaf Nodes | Nilai valid: bilangan bulat positif. Nilai default: 2. | |
Minimum Ratio of Leaf Nodes to Parent Nodes | Nilai valid: [0,1]. Nilai default: 0. | |
Maximum Decision Tree Depth | Nilai valid: [1,+∞). Nilai default: ∞. | |
Number of Random Data Input for Each Decision Tree | Nilai valid: (1.000,1.000.000]. Nilai default: 100.000. |
Metode 2: Gunakan perintah PAI
Konfigurasikan parameter komponen menggunakan perintah PAI. Anda dapat menggunakan komponen SQL Script untuk memanggil perintah PAI. Untuk informasi lebih lanjut, lihat SQL Script.
PAI -name randomforests
-project algo_public
-DinputTableName="pai_rf_test_input"
-DmodelName="pai_rf_test_model"
-DforceCategorical="f1"
-DlabelColName="class"
-DfeatureColNames="f0,f1"
-DmaxRecordSize="100000"
-DminNumPer="0"
-DminNumObj="2"
-DtreeNum="3";Parameter | Diperlukan | Deskripsi | Nilai default |
inputTableName | Ya | Nama tabel input. | Tidak tersedia |
inputTablePartitions | Tidak | Partisi-partisi yang dipilih dari tabel input untuk pelatihan. Tentukan parameter ini dalam salah satu format berikut:
Catatan Jika Anda menentukan beberapa partisi, pisahkan partisi-partisi tersebut dengan koma (,). | Semua partisi |
labelColName | Ya | Nama kolom label yang dipilih dari tabel input. | Tidak tersedia |
modelName | Ya | Nama model output. | Tidak tersedia |
treeNum | Ya | Jumlah pohon dalam hutan. Nilai valid: 1 hingga 1000. | 100 |
excludedColNames | Tidak | Kolom-kolom yang tidak digunakan untuk pelatihan. Kolom-kolom ini tidak dapat digunakan sebagai kolom fitur. | String kosong |
weightColName | Tidak | Nama kolom bobot dalam tabel input. | Tidak tersedia |
featureColNames | Tidak | Kolom fitur yang dipilih dari tabel input untuk pelatihan. | Semua kolom kecuali kolom label yang ditentukan oleh parameter labelColName dan kolom bobot yang ditentukan oleh parameter weightColName. |
forceCategorical | Tidak | Patuhi aturan berikut untuk mem-parsing kolom:
Catatan Untuk mem-parse kolom tipe BIGINT menjadi kolom tipe kategoris, Anda harus menggunakan parameter forceCategorical untuk menentukan tipe. | INT adalah tipe kontinu. |
algorithmTypes | Tidak | Lokasi algoritma pohon dalam hutan. Jika hutan memiliki N pohon dan kondisi adalah algorithmTypes=[a,b]:
Sebagai contoh, jika sebuah hutan memiliki lima pohon dan [2,4] menunjukkan 0, 1 menunjukkan algoritma ID3, 2 dan 3 menunjukkan algoritma CART, dan 4 menunjukkan algoritma C4.5. Jika nilainya adalah None, algoritma pohon akan dialokasikan secara merata di seluruh hutan. | Dialokasikan secara merata |
randomColNum | Tidak | Jumlah fitur acak yang dipilih untuk setiap pemisahan saat pohon tunggal dibuat. Nilai valid: [1,N]. N mewakili jumlah fitur. | log2N |
minNumObj | Tidak | Jumlah minimum data pada node daun. Nilai parameter harus berupa bilangan bulat positif. | 2 |
minNumPer | Tidak | Rasio minimum data pada node daun terhadap data pada node induk. Nilai valid: [0,1]. | 0.0 |
maxTreeDeep | Tidak | Kedalaman maksimum pohon tunggal. Nilai valid: [1,+∞). | ∞ |
maxRecordSize | Tidak | Jumlah data input acak untuk pohon. Nilai valid: (1000,1000000]. | 100000 |
Contoh
Eksekusi pernyataan SQL berikut untuk menghasilkan data pelatihan:
create table pai_rf_test_input as select * from ( select 1 as f0,2 as f1, "good" as class union all select 1 as f0,3 as f1, "good" as class union all select 1 as f0,4 as f1, "bad" as class union all select 0 as f0,3 as f1, "good" as class union all select 0 as f0,4 as f1, "bad" as class )tmp;Jalankan perintah PAI berikut untuk mengirimkan parameter komponen Hutan Acak:
PAI -name randomforests -project algo_public -DinputTableName="pai_rf_test_input" -Dmodelname="pai_rf_test_model" -DforceCategorical="f1" -DlabelColName="class" -DfeatureColNames="f0,f1" -DmaxRecordSize="100000" -DminNumPer="0" -DminNumObj="2" -DtreeNum="3";Lihat Predictive Model Markup Language (PMML) dari model.
<?xml version="1.0" encoding="utf-8"?> <PMML xmlns="http://www.dmg.org/PMML-4_2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.2" xsi:schemaLocation="http://www.dmg.org/PMML-4_2 http://www.dmg.org/v4-2/pmml-4-2.xsd"> <Header copyright="Copyright (c) 2014, Alibaba Inc." description=""> <Application name="ODPS/PMML" version="0.1.0"/> <Timestamp>Tue, 12 Jul 2016 07:04:48 GMT</Timestamp> </Header> <DataDictionary numberOfFields="2"> <DataField name="f0" optype="continuous" dataType="integer"/> <DataField name="f1" optype="continuous" dataType="integer"/> <DataField name="class" optype="categorical" dataType="string"> <Value value="bad"/> <Value value="good"/> </DataField> </DataDictionary> <MiningModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"/> <MiningSchema> <MiningField name="f0" usageType="active"/> <MiningField name="f1" usageType="active"/> <MiningField name="class" usageType="target"/> </MiningSchema> <Segmentation multipleModelMethod="majorityVote"> <Segment id="0"> <True/> <TreeModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"> <MiningSchema> <MiningField name="f0" usageType="active"/> <MiningField name="f1" usageType="active"/> <MiningField name="class" usageType="target"/> </MiningSchema> <Node id="1"> <True/> <ScoreDistribution value="bad" recordCount="2"/> <ScoreDistribution value="good" recordCount="3"/> <Node id="2" score="good"> <SimplePredicate field="f1" operator="equal" value="2"/> <ScoreDistribution value="good" recordCount="1"/> </Node> <Node id="3" score="good"> <SimplePredicate field="f1" operator="equal" value="3"/> <ScoreDistribution value="good" recordCount="2"/> </Node> <Node id="4" score="bad" <SimplePredicate field="f1" operator="equal" value="4"/> <ScoreDistribution value="bad" recordCount="2"/> </Node> </Node> </TreeModel> </Segment> <Segment id="1"> <True/> <TreeModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"> <MiningSchema> <MiningField name="f0" usageType="active"/> <MiningField name="f1" usageType="active"/> <MiningField name="class" usageType="target"/> </MiningSchema> <Node id="1"> <True/> <ScoreDistribution value="bad" recordCount="2"/> <ScoreDistribution value="good" recordCount="3"/> <Node id="2" score="good"> <SimpleSetPredicate field="f1" booleanOperator="isIn"> <Array n="2" type="integer"2 3</Array> </SimpleSetPredicate> <ScoreDistribution value="good" recordCount="3"/> </Node> <Node id="3" score="bad"> <SimpleSetPredicate field="f1" booleanOperator="isNotIn"> <Array n="2" type="integer"2 3</Array> </SimpleSetPredicate> <ScoreDistribution value="bad" recordCount="2"/> </Node> </Node> </TreeModel> </Segment> <Segment id="2"> <True/> <TreeModel modelName="xlab_m_random_forests_1_75078_v0" functionName="classification" algorithmName="RandomForests"> <MiningSchema> <MiningField name="f0" usageType="active"/> <MiningField name="f1" usageType="active"/> <MiningField name="class" usageType="target"/> </MiningSchema> <Node id="1"> <True/> <ScoreDistribution value="bad" recordCount="2"/> <<ScoreDistribution value="good" recordCount="3"/> <Node id="2" score="bad"> <SimplePredicate field="f0" operator="lessOrEqual" value="0.5"/> <ScoreDistribution value="bad" recordCount="1"/> <ScoreDistribution value="good" recordCount="1"/> </Node> <Node id="3" score="good"> <SimplePredicate field="f0" operator="greaterThan" value="0.5"/> <ScoreDistribution value="bad" recordCount="1"/> <ScoreDistribution value="good" recordCount="2"/> </Node> </Node> </TreeModel> </Segment> </Segmentation> </MiningModel> </PMML>Lihat output visual dari komponen Hutan Acak.
