Une forêt aléatoire est un classifieur composé de plusieurs arbres de décision. Le résultat correspond au mode des classes issues des différents arbres.
Configuration du composant
Configurez les paramètres du composant Forêt aléatoire en utilisant l'une des méthodes suivantes.
Méthode 1 : Interface graphique
Configurez les paramètres du composant sur la page du pipeline dans Machine Learning Designer.
|
Onglet |
Paramètre |
Description |
|
field settings |
feature columns |
Par défaut, toutes les colonnes sont utilisées, à l'exception des colonnes de libellé et de pondération. |
|
excluded columns |
Ce paramètre ne peut pas être utilisé conjointement avec feature columns. |
|
|
Force conversion columns |
Les règles d'analyse sont les suivantes :
Remarque
Pour analyser une colonne BIGINT en tant que CATEGORICAL, utilisez le paramètre forceCategorical. |
|
|
weight column |
Colonne utilisée pour pondérer chaque ligne d'échantillon. Seuls les types numériques sont pris en charge. |
|
|
label column |
Colonne de libellé de la table d'entrée. Les types STRING et numériques sont pris en charge. |
|
|
parameter settings |
Number of trees |
Valeurs valides : 1 à 1000. |
|
Algorithm distribution |
Spécifie la répartition des différents algorithmes d'arbre dans la forêt. Si une forêt contient N arbres et que vous définissez ce paramètre sur algorithmTypes=[a,b], les algorithmes sont alloués comme suit :
Par exemple, dans une forêt composée de cinq arbres, si vous définissez le paramètre sur [2,4], l'arbre 1 utilise l'algorithme ID3, les arbres 2 et 3 utilisent l'algorithme CART, et les arbres 4 et 5 utilisent l'algorithme C4.5. Si vous saisissez None, les algorithmes sont répartis uniformément dans toute la forêt. |
|
|
Number of random features per tree |
Valeurs valides : [1,N], où N représente le nombre total de fonctionnalités. |
|
|
Minimum samples per leaf node |
Doit être un entier positif. La valeur par défaut est 2. |
|
|
Minimum sample ratio per leaf node |
Ratio minimal d'échantillons dans un nœud feuille par rapport à son nœud parent. Valeurs valides : [0,1]. La valeur par défaut est 0. |
|
|
Maximum tree depth |
Valeurs valides : [1,+∞). La valeur par défaut est illimitée. |
|
|
Number of random input samples per tree |
Valeurs valides : (1000,1000000]. La valeur par défaut est 100000. |
Méthode 2 : Commande PAI
Utilisez une commande PAI pour configurer les paramètres du composant. Exécutez la commande PAI à l'aide du composant de script SQL. Pour plus d'informations, consultez Script 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";
|
Paramètre |
Obligatoire |
Description |
Valeur par défaut |
|
inputTableName |
Oui |
Table d'entrée. |
S/O |
|
inputTablePartitions |
Non |
Partitions de la table d'entrée pour l'entraînement. Formats pris en charge :
Remarque
Pour spécifier plusieurs partitions, séparez-les par des virgules (,). |
Toutes les partitions |
|
labelColName |
Oui |
Nom de la colonne de libellé dans la table d'entrée. |
S/O |
|
modelName |
Oui |
Nom du modèle de sortie. |
S/O |
|
treeNum |
Oui |
Nombre d'arbres dans la forêt. Valeurs valides : 1 à 1000. |
100 |
|
excludedColNames |
Non |
Ce paramètre ne peut pas être utilisé conjointement avec featureColNames. |
Vide |
|
weightColName |
Non |
Nom de la colonne de pondération dans la table d'entrée. |
S/O |
|
featureColNames |
Non |
Noms des colonnes de fonctionnalités utilisées pour l'entraînement. |
Toutes les colonnes, à l'exception de celles spécifiées pour labelColName et weightColName. |
|
forceCategorical |
Non |
Les règles d'analyse sont les suivantes :
Remarque
Pour analyser une colonne BIGINT en tant que CATEGORICAL, utilisez le paramètre forceCategorical. |
Le type INT est traité comme un type continu. |
|
algorithmTypes |
Non |
Spécifie la répartition des différents algorithmes d'arbre dans la forêt. Si une forêt contient N arbres et que algorithmTypes=[a,b] :
Par exemple, dans une forêt composée de cinq arbres, avec le paramètre [2,4], l'arbre 1 utilise l'algorithme ID3, les arbres 2 et 3 utilisent l'algorithme CART, et les arbres 4 et 5 utilisent l'algorithme C4.5. Si vous saisissez None, les algorithmes sont répartis uniformément dans toute la forêt. |
Les algorithmes sont répartis uniformément. |
|
randomColNum |
Non |
Nombre de fonctionnalités aléatoires à considérer à chaque division lors de la construction d'un arbre de décision. Valeurs valides : [1,N], où N représente le nombre total de fonctionnalités. |
log2N |
|
minNumObj |
Non |
Nombre minimal d'échantillons requis dans un nœud feuille. Doit être un entier positif. |
2 |
|
minNumPer |
Non |
Ratio minimal d'échantillons dans un nœud feuille par rapport à son nœud parent. Valeurs valides : [0,1]. |
0,0 |
|
maxTreeDeep |
Non |
Profondeur maximale d'un arbre unique. Valeurs valides : [1,+∞). |
Illimité |
|
maxRecordSize |
Non |
Nombre d'échantillons aléatoires utilisés pour construire un arbre unique. Valeurs valides : (1000,1000000]. |
100000 |
Exemple
-
Utilisez l'instruction SQL suivante pour générer les données d'entraînement :
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; -
Utilisez la commande PAI suivante pour soumettre les paramètres du composant Forêt aléatoire :
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"; -
Consultez le modèle au format 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> Consultez la sortie visualisée du modèle.