microsoftml.rx_fast_forest: floresta aleatória
Uso
microsoftml.rx_fast_forest(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'regression'] = 'binary', num_trees: int = 100,
num_leaves: int = 20, min_split: int = 10,
example_fraction: float = 0.7, feature_fraction: float = 1,
split_fraction: float = 1, num_bins: int = 255,
first_use_penalty: float = 0, gain_conf_level: float = 0,
train_threads: int = 8, random_seed: int = None,
ml_transforms: list = None, ml_transform_vars: list = None,
row_selection: str = None, transforms: dict = None,
transform_objects: dict = None, transform_function: str = None,
transform_variables: list = None,
transform_packages: list = None,
transform_environment: dict = None, blocks_per_read: int = None,
report_progress: int = None, verbose: int = 1,
ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)
Descrição
Floresta rápida de machine learning
Detalhes
As árvores de decisão são modelos não paramétricos que executam uma sequência de testes simples em entradas. Esse procedimento de decisão as mapeia para as saídas encontradas no conjunto de dados de treinamento cujas entradas sejam semelhantes à instância que está sendo processada. Uma decisão é tomada em cada nó da estrutura de dados de árvore binária com base em uma medida de similaridade que mapeia cada instância recursivamente pelas ramificações da árvore até que o nó folha apropriado seja atingido e a decisão de saída seja retornada.
As árvores de decisão têm várias vantagens:
São eficientes no uso de memória e computação durante o treinamento e a previsão.
Podem representar limites de decisão não lineares.
Elas executam a seleção de recursos integrados e classificação.
Elas são flexíveis na presença de recursos com ruídos.
A regressão de floresta rápida é uma implementação de floresta aleatória e de regressão de quantil usando o aprendiz de árvore de regressão em rx_fast_trees
.
Esse modelo consiste em um conjunto de árvores de decisão. Cada árvore em uma floresta de decisão gera uma distribuição Gaussiana como forma de previsão. É realizada uma agregação no conjunto de árvores para encontrar uma distribuição gaussiana mais próxima da combinada para todas as árvores no modelo.
Esse classificador de floresta de decisão consiste em um ensemble de árvores de decisão. Em termos gerais, os modelos de ensemble fornecem melhor cobertura e precisão que árvores de decisão únicas. Cada árvore em uma floresta de decisão gera uma distribuição Gaussiana.
Argumentos
formula
A fórmula, conforme a descrição em revoscalepy.rx_formula.
No momento, não há suporte para termos de interação nem para F()
no microsoftml.
data
Um objeto de fonte de dados ou uma cadeia de caracteres que especifica um arquivo .xdf ou um objeto de dataframe.
method
Uma cadeia de caracteres que denota o tipo de árvore rápida:
"binary"
para a classificação binária de árvore rápida padrão ou"regression"
para a regressão de árvore rápida.
num_trees
Especifica o número total de árvores de decisão a serem criadas no conjunto. Criando mais árvores de decisão, você pode obter uma cobertura melhor, mas o tempo de treinamento aumenta. O valor padrão é 100.
num_leaves
O número máximo de folhas (nós de terminal) que podem ser criadas em uma árvore. Valores mais altos podem aumentar o tamanho da árvore e melhorar a precisão, mas há um risco de sobreajuste e de necessidade de mais tempo de treinamento. O valor padrão é 20.
min_split
Número mínimo de instâncias de treinamento necessárias para formar uma folha. Ou seja, o número mínimo de documentos permitidos em uma folha de uma árvore de regressão, fora dos dados subamostrados. Uma "divisão" significa que os recursos em cada nível da árvore (nó) são divididos aleatoriamente. O valor padrão é 10.
example_fraction
A fração de instâncias escolhidas aleatoriamente a ser usada para cada árvore. O valor padrão é 0,7.
feature_fraction
A fração de recursos escolhidos aleatoriamente a ser usada para cada árvore. O valor padrão é 0,7.
split_fraction
A fração de recursos escolhidos aleatoriamente a ser usada em cada divisão. O valor padrão é 0,7.
num_bins
Número máximo de valores distintos (compartimentos) por recurso. O valor padrão é 255.
first_use_penalty
O recurso primeiro usa o coeficiente de penalidade. O valor padrão é 0.
gain_conf_level
Requisito de confiança de ganho de ajuste da árvore (deve estar no intervalo [0,1]
). O valor padrão é 0.
train_threads
O número de threads a serem usados no treinamento. Se None for especificado, o número de threads a serem usados será determinado internamente. O valor padrão é None.
random_seed
Especifica a semente aleatória. O valor padrão é None.
ml_transforms
Especifica uma lista de transformações do MicrosoftML a serem executadas nos dados antes do treinamento ou None para que nenhuma transformação seja executada. Confira featurize_text
, categorical
e categorical_hash
, para saber quais são as transformações com suporte.
Essas transformações são executadas após qualquer transformação do Python especificada.
O valor padrão é None.
ml_transform_vars
Especifica um vetor de caracteres de nomes de variáveis a ser usado em ml_transforms
ou None para que nenhum vetor seja usado.
O valor padrão é None.
row_selection
SEM SUPORTE. Especifica as linhas (observações) do conjunto de dados que devem ser usadas pelo modelo com o nome de uma variável lógica do conjunto de dados (entre aspas) ou com uma expressão lógica usando variáveis no conjunto de dados. Por exemplo:
row_selection = "old"
usará apenas observações nas quais o valor da variávelold
sejaTrue
.row_selection = (age > 20) & (age < 65) & (log(income) > 10)
apenas usa observações nas quais o valor da variávelage
está entre 20 e 65 e o valor delog
da variávelincome
é maior que 10.
A seleção de linha é executada após o processamento de todas as transformações de dados (confira os argumentos transforms
ou transform_function
). Assim como acontece com todas as expressões, é possível definir row_selection
fora da chamada de função usando a função expression
.
transformações
SEM SUPORTE. Uma expressão do formato que representa a primeira rodada de transformações de variável. Assim como acontece com todas as expressões, é possível definir transforms
(ou row_selection
) fora da chamada de função usando a função expression
.
transform_objects
SEM SUPORTE. Uma lista nomeada que contém objetos que podem ser referenciados por transforms
, transform_function
e row_selection
.
transform_function
A função de transformação de variável.
transform_variables
Um vetor de caracteres de variáveis do conjunto de dados de entrada necessário para a função de transformação.
transform_packages
SEM SUPORTE. Um vetor de caracteres que especifica pacotes Python adicionais (fora aqueles especificados em RxOptions.get_option("transform_packages")
) a serem disponibilizados e pré-carregados para uso em funções de transformação de variável.
Por exemplo, os definidos explicitamente nas funções revoscalepy por meio dos respectivos argumentos transforms
e transform_function
ou os definidos implicitamente por meio dos respectivos argumentos formula
ou row_selection
. O argumento transform_packages
também pode ser None, indicando que nenhum pacote fora de RxOptions.get_option("transform_packages")
é pré-carregado.
transform_environment
SEM SUPORTE. Um ambiente definido pelo usuário para funcionar como um pai de todos os ambientes desenvolvidos internamente e usados para transformação de dados de variável.
Se transform_environment = None
, um novo ambiente de "hash" com revoscalepy.baseenv pai é usado.
blocks_per_read
Especifica o número de blocos a serem lidos em cada parte dos dados lidos da fonte de dados.
report_progress
Um valor inteiro que especifica o nível de relatório sobre o progresso do processamento de linha:
0
: não é relatado nenhum progresso.1
: o número de linhas processadas é impresso e atualizado.2
: as linhas processadas e os tempos são relatados.3
: as linhas processadas e todos os tempos são relatados.
verbose
Um valor inteiro que especifica a quantidade de saída desejada.
Se definido como 0
, não será impressa nenhuma saída detalhada durante os cálculos. Valores inteiros de 1
a 4
fornecem quantidades crescentes de informações.
compute_context
Define o contexto no qual as computações são executadas, especificado com um RxComputeContext
válido.
No momento, há suporte para os contextos de computação local e RxInSqlServer
.
ensemble
Parâmetros de controle para conjuntos.
Retornos
Um objeto FastForest
com o modelo treinado.
Observação
Esse algoritmo é multithreading e sempre tentará carregar o conjunto de dados inteiro na memória.
Confira também
Referências
Floresta de regressão de quantil
De stumps até árvores e florestas
Exemplo de classificação binária
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_forest, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
infert = get_dataset("infert")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)
forest_model = rx_fast_forest(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(forest_model, data=data_test,
extra_vars_to_write=["isCase", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Saída:
Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Processed 186 instances
Binning and forming Feature objects
Reserved memory for tree learner: 7176 bytes
Starting to train ...
Not training a calibrator because a valid calibrator trainer was not provided.
Elapsed time: 00:00:00.2704185
Elapsed time: 00:00:00.0443884
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0253862
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
isCase PredictedLabel Score
0 False False -36.205067
1 True False -40.396084
2 False False -33.242531
3 False False -87.212494
4 True False -13.100666
Exemplo de regressão
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_forest, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
airquality = get_dataset("airquality")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
airquality = airquality.as_df()
######################################################################
# Estimate a regression fast forest
# Use the built-in data set 'airquality' to create test and train data
df = airquality[airquality.Ozone.notnull()]
df["Ozone"] = df.Ozone.astype(float)
data_train, data_test, y_train, y_test = train_test_split(df, df.Ozone)
airFormula = " Ozone ~ Solar_R + Wind + Temp "
# Regression Fast Forest for train data
ff_reg = rx_fast_forest(airFormula, method="regression", data=data_train)
# Put score and model variables in data frame
score_df = rx_predict(ff_reg, data=data_test, write_model_vars=True)
print(score_df.head())
# Plot actual versus predicted values with smoothed line
# Supported in the next version.
# rx_line_plot(" Score ~ Ozone ", type=["p", "smooth"], data=score_df)
Saída:
Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 87, Read Time: 0, Transform Time: 0
Beginning processing data.
Warning: Skipped 4 instances with missing features during training
Processed 83 instances
Binning and forming Feature objects
Reserved memory for tree learner: 21372 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0644269
Elapsed time: 00:00:00.0109290
Beginning processing data.
Rows Read: 29, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0314390
Finished writing 29 rows.
Writing completed.
Solar_R Wind Temp Score
0 190.0 7.4 67.0 26.296144
1 20.0 16.6 63.0 14.274153
2 320.0 16.6 73.0 23.421144
3 187.0 5.1 87.0 80.662109
4 175.0 7.4 89.0 67.570549