Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Usage
microsoftml.rx_fast_linear()
Description
Um treinador de otimização de Escalada Dupla Estocástica de Coordenadas (SDCA) para classificação binária linear e regressão.
Detalhes
rx_fast_linear é um treinador baseado no método Stochastic Dual Coordinate Ascent (SDCA), uma técnica de otimização de última geração para funções objetivo convexas. O algoritmo pode ser escalado para uso em grandes conjuntos de dados fora de memória devido a uma implementação semi-assíncrona que suporta multi-threading.
A convergência é garantida pela imposição periódica da sincronização entre atualizações primal e dual numa thread separada. São também disponibilizadas várias opções de funções de perda. O método SDCA combina várias das melhores propriedades e capacidades da regressão logística e dos algoritmos SVM.
Para mais informações sobre a SDCA, consulte as citações na secção de referências.
Algoritmos tradicionais de otimização, como a descida do gradiente estocástico (SGD), otimizam diretamente a função de perda empírica. A SDCA opta por uma abordagem diferente que otimiza o problema dual. A função de perda dual é parametrizada por pesos por exemplo. Em cada iteração, quando um exemplo de treino do conjunto de dados de treino é lido, o peso correspondente do exemplo é ajustado para que a função de perda dual seja otimizada em relação ao exemplo atual. A SDCA não precisa de uma taxa de aprendizagem para determinar o tamanho do passo, como é exigido por vários métodos de descida gradiente.
rx_fast_linear Atualmente suporta classificação binária com três tipos de funções de perda: Perda logarítmica, perda de dobradiça e perda de dobradiça suavizada.
A regressão linear também suporta a função de perda ao quadrado. A regularização da rede elástica pode ser especificada pelos l2_weight parâmetros e.l1_weight Note-se que o l2_weight tem um efeito na taxa de convergência. Em geral, quanto maior for , l2_weightmais rápido converge a SDCA.
Note que rx_fast_linear é um algoritmo estocástico e de otimização em streaming. Os resultados dependem da ordem dos dados de treino. Para resultados reprodutíveis, recomenda-se que se defina shuffle para False e train_threads para 1.
Arguments
fórmula
A fórmula descrita em revoscalepy.rx_formula.
Termos de interação e F() não são atualmente suportados no microsoftml.
dados
Um objeto fonte de dados ou uma cadeia de caracteres que especifica um ficheiro .xdf ou um objeto data frame.
método
Especifica o tipo de modelo com uma cadeia de caracteres: "binary" para a classificação binária padrão ou "regression" para regressão linear.
loss_function
Especifica a função de perda empírica a otimizar. Para classificação binária, estão disponíveis as seguintes opções:
log_loss: A perda de log. Este é o padrão.hinge_loss: A perda da dobradiça do SVM. O seu parâmetro representa o tamanho da margem.smooth_hinge_loss: A perda suavizada da dobradiça. O seu parâmetro representa a constante de suavização.
Para regressão linear, a perda squared_loss quadrática é atualmente suportada. Quando este parâmetro é definido como Nenhum, o seu valor padrão depende do tipo de aprendizagem:
log_losspara a classificação binária.squared_losspara regressão linear.
O exemplo seguinte altera a loss_function para hinge_loss: rx_fast_linear(..., loss_function=hinge_loss()).
l1_weight
Especifica o peso de regularização L1. O valor deve ser ou não negativo ou Nenhum. Se Nenhum for especificado, o valor real é automaticamente calculado com base no conjunto de dados. Nenhum é o valor padrão.
l2_weight
Especifica o peso de regularização L2. O valor deve ser ou não negativo ou Nenhum. Se Nenhum for especificado, o valor real é automaticamente calculado com base no conjunto de dados. Nenhum é o valor padrão.
train_threads
Especifica quantos threads concorrentes podem ser usados para executar o algoritmo. Quando este parâmetro é definido como Nenhum, o número de threads utilizados é determinado com base no número de processadores lógicos disponíveis para o processo, bem como na escassez de dados. Define para 1 correr o algoritmo num único thread.
convergence_tolerance
Especifica o limiar de tolerância usado como critério de convergência. Deve estar entre 0 e 1. O valor predefinido é 0.1. Considera-se que o algoritmo convergiu se a lacuna de dualidade relativa, que é a razão entre a lacuna de dualidade e a perda primal, ficar abaixo da tolerância de convergência especificada.
max_iterations
Especifica um limite superior para o número de iterações de treino. Este parâmetro deve ser positivo ou Nenhum. Se Nenhum for especificado, o valor real é automaticamente calculado com base no conjunto de dados. Cada iteração requer uma passagem completa sobre os dados de treino. O treino termina após o número total de iterações atingir o limite superior especificado ou quando a função de perda converge, o que acontecer mais cedo.
shuffle
Especifica se deve embaralhar os dados de treino. Configurar True para embaralhar os dados; False não para embaralhar. O valor predefinido é True. SDCA é um algoritmo de otimização estocástica. Se o embaralhamento estiver ativado, os dados de treino são embaralhados em cada iteração.
check_frequency
O número de iterações após as quais a função de perda é calculada e verificada para determinar se convergiu. O valor especificado deve ser um inteiro positivo ou Nenhum. Se não for nenhum, o valor real é automaticamente calculado com base no conjunto de dados. Caso contrário, por exemplo, se checkFrequency = 5 for especificado, então a função de perda é calculada e a convergência é verificada a cada 5 iterações. O cálculo da função de perda requer uma passagem completa separada sobre os dados de treino.
normalizar
Especifica o tipo de normalização automática utilizada:
"Auto": se for necessária normalização, ela é realizada automaticamente. Esta é a escolha padrão."No": não é realizada qualquer normalização."Yes": a normalização é realizada."Warn": se for necessária normalização, é exibida uma mensagem de aviso, mas a normalização não é realizada.
A normalização reescala intervalos de dados díspares para uma escala padrão. A escalabilidade de características assegura que as distâncias entre pontos de dados são proporcionais e permite que vários métodos de otimização, como a descida gradiente, convergam muito mais rapidamente. Se for realizada a normalização, é utilizado um MaxMin normalizador. Normaliza valores num intervalo [a, b] onde -1 <= a <= 0 e 0 <= b <= 1 e b - a = 1. Este normalizador preserva a esparsidade ao mapear zero para zero.
ml_transforms
Especifica uma lista de transformações MicrosoftML a realizar nos dados antes do treino ou Nenhuma se não forem realizadas transformações. Veja featurize_text, categorical, e categorical_hash, para transformações que são suportadas.
Estas transformações são realizadas após quaisquer transformações em Python especificadas.
O valor predefinido é None.
ml_transform_vars
Especifica um vetor de caracteres com nomes de variáveis a serem usados em ml_transforms ou Nenhum se não for necessário usar nenhum.
O valor predefinido é None.
row_selection
NÃO SUPORTADO. Especifica as linhas (observações) do conjunto de dados que serão 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 do conjunto de dados. Por exemplo:
row_selection = "old"só usará observações em que o valor da variáveloldéTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)só utiliza observações em que o valor daagevariável está entre 20 e 65 e o valorlogdaincomevariável é superior a 10.
A seleção de linhas é realizada após o processamento de quaisquer transformações de dados (ver os argumentos transforms ou transform_function). Como em todas as expressões, row_selection pode ser definido fora da chamada de função usando a expression função.
transforma
NÃO SUPORTADO. Uma expressão da forma que representa a primeira ronda de transformações de variáveis. Como em todas as expressões, transforms (ou row_selection) pode ser definido fora da chamada de função usando a expression função.
transform_objects
NÃO SUPORTADO. 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áveis.
transform_variables
Um vetor de caracteres das variáveis do conjunto de dados de entrada necessárias para a função de transformação.
transform_packages
NÃO SUPORTADO. Um vetor de caracteres que especifica pacotes Python adicionais (para além dos especificados em RxOptions.get_option("transform_packages")) a serem disponibilizados e pré-carregados para uso em funções de transformação de variáveis.
Por exemplo, aquelas definidas explicitamente em funções revoscalepy através dos argumentos e transformstransform_function ou aquelas definidas implicitamente através dos argumentos ou formularow_selection . O transform_packages argumento pode também ser Nenhum, indicando que nenhum pacote externo RxOptions.get_option("transform_packages") está pré-carregado.
transform_environment
NÃO SUPORTADO. Um ambiente definido pelo utilizador para servir como pai de todos os ambientes desenvolvidos internamente e usados para transformação de dados variáveis.
Se transform_environment = None, é utilizado um novo ambiente "hash" com o pai revoscalepy.baseenv.
blocks_per_read
Especifica o número de blocos a ler para cada bloco de dados lido da fonte de dados.
report_progress
Um valor inteiro que especifica o nível de reporte sobre o progresso do processamento da linha:
0: Não há progresso reportado.1: o número de linhas processadas é impresso e atualizado.2: as linhas processadas e os tempos são reportados.3: linhas processadas e todos os tempos são reportados.
verbose
Um valor inteiro que especifica a quantidade de saída desejada.
Se 0, não é impressa nenhuma saída detalhada durante os cálculos. Valores inteiros de 1 para 4 fornecer quantidades crescentes de informação.
compute_context
Define o contexto em que os cálculos são executados, especificado com uma revoscalpy válida. RxComputeContext. Atualmente local e revoscalepy. São suportados contextos de computação RxInSqlServer .
Ensemble
Parâmetros de controlo para a montagem.
Devoluções
Um FastLinear objeto com o modelo treinado.
Note
Este algoritmo é multi-thread e não tenta carregar todo o conjunto de dados na memória.
Referências
Escalar a Ascensão Estocástica de Coordenadas Duplas
Métodos estocásticos de ascensão de coordenadas duplas para minimização regularizada de perdas
Exemplo de classificação binária
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, 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_linear(
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:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 8064.
Auto-tuning parameters: L2 = 2.666837E-05.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 568.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.5810985
Elapsed time: 00:00:00.0084876
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0292334
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
isCase PredictedLabel Score Probability
0 True True 0.990544 0.729195
1 False False -2.307120 0.090535
2 False False -0.608565 0.352387
3 True True 1.028217 0.736570
4 True False -3.913066 0.019588
Exemplo de regressão
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
attitude = get_dataset("attitude")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
attitudedf = attitude.as_df()
data_train, data_test = train_test_split(attitudedf)
model = rx_fast_linear(
formula="rating ~ complaints + privileges + learning + raises + critical + advance",
method="regression",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["rating"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Saída:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 22, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 22, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 22, Read Time: 0, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 68180.
Auto-tuning parameters: L2 = 0.01.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 54.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.1114324
Elapsed time: 00:00:00.0090901
Beginning processing data.
Rows Read: 8, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0330772
Finished writing 8 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
rating Score
0 71.0 72.630440
1 67.0 56.995350
2 67.0 52.958641
3 72.0 80.894539
4 50.0 38.375427
Funções de perda
Conteúdo relacionado
- microsoftml.hinge_loss: Função de perda de dobradiça
- microsoftml.log_loss: Função de perda de log
- microsoftml.smoothed_hinge_loss: Função de perda de dobradiça suavizada
- microsoftml.squared_loss: Função de perda quadrada
- microsoftml.rx_predict: Pontuações usando um modelo de aprendizado de máquina da Microsoft