すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:ランダムな森

最終更新日:Jul 22, 2024

ランダムフォレストコンポーネントは、複数の決定木からなる分類子である。 分類結果は、個々のツリーの出力クラスのモードによって決定される。

コンポーネントの設定

次のいずれかの方法を使用して、Random Forestコンポーネントを設定できます。

方法1: パイプラインページでコンポーネントを設定する

Machine Learning Platform for AI (PAI) のMachine Learning Designerのパイプラインページで、Random Forestコンポーネントのパラメーターを設定できます。 Machine Learning Designerは、以前はMachine Learning Studioとして知られていました。 下表に、各パラメーターを説明します。

タブ

パラメーター

説明

フィールド設定

フィーチャー列

デフォルトでは、ラベル列と重み列以外の列が選択されます。

除外列

トレーニングに使用されない列。 これらの列はフィーチャ列として使用できません。

強制変換列

次のルールに従って列を解析します。

  • STRING、BOOLEAN、またはDATETIME型の列を、離散型の列に解析します。

  • DOUBLE型またはBIGINT型の列を連続型の列に解析します。

説明

BIGINT型の列をcategorical型の列に解析するには、forceCategoricalパラメーターを使用して型を指定する必要があります。

重み列

サンプルの各行の重みを含む列。 数値データ型の列がサポートされています。

ラベル列

入力テーブルのラベル列。 STRING型の列と数値データ型がサポートされています。

パラメーター設定

フォレスト内の決定木の数

木の数。 有効な値: 1 ~ 1000

単一決定木アルゴリズム

フォレストにN個のツリーがあり、条件がalgorithmTypes=[a,b] の場合:

  • [0, a) は、ID3アルゴリズムを示す。

  • [a,b] は、CARTアルゴリズムを示す。

  • [b,n] はC4.5アルゴリズムを示す。

たとえば、フォレストに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

不可

トレーニング用に入力テーブルから選択されたパーティション。 このパラメーターを次のいずれかの形式で指定します。

  • Partition_name=value

  • name1=value1/name2=value2: マルチレベルパーティション

説明

複数のパーティションを指定する場合は、これらのパーティションをコンマ (,) で区切ります。

すべてのパーティション

labelColName

入力テーブルから選択されたラベル列の名前。

N/A

modelName

出力モデルの名前。

N/A

treeNum

森の中の木の数。 有効な値: 1 ~ 1000

100

excludedColNames

不可

トレーニングに使用されない列。 列をフィーチャ列として使用することはできません。

Empty string

weightColName

不可

入力テーブルの重み列の名前。

N/A

featureColNames

不可

トレーニング用に入力テーブルから選択されたフィーチャ列。

labelColNameパラメーターで指定されたlabel列とweightColNameパラメーターで指定されたweight列を除くすべての列。

forceCategorical

不可

次のルールに従って列を解析します。

  • STRING、BOOLEAN、またはDATETIME型の列を、離散型の列に解析します。

  • DOUBLE型またはBIGINT型の列を連続型の列に解析します。

説明

BIGINT型の列をcategorical型の列に解析するには、forceCategoricalパラメーターを使用して型を指定する必要があります。

INTは連続型です。

algorithmTypes

不可

フォレスト内のツリーアルゴリズムの位置。 フォレストにN個のツリーがあり、条件がalgorithmTypes=[a,b] の場合:

  • [0, a) は、ID3アルゴリズムを示す。

  • [a,b] は、CARTアルゴリズムを示す。

  • [b,n] はC4.5アルゴリズムを示す。

たとえば、フォレストに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

例:

  1. 次の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;
  2. 次の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";
  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>
  4. ランダムフォレストコンポーネントの視覚化された出力を表示します。 Visualized output