Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usage
microsoftml.rx_fast_linear()
Descrzione
Un istruttore di ottimizzazione per la Stocastic Dual Coordinate Ascent (SDCA) per la classificazione e regressione binaria lineare.
dettagli
rx_fast_linear è un allenatore basato sul metodo Stocastic Dual Coordinate Ascent (SDCA), una tecnica di ottimizzazione all'avanguardia per funzioni obiettivo convesse. L'algoritmo può essere scalato per l'uso su grandi set di dati fuori memoria grazie a un'implementazione semi-assincrona che supporta il multithreading.
La convergenza è sottoscritta dall'imposizione periodica della sincronizzazione tra aggiornamenti primal e dual in un thread separato. Sono inoltre disponibili diverse opzioni di funzioni di perdita. Il metodo SDCA combina alcune delle migliori proprietà e capacità degli algoritmi di regressione logistica e SVM.
Per maggiori informazioni sulla SDCA, consulta le citazioni nella sezione riferimenti.
Gli algoritmi di ottimizzazione tradizionali, come la discesa del gradiente stocastico (SGD), ottimizzano direttamente la funzione di perdita empirica. La SDCA sceglie un approccio diverso che ottimizza invece il problema duale. La funzione di perdita duale è parametrizzata da pesi per esempio. In ogni iterazione, quando viene letto un esempio di addestramento dal set di dati di addestramento, il corrispondente peso dell'esempio viene regolato in modo che la funzione di perdita doppia sia ottimizzata rispetto all'esempio corrente. Non è necessario alcun tasso di apprendimento per determinare la dimensione del passo come richiesto dai vari metodi di discesa a gradiente.
rx_fast_linear Attualmente supporta la classificazione binaria con tre tipi di funzioni di perdita: perdita logaritmica, perdita da cerniera e perdita da cerniera levigata.
La regressione lineare supporta anche la funzione di perdita al quadrato. La regolarizzazione elastica può essere specificata dai l2_weight parametri e.l1_weight Si noti che ha l2_weight un effetto sul tasso di convergenza. In generale, più grande è , l2_weightpiù velocemente converge SDCA.
Si noti che rx_fast_linear è un algoritmo di ottimizzazione stocastica e di streaming. I risultati dipendono dall'ordine dei dati di addestramento. Per risultati riproducibili, si raccomanda di impostare shuffle a False e train_threads a 1.
Arguments
formula
La formula descritta in revoscalepy.rx_formula.
Termini di interazione e F() non sono attualmente supportati in microsoftml.
Dati
Oggetto origine dati o stringa di caratteri che specifica un file con estensione xdf o un oggetto frame di dati.
method
Specifica il tipo di modello con una stringa di caratteri: "binary" per la classificazione binaria predefinita o "regression" per la regressione lineare.
loss_function
Specifica la funzione di perdita empirica da ottimizzare. Per la classificazione binaria, sono disponibili le seguenti scelte:
log_loss: La perdita di log. Si tratta dell'impostazione predefinita.hinge_loss: La perdita della cerniera SVM. Il suo parametro rappresenta la dimensione del margine.smooth_hinge_loss: La perdita della cerniera levigata. Il suo parametro rappresenta la costante di levigamento.
Per la regressione lineare, attualmente è supportata la perdita squared_loss al quadrato. Quando questo parametro è impostato su Nessuno, il suo valore predefinito dipende dal tipo di apprendimento:
log_lossper la classificazione binaria.squared_lossper la regressione lineare.
Il seguente esempio cambia il loss_function in hinge_loss: rx_fast_linear(..., loss_function=hinge_loss()).
l1_weight
Specifica il peso di regolarizzazione L1. Il valore deve essere o non negativo o Nessuno. Se None viene specificato, il valore effettivo viene calcolato automaticamente in base al set di dati. Nessuno è il valore predefinito.
l2_weight
Specifica il peso di regolarizzazione L2. Il valore deve essere o non negativo o Nessuno. Se None viene specificato, il valore effettivo viene calcolato automaticamente in base al set di dati. Nessuno è il valore predefinito.
train_threads
Specifica quanti thread concorrenti possono essere utilizzati per eseguire l'algoritmo. Quando questo parametro è impostato su Nessuno, il numero di thread utilizzati viene determinato in base al numero di processori logici disponibili per il processo e alla scarsità dei dati. Impostalo per 1 eseguire l'algoritmo in un singolo thread.
convergence_tolerance
Specifica la soglia di tolleranza utilizzata come criterio di convergenza. Deve essere tra 0 e 1. Il valore predefinito è 0.1. L'algoritmo è considerato convergente se il gap di dualità relativo, che è il rapporto tra il gap di dualità e la perdita primale, è inferiore alla tolleranza di convergenza specificata.
max_iterations
Specifica un limite superiore al numero di iterazioni di addestramento. Questo parametro deve essere positivo o Nullo. Se None viene specificato, il valore effettivo viene calcolato automaticamente in base al set di dati. Ogni iterazione richiede un passaggio completo sui dati di addestramento. L'addestramento termina dopo che il numero totale di iterazioni raggiunge il limite superiore specificato o quando la funzione di perdita converge, a seconda di quale caso accada prima.
mescolare
Specifica se mescolare i dati di addestramento. Impostato True per mescolare i dati; False non per mescolare. Il valore predefinito è True. SDCA è un algoritmo di ottimizzazione stocastica. Se l'alletamento è attivato, i dati di addestramento vengono mescolati in ogni iterazione.
check_frequency
Il numero di iterazioni dopo i quali la funzione di perdita viene calcolata e controllata per determinare se è convergente. Il valore specificato deve essere un intero positivo o Nessuno. Se nessuno, il valore effettivo viene calcolato automaticamente in base al set di dati. Altrimenti, ad esempio, se checkFrequency = 5 è specificato, allora la funzione di perdita viene calcolata e la convergenza viene controllata ogni 5 iterazioni. Il calcolo della funzione di perdita richiede un passaggio completo separato sui dati di addestramento.
normalizzare
Specifica il tipo di normalizzazione automatica utilizzata:
"Auto": se è necessaria la normalizzazione, viene eseguita automaticamente. Questa è la scelta predefinita."No": non viene eseguita alcuna normalizzazione."Yes": viene eseguita la normalizzazione."Warn": se è necessaria la normalizzazione, viene visualizzato un messaggio di avviso, ma la normalizzazione non viene eseguita.
La normalizzazione ridimensiona intervalli di dati diversi a una scala standard. La scalabilità delle funzionalità garantisce che le distanze tra i punti dati siano proporzionali e consentano a vari metodi di ottimizzazione, ad esempio la discesa del gradiente, di convergere molto più velocemente. Se viene eseguita la normalizzazione, viene usato un MaxMin normalizzatore. Normalizza i valori in un intervallo [a, b] dove -1 <= a <= 0 e 0 <= b <= 1b - a = 1 . Questo normalizzatore mantiene la spazità eseguendo il mapping di zero a zero.
ml_transforms
Specifica un elenco di trasformazioni MicrosoftML da eseguire sui dati prima del training o Nessuna se non devono essere eseguite trasformazioni. Per le trasformazioni supportate, vedere featurize_text, categoricale categorical_hash.
Queste trasformazioni vengono eseguite dopo le trasformazioni Python specificate.
Il valore predefinito è None.
ml_transform_vars
Specifica un vettore di caratteri di nomi di ml_transforms da utilizzare in o Nessuno se non è necessario usare nessuno.
Il valore predefinito è None.
row_selection
NON SUPPORTATO. Specifica le righe (osservazioni) del set di dati che devono essere usate dal modello con il nome di una variabile logica del set di dati (tra virgolette) o con un'espressione logica usando variabili nel set di dati. Per esempio:
row_selection = "old"userà solo osservazioni in cui il valore della variabileoldèTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)usa solo osservazioni in cui il valore dellaagevariabile è compreso tra 20 e 65 e il valore dellalogincomevariabile è maggiore di 10.
La selezione delle righe viene eseguita dopo l'elaborazione di tutte le trasformazioni dei dati (vedere gli transforms argomenti o transform_function). Come per tutte le espressioni, row_selection può essere definito all'esterno della chiamata di funzione usando la expression funzione .
Trasforma
NON SUPPORTATO. Espressione del form che rappresenta il primo round delle trasformazioni delle variabili. Come per tutte le espressioni, transforms (o row_selection) può essere definito all'esterno della chiamata di funzione usando la expression funzione .
transform_objects
NON SUPPORTATO. Elenco denominato che contiene oggetti a cui è possibile fare riferimento da transforms, transform_functione row_selection.
transform_function
Funzione di trasformazione della variabile.
transform_variables
Vettore di caratteri delle variabili del set di dati di input necessario per la funzione di trasformazione.
transform_packages
NON SUPPORTATO. Vettore di caratteri che specifica pacchetti Python aggiuntivi (al di fuori di quelli specificati in RxOptions.get_option("transform_packages")) da rendere disponibili e precaricati per l'uso nelle funzioni di trasformazione delle variabili.
Ad esempio, quelli definiti in modo esplicito nelle funzioni revoscalepy tramite i relativi transforms argomenti e transform_function o quelli definiti in modo implicito tramite i rispettivi formula argomenti o row_selection . L'argomento transform_packages può anche essere Nessuno, a indicare che non vengono precaricati pacchetti esterni RxOptions.get_option("transform_packages") .
transform_environment
NON SUPPORTATO. Ambiente definito dall'utente da usare come padre per tutti gli ambienti sviluppati internamente e usati per la trasformazione dei dati delle variabili.
Se transform_environment = None, viene invece usato un nuovo ambiente "hash" con revoscalepy.baseenv padre.
blocks_per_read
Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.
report_progress
Valore intero che specifica il livello di creazione di report sullo stato di elaborazione delle righe:
0: non viene segnalato alcun avanzamento.1: il numero di righe elaborate viene stampato e aggiornato.2: vengono segnalate le righe elaborate e le tempistiche.3: vengono segnalate le righe elaborate e tutte le tempistiche.
verbose
Valore intero che specifica la quantità di output desiderata.
Se 0, non viene stampato alcun output dettagliato durante i calcoli. Valori interi da 1 per 4 fornire quantità crescenti di informazioni.
compute_context
Imposta il contesto in cui vengono eseguiti i calcoli, specificati con una revoscalepy valida. RxComputeContext. Attualmente locale e revoscalepy. Sono supportati i contesti di calcolo RxInSqlServer.
Ensemble
Parametri di controllo per l'incenso.
Returns
Oggetto FastLinear con il modello sottoposto a training.
Note
Questo algoritmo è multithread e non tenterà di caricare l'intero dataset in memoria.
References
Scalare l'ascesa stocastica a doppia coordinata
Metodi stocastici di ascesa a doppia coordinata per la minimizzazione regolarizzata della perdita
Esempio di classificazione binaria
'''
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))
Output:
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
Esempio di regressione
'''
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))
Output:
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
Funzioni di perdita
microsoftml.log_loss: funzione di perdita del log microsoftml.smoothed_hinge_loss: funzione di perdita della cerniera smussata
Contenuti correlati
- microsoftml.hinge_loss: funzione di perdita della cerniera
microsoftml.log_loss: funzione di perdita del log - microsoftml.smoothed_hinge_loss: funzione di perdita della cerniera smussata
- microsoftml.squared_loss: funzione di perdita quadrata
- microsoftml.rx_predict: punteggi con un modello di Machine Learning Microsoft