Random Forest adalah metode klasifikasi yang terdiri atas beberapa Pohon keputusan. Output-nya merupakan modus dari kelas-kelas yang dihasilkan oleh masing-masing pohon.
Konfigurasi Komponen
Anda dapat mengonfigurasi parameter komponen Random Forest dengan salah satu metode berikut.
Metode 1: GUI
Konfigurasikan parameter komponen pada halaman pipeline di Machine Learning Designer.
|
Tab |
Parameter |
Deskripsi |
|
field settings |
feature columns |
Secara default, semua kolom digunakan kecuali kolom label dan kolom weight. |
|
excluded columns |
Parameter ini tidak dapat digunakan bersamaan dengan feature columns. |
|
|
Force conversion columns |
Aturan parsing adalah sebagai berikut:
Catatan
Untuk memparse kolom BIGINT sebagai CATEGORICAL, gunakan parameter forceCategorical. |
|
|
weight column |
Kolom yang digunakan untuk memberi bobot pada setiap baris sampel. Hanya tipe numerik yang didukung. |
|
|
label column |
Kolom label dari tabel input. Tipe STRING dan numerik didukung. |
|
|
parameter settings |
Number of trees |
Nilai valid: 1 hingga 1000. |
|
Algorithm distribution |
Menentukan bagaimana algoritma pohon yang berbeda didistribusikan dalam forest. Jika sebuah forest memiliki N pohon dan Anda mengatur parameter ini menjadi algorithmTypes=[a,b], algoritma dialokasikan sebagai berikut:
Sebagai contoh, dalam forest dengan lima pohon, jika Anda mengatur parameter menjadi [2,4], pohon 1 menggunakan algoritma ID3, pohon 2 dan 3 menggunakan algoritma CART, dan pohon 4 dan 5 menggunakan algoritma C4.5. Jika Anda memasukkan None, algoritma didistribusikan secara merata di seluruh forest. |
|
|
Number of random features per tree |
Nilai valid: [1,N], di mana N adalah jumlah total fitur. |
|
|
Minimum samples per leaf node |
Harus berupa bilangan bulat positif. Nilai default-nya adalah 2. |
|
|
Minimum sample ratio per leaf node |
Rasio minimum sampel dalam sebuah leaf node relatif terhadap node induknya. Nilai valid: [0,1]. Nilai default-nya adalah 0. |
|
|
Maximum tree depth |
Nilai valid: [1,+∞). Nilai default-nya tanpa batas. |
|
|
Number of random input samples per tree |
Nilai valid: (1000,1000000]. Nilai default-nya adalah 100000. |
Metode 2: Perintah PAI
Gunakan perintah PAI untuk mengonfigurasi parameter komponen. Anda dapat menjalankan perintah PAI dengan menggunakan komponen skrip SQL. 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 |
Wajib |
Deskripsi |
Default |
|
inputTableName |
Ya |
Tabel input. |
N/A |
|
inputTablePartitions |
Tidak |
Partisi tabel input untuk pelatihan. Format yang didukung:
Catatan
Untuk menentukan beberapa partisi, pisahkan dengan koma (,). |
Semua partisi |
|
labelColName |
Ya |
Nama kolom label dalam tabel input. |
N/A |
|
modelName |
Ya |
Nama model output. |
N/A |
|
treeNum |
Ya |
Jumlah pohon dalam hutan. Nilai yang valid: 1 hingga 1.000. |
100 |
|
excludedColNames |
Tidak |
Parameter ini tidak dapat digunakan bersamaan dengan featureColNames. |
Kosong |
|
weightColName |
Tidak |
Nama kolom weight dalam tabel input. |
N/A |
|
featureColNames |
Tidak |
Nama kolom fitur yang digunakan untuk pelatihan. |
Semua kolom kecuali yang ditentukan untuk labelColName dan weightColName. |
|
forceCategorical |
Tidak |
Aturan parsing adalah sebagai berikut:
Catatan
Untuk memparse kolom BIGINT sebagai CATEGORICAL, gunakan parameter forceCategorical. |
INT diperlakukan sebagai tipe kontinu. |
|
algorithmTypes |
Tidak |
Menentukan bagaimana algoritma pohon yang berbeda didistribusikan dalam forest. Jika sebuah forest memiliki N pohon dan algorithmTypes=[a,b]:
Sebagai contoh, dalam forest dengan lima pohon, dengan pengaturan [2,4], pohon 1 menggunakan algoritma ID3, pohon 2 dan 3 menggunakan algoritma CART, dan pohon 4 dan 5 menggunakan algoritma C4.5. Jika Anda memasukkan None, algoritma didistribusikan secara merata di seluruh forest. |
Algoritma didistribusikan secara merata. |
|
randomColNum |
Tidak |
Jumlah fitur acak yang dipertimbangkan pada setiap pemisahan saat membangun Pohon keputusan. Nilai valid: [1,N], di mana N adalah jumlah total fitur. |
log2N |
|
minNumObj |
Tidak |
Jumlah minimum sampel yang diperlukan dalam sebuah leaf node. Harus berupa bilangan bulat positif. |
2 |
|
minNumPer |
Tidak |
Rasio minimum sampel dalam sebuah leaf node relatif terhadap node induknya. Nilai valid: [0,1]. |
0.0 |
|
maxTreeDeep |
Tidak |
Kedalaman maksimum sebuah pohon tunggal. Nilai valid: [1,+∞). |
Tanpa Batas |
|
maxRecordSize |
Tidak |
Jumlah sampel acak yang digunakan untuk membangun satu pohon. Nilai valid: (1000,1000000]. |
100000 |
Contoh
-
Gunakan 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; -
Gunakan perintah PAI berikut untuk mengirimkan parameter komponen Random Forest:
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 model dalam Predictive Model Markup Language (PMML).
<?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 model yang divisualisasikan.