ランダムフォレストコンポーネントは、複数の決定木からなる分類子である。 分類結果は、個々のツリーの出力クラスのモードによって決定される。
コンポーネントの設定
次のいずれかの方法を使用して、Random Forestコンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
Machine Learning Platform for AI (PAI) のMachine Learning Designerのパイプラインページで、Random Forestコンポーネントのパラメーターを設定できます。 Machine Learning Designerは、以前はMachine Learning Studioとして知られていました。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | フィーチャー列 | デフォルトでは、ラベル列と重み列以外の列が選択されます。 |
除外列 | トレーニングに使用されない列。 これらの列はフィーチャ列として使用できません。 | |
強制変換列 | 次のルールに従って列を解析します。
説明 BIGINT型の列をcategorical型の列に解析するには、forceCategoricalパラメーターを使用して型を指定する必要があります。 | |
重み列 | サンプルの各行の重みを含む列。 数値データ型の列がサポートされています。 | |
ラベル列 | 入力テーブルのラベル列。 STRING型の列と数値データ型がサポートされています。 | |
パラメーター設定 | フォレスト内の決定木の数 | 木の数。 有効な値: 1 ~ 1000 |
単一決定木アルゴリズム | フォレストにN個のツリーがあり、条件がalgorithmTypes=[a,b] の場合:
たとえば、フォレストに5つのツリーがあり、[2,4] が0を示す場合、1はID3アルゴリズムを示し、2と3はCARTアルゴリズムを示し、4はC4.5アルゴリズムを示します。 値がNoneの場合、ツリーアルゴリズムはフォレスト全体に均等に割り当てられます。 | |
各決定ツリーのランダム特徴の数 | 有効値: [1,N] Nは特徴の数を表す。 | |
リーフノードの最小数 | 有効値: 正の整数。 デフォルト値:2 | |
親ノードに対するリーフノードの最小比率 | 有効な値: [0,1] 。 デフォルト値:0 | |
最大決定ツリーの深さ | 有効な値: [1,+ ∞) デフォルト値: ∞ | |
各決定ツリーのランダムデータ入力数 | 有効値: (1000,1000000) 。 デフォルト値:100000。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
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";
パラメーター | 必須 | 説明 | デフォルト値 |
inputTableName | 可 | 入力テーブルの名前。 | N/A |
inputTablePartitions | 不可 | トレーニング用に入力テーブルから選択されたパーティション。 このパラメーターを次のいずれかの形式で指定します。
説明 複数のパーティションを指定する場合は、これらのパーティションをコンマ (,) で区切ります。 | すべてのパーティション |
labelColName | 可 | 入力テーブルから選択されたラベル列の名前。 | N/A |
modelName | 可 | 出力モデルの名前。 | N/A |
treeNum | 可 | 森の中の木の数。 有効な値: 1 ~ 1000 | 100 |
excludedColNames | 不可 | トレーニングに使用されない列。 列をフィーチャ列として使用することはできません。 | Empty string |
weightColName | 不可 | 入力テーブルの重み列の名前。 | N/A |
featureColNames | 不可 | トレーニング用に入力テーブルから選択されたフィーチャ列。 | labelColNameパラメーターで指定されたlabel列とweightColNameパラメーターで指定されたweight列を除くすべての列。 |
forceCategorical | 不可 | 次のルールに従って列を解析します。
説明 BIGINT型の列をcategorical型の列に解析するには、forceCategoricalパラメーターを使用して型を指定する必要があります。 | INTは連続型です。 |
algorithmTypes | 不可 | フォレスト内のツリーアルゴリズムの位置。 フォレストにN個のツリーがあり、条件がalgorithmTypes=[a,b] の場合:
たとえば、フォレストに5つのツリーがあり、[2,4] が0を示す場合、1はID3アルゴリズムを示し、2と3はCARTアルゴリズムを示し、4はC4.5アルゴリズムを示します。 値がNoneの場合、ツリーアルゴリズムはフォレスト全体に均等に割り当てられます。 | 均等に割り当て |
randomColNum | 不可 | 単一のツリーが生成されるときに分割ごとに選択されるランダムな特徴の数。 有効値: [1,N] Nは特徴の数を表す。 | ログ2 N |
minNumObj | 不可 | リーフノードの最小データ量。 パラメーター値は正の整数でなければなりません。 | 2 |
minNumPer | 不可 | 親ノードのデータに対するリーフノードのデータの最小比率。 有効な値: [0,1] 。 | 0.0 |
maxTreeDeep | 不可 | 単一のツリーの最大深さ。 有効な値: [1,+ ∞) | ∞ |
maxRecordSize | 不可 | ツリーのランダムデータ入力数。 有効値: (1000,1000000) 。 | 100000 |
例:
次のSQL文を実行してトレーニングデータを生成します。
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;
次のPAIコマンドを実行して、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";
モデルの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"/> <TimestampTue, 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>
ランダムフォレストコンポーネントの視覚化された出力を表示します。