Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Usage
microsoftml.rx_fast_trees(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'regression'] = 'binary', num_trees: int = 100,
num_leaves: int = 20, learning_rate: float = 0.2,
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, unbalanced_sets: bool = False,
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)
Description
Árvore Rápida do Machine Learning
Detalhes
rx_fast_trees é uma implementação do FastRank. FastRank é uma implementação eficiente do algoritmo de aumento de gradiente MART. O aumento de gradiente é uma técnica de aprendizado de máquina para problemas de regressão. Ele cria cada árvore de regressão de forma passo a passo, usando uma função de perda predefinida para medir o erro para cada etapa e corrige para ela na próxima. Portanto, esse modelo de previsão é, na verdade, um conjunto de modelos de previsão mais fracos. Em problemas de regressão, o aumento cria uma série dessas árvores de forma passo a passo e seleciona a árvore ideal usando uma função de perda arbitrariamente diferencial.
O MART aprende um conjunto de árvores de regressão, que é uma árvore de decisão com valores escalares em suas folhas. Uma árvore de decisão (ou regressão) é um fluxograma binário semelhante a uma árvore, em que em cada nó interior um decide qual dos dois nós filho continuará com base em um dos valores de recurso da entrada. Em cada nó folha, um valor é retornado. Nos nós interiores, a decisão é baseada no teste "x <= v", onde x está o valor do recurso na amostra de entrada e v é um dos valores possíveis desse recurso. As funções que podem ser produzidas por uma árvore de regressão são todas as funções constantes em termos de peça.
O conjunto de árvores é produzido pela computação, em cada etapa, de uma árvore de regressão que aproxima o gradiente da função de perda e adicionando-a à árvore anterior com coeficientes que minimizam a perda da nova árvore. A saída do conjunto produzido pelo MART em uma determinada instância é a soma das saídas de árvore.
No caso de um problema de classificação binária, a saída é convertida em uma probabilidade usando alguma forma de calibragem.
No caso de um problema de regressão, a saída é o valor previsto da função.
No caso de um problema de classificação, as instâncias são ordenadas pelo valor de saída do conjunto.
Se method for definido como "regression", uma versão de regressão do FastTree será usada. Se definido como "ranking", uma versão de classificação do FastTree será usada. No caso de classificação, as instâncias devem ser ordenadas pela saída do conjunto de árvores. A única diferença nas configurações dessas versões está nas configurações de calibragem, que são necessárias apenas para classificação.
Arguments
fórmula
A fórmula, conforme descrito em revoscalepy.rx_formula.
No momento, não há suporte para termos F() de interação no microsoftml.
dados
Um objeto de fonte de dados ou uma cadeia de caracteres especificando um arquivo .xdf ou um objeto de quadro de dados.
método
Uma cadeia de caracteres que especifica o tipo de Árvore Rápida: "binary" para a Classificação Binária de Árvore Rápida padrão ou "regression" para Regressão Rápida de Árvore.
num_trees
Especifica o número total de árvores de decisão a serem criadas no conjunto. Ao criar mais árvores de decisão, você pode potencialmente obter uma melhor cobertura, 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 qualquer árvore. Valores mais altos potencialmente aumentam o tamanho da árvore e obtêm melhor precisão, mas correm o risco de sobreajustá-lo e exigir tempos de treinamento mais longos. O valor padrão é 20.
taxa de aprendizado
Determina o tamanho da etapa executada na direção do gradiente em cada etapa do processo de aprendizagem. Isso determina o quão rápido ou lento o aprendiz converge para a solução ideal. Se o tamanho da etapa for muito grande, você poderá superar a solução ideal. Se o tamanho da etapa for muito pequeno, o treinamento levará mais tempo para convergir para a melhor solução.
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 sub-amostrados. Uma 'divisão' significa que os recursos em cada nível da árvore (nó) são divididos aleatoriamente. O valor padrão é 10. Somente o número de instâncias é contado mesmo se as instâncias forem ponderadas.
example_fraction
A fração de instâncias escolhidas aleatoriamente a serem usadas para cada árvore. O valor padrão é 0,7.
feature_fraction
A fração de recursos escolhidos aleatoriamente a serem usados para cada árvore. O valor padrão é 1.
split_fraction
A fração de recursos escolhidos aleatoriamente a serem usados em cada divisão. O valor padrão é 1.
num_bins
Número máximo de valores distintos (compartimentos) por recurso. Se o recurso tiver menos valores do que o número indicado, cada valor será colocado em seu próprio compartimento. Se houver mais valores, o algoritmo criará numBins compartimentos.
first_use_penalty
O recurso usa primeiro o coeficiente de penalidade. Essa é uma forma de regularização que incorre em uma penalidade por usar um novo recurso ao criar a árvore. Aumente esse valor para criar árvores que não usam muitos recursos. O valor padrão é 0.
gain_conf_level
Requisito de confiança de ganho de ajuste de árvore (deve estar no intervalo [0,1)). O valor padrão é 0.
unbalanced_sets
Se True, derivativos otimizados para conjuntos desbalanceados são usados. Aplicável somente quando type igual a "binary".
O valor padrão é False.
train_threads
O número de threads a serem usados no treinamento. O valor padrão é 8.
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 Nenhuma se nenhuma transformação deve ser executada. Consulte featurize_text, categoricale categorical_hash, para transformações com suporte.
Essas transformações são executadas após quaisquer transformações do Python especificadas.
O valor padrão é None.
ml_transform_vars
Especifica um vetor de caracteres de nomes de variáveis a serem usados ou ml_transformsNenhum se nenhum for 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éTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)usa apenas observações nas quais o valor daagevariável está entre 20 e 65 e o valor dalogincomevariável é maior que 10.
A seleção de linha é executada após o processamento de transformações de dados (consulte os argumentos transforms ou transform_function). Assim como acontece com todas as expressões, row_selection pode ser definido fora da chamada de função usando a expression função.
Transforma
SEM SUPORTE. Uma expressão do formulário que representa a primeira rodada de transformações variáveis. Assim como acontece com todas as expressões, transforms (ou row_selection) pode ser definido fora da chamada de função usando a expression função.
transform_objects
SEM SUPORTE. Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transform_functione row_selection.
transform_function
A função de transformação variável.
transform_variables
Um vetor de caractere das variáveis de conjunto de dados de entrada necessárias para a função de transformação.
transform_packages
SEM SUPORTE. Um vetor de caracteres que especifica pacotes python adicionais (fora daqueles especificados em RxOptions.get_option("transform_packages")) a serem disponibilizados e pré-carregados para uso em funções de transformação variável.
Por exemplo, aqueles explicitamente definidos em funções revoscalepy por meio de seus transforms argumentos ou transform_function argumentos ou aqueles definidos implicitamente por meio de seus formula argumentos ou row_selection argumentos. O transform_packages argumento também pode ser Nenhum, indicando que nenhum pacote externo RxOptions.get_option("transform_packages") está pré-carregado.
transform_environment
SEM SUPORTE. Um ambiente definido pelo usuário para servir como pai para todos os ambientes desenvolvidos internamente e usados para transformação de dados variáveis.
Se transform_environment = None, um novo ambiente "hash" com parent revoscalepy.baseenv será usado em vez disso.
blocks_per_read
Especifica o número de blocos a serem lidos para 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 linhas:
0: nenhum progresso é relatado.1: o número de linhas processadas é impresso e atualizado.2: linhas processadas e intervalos são relatados.3: linhas processadas e todos os intervalos são relatados.
detalhada
Um valor inteiro que especifica a quantidade de saída desejada.
Se 0, nenhuma saída detalhada será impressa durante os cálculos. Valores inteiros de 1 para 4 fornecer quantidades crescentes de informações.
compute_context
Define o contexto no qual os cálculos são executados, especificado com um revoscalepy válido. RxComputeContext. Atualmente local e revoscalepy. Há suporte para contextos de computação RxInSqlServer .
Conjunto
Controlar parâmetros para ensembling.
Devoluções
Um FastTrees objeto com o modelo treinado.
Observação
Esse algoritmo tem vários threads e sempre tentará carregar todo o conjunto de dados na memória.
Consulte também
Referências
Wikipédia: Aumento de gradiente (aumento de árvore de gradiente)
Aproximação de função greedy: uma máquina de aumento de gradiente.
Exemplo de Classificação Binária
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, 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)
trees_model = rx_fast_trees(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(trees_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: 7020 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0949161
Elapsed time: 00:00:00.0112103
Beginning processing data.
Rows Read: 62, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0230457
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds
isCase PredictedLabel Score Probability
0 False False -4.722279 0.131369
1 False False -11.550012 0.009757
2 False False -7.312314 0.050935
3 True True 3.889991 0.825778
4 False False -6.361800 0.072782
Exemplo de regressão
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, 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_trees(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:
'unbalanced_sets' ignored for method 'regression'
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.001, 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: 21528 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0512720
Elapsed time: 00:00:00.0094435
Beginning processing data.
Rows Read: 29, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0229873
Finished writing 29 rows.
Writing completed.
Solar_R Wind Temp Score
0 115.0 7.4 76.0 26.003876
1 307.0 12.0 66.0 18.057747
2 230.0 10.9 75.0 10.896211
3 259.0 9.7 73.0 13.726607
4 92.0 15.5 84.0 37.972855