Un Random Forest es un clasificador compuesto por varios árboles de decisión. Su salida corresponde a la moda de las clases de los árboles individuales.
Configuración del componente
Configure los parámetros del componente Random Forest mediante uno de los siguientes métodos.
Método 1: GUI
Configure los parámetros del componente en la página de pipeline de Machine Learning Designer.
|
Pestaña |
Parámetro |
Descripción |
|
field settings |
feature columns |
De forma predeterminada, se utilizan todas las columnas excepto las de etiqueta y peso. |
|
excluded columns |
Este parámetro no se puede utilizar junto con feature columns. |
|
|
Force conversion columns |
Las reglas de análisis son a continuación:
Nota
Para interpretar una columna BIGINT como CATEGORICAL, utilice el parámetro forceCategorical. |
|
|
weight column |
Columna utilizada para ponderar cada fila de muestra. Solo se admiten tipos numéricos. |
|
|
label column |
Columna de etiqueta de la tabla de entrada. Se admiten tipos STRING y numéricos. |
|
|
parameter settings |
Number of trees |
Valores válidos: de 1 a 1000. |
|
Algorithm distribution |
Especifica cómo se distribuyen los distintos algoritmos de árbol en el bosque. Si un bosque tiene N árboles y establece este parámetro en algorithmTypes=[a,b], los algoritmos se asignan de la siguiente manera:
Por ejemplo, en un bosque con cinco árboles, si establece el parámetro en [2,4], el árbol 1 usa el algoritmo ID3, los árboles 2 y 3 usan el algoritmo CART, y los árboles 4 y 5 usan el algoritmo C4.5. Si introduce None, los algoritmos se distribuyen uniformemente en el bosque. |
|
|
Number of random features per tree |
Valores válidos: [1,N], donde N es el número total de características. |
|
|
Minimum samples per leaf node |
Debe ser un entero positivo. El valor predeterminado es 2. |
|
|
Minimum sample ratio per leaf node |
Proporción mínima de muestras en un nodo hoja respecto a su nodo padre. Valores válidos: [0,1]. El valor predeterminado es 0. |
|
|
Maximum tree depth |
Valores válidos: [1,+∞). El valor predeterminado es ilimitado. |
|
|
Number of random input samples per tree |
Valores válidos: (1000,1000000]. El valor predeterminado es 100000. |
Método 2: Comando PAI
Utilice un comando PAI para configurar los parámetros del componente. Ejecute el comando PAI mediante el componente de script SQL. Para obtener más información, consulte 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";
|
Parámetro |
Obligatorio |
Descripción |
Valor predeterminado |
|
inputTableName |
Sí |
Tabla de entrada. |
N/A |
|
inputTablePartitions |
No |
Particiones de la tabla de entrada para entrenamiento. Formatos compatibles:
Nota
Para especificar varias particiones, sepárelas con comas (,). |
Todas las particiones |
|
labelColName |
Sí |
Nombre de la columna de etiqueta en la tabla de entrada. |
N/A |
|
modelName |
Sí |
Nombre del modelo de salida. |
N/A |
|
treeNum |
Sí |
Número de árboles en el bosque. Valores válidos: de 1 a 1000. |
100 |
|
excludedColNames |
No |
Este parámetro no se puede utilizar junto con featureColNames. |
Vacío |
|
weightColName |
No |
Nombre de la columna de peso en la tabla de entrada. |
N/A |
|
featureColNames |
No |
Nombres de las columnas de características utilizadas para entrenamiento. |
Todas las columnas excepto las especificadas para labelColName y weightColName. |
|
forceCategorical |
No |
Las reglas de análisis son a continuación:
Nota
Para interpretar una columna BIGINT como CATEGORICAL, utilice el parámetro forceCategorical. |
INT se trata como tipo continuo. |
|
algorithmTypes |
No |
Especifica cómo se distribuyen los distintos algoritmos de árbol en el bosque. Si un bosque tiene N árboles y algorithmTypes=[a,b]:
Por ejemplo, en un bosque con cinco árboles y configuración [2,4], el árbol 1 usa el algoritmo ID3, los árboles 2 y 3 usan el algoritmo CART, y los árboles 4 y 5 usan el algoritmo C4.5. Si introduce None, los algoritmos se distribuyen uniformemente en el bosque. |
Los algoritmos se distribuyen uniformemente. |
|
randomColNum |
No |
Número de características aleatorias a considerar en cada división al construir un árbol de decisión. Valores válidos: [1,N], donde N es el número total de características. |
log2N |
|
minNumObj |
No |
Número mínimo de muestras requeridas en un nodo hoja. Debe ser un entero positivo. |
2 |
|
minNumPer |
No |
Proporción mínima de muestras en un nodo hoja respecto a su nodo padre. Valores válidos: [0,1]. |
0.0 |
|
maxTreeDeep |
No |
Profundidad máxima de un árbol individual. Valores válidos: [1,+∞). |
Ilimitado |
|
maxRecordSize |
No |
Número de muestras aleatorias utilizadas para construir un árbol individual. Valores válidos: (1000,1000000]. |
100000 |
Ejemplo
-
Utilice la siguiente sentencia SQL para generar datos de entrenamiento:
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; -
Utilice el siguiente comando PAI para enviar los parámetros del componente 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"; -
Consulte el modelo en 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> Consulte la visualización del modelo.