Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Usage
microsoftml.rx_logistic_regression(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'multiClass'] = 'binary', l2_weight: float = 1,
l1_weight: float = 1, opt_tol: float = 1e-07,
memory_size: int = 20, init_wts_diameter: float = 0,
max_iterations: int = 2147483647,
show_training_stats: bool = False, sgd_init_tol: float = 0,
train_threads: int = None, dense_optimizer: bool = False,
normalize: ['No', 'Warn', 'Auto', 'Yes'] = 'Auto',
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
Machine Learning Logistics Regression
Einzelheiten
Logistics Regression ist eine Klassifizierungsmethode, die verwendet wird, um den Wert einer kategorisierten abhängigen Variablen von ihrer Beziehung zu einer oder mehreren unabhängigen Variablen vorherzusagen, die angenommen werden, dass sie eine logistische Verteilung haben. Wenn die abhängige Variable nur über zwei mögliche Werte (Erfolg/Fehler) verfügt, ist die logistische Regression binär. Wenn die abhängige Variable mehr als zwei mögliche Werte aufweist (Bluttyp gegebene Diagnosetestergebnisse), ist die logistische Regression multinomial.
Die optimierungstechnik ist rx_logistic_regression die begrenzte Speicher-Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Sowohl die L-BFGS- als auch die regulären BFGS-Algorithmen verwenden quasi-Newtonsche Methoden, um die rechenintensive Hessische Matrix in der Formel zu schätzen, die von Newtons Methode zum Berechnen von Schritten verwendet wird. Die L-BFGS-Annäherung verwendet jedoch nur einen begrenzten Arbeitsspeicher, um die nächste Schrittrichtung zu berechnen, sodass sie besonders für Probleme mit einer großen Anzahl von Variablen geeignet ist. Der memory_size Parameter gibt die Anzahl der vergangenen Positionen und Farbverläufe an, die für die Verwendung in der Berechnung des nächsten Schritts gespeichert werden sollen.
Dieser Lernenden kann eine flexible Netznormalisierung verwenden: eine lineare Kombination aus L1 (Lasso) und L2 (Ridge) Regularisierungen. Regularisierung ist eine Methode, die ein unaufgeregtes Problem durch Das Festlegen von Einschränkungen, die Informationen zur Ergänzung der Daten liefern, darstellen kann und die die Überlastung durch Strafen von Modellen mit extremen Koeffizientenwerten verhindert. Dies kann die Generalisierung des modells verbessern, indem die optimale Komplexität im Bias-Varianz-Kompromiss ausgewählt wird. Die Regularisierung funktioniert durch Hinzufügen der Strafe, die mit Koeffizientenwerten verknüpft ist, zum Fehler der Hypothese. Ein genaues Modell mit extremen Koeffizientenwerten würde mehr bestraft, aber ein weniger genaues Modell mit konservativeren Werten würde weniger bestraft. L1- und L2-Regularisierung haben unterschiedliche Auswirkungen und Verwendungen, die sich in bestimmten Punkten ergänzen.
l1_weight: kann beim Arbeiten mit hochdimensionalen Daten auf sparse Modelle angewendet werden. Es zieht kleine Gewichte zugeordnete Features, die relativ unwichtig in Richtung 0 sind.l2_weight: ist für Daten vorzuziehen, die nicht gering sind. Es zieht große Gewichtungen in Richtung Null.
Das Hinzufügen der Gratstrafe zur Regularisierung überwindet einige der Lasso-Einschränkungen. Sie kann beispielsweise die Prädiktorgenauigkeit verbessern, wenn die Anzahl der Prädiktoren größer als die Stichprobengröße ist.
Wenn x = l1_weight und y = l2_weight, ax + by = c definiert die lineare Spanne der Regularisierungsbegriffe. Die Standardwerte von x und y sind beide 1. Eine aggressive Regularisierung kann die Vorhersagekapazität beschädigen, indem wichtige Variablen aus dem Modell ausgeschlossen werden. Daher ist die Auswahl der optimalen Werte für die Regularisierungsparameter für die Leistung des logistischen Regressionsmodells wichtig.
Arguments
Formel
Die Formel, wie in revoscalepy.rx_formula Interaktionsbedingungen beschrieben und F() wird derzeit in Microsoftml nicht unterstützt.
Daten
Ein Datenquellenobjekt oder eine Zeichenfolge, die eine XDF-Datei oder ein Datenframeobjekt angibt.
method
Eine Zeichenfolge, die den Typ der Logistischen Regression angibt: "binary" für die standardmäßige binäre Klassifikationsregression oder "multiClass" für die multinomiale logistische Regression.
l2_weight
Das L2-Normalisierungsgewicht. Der Wert muss größer oder gleich 0 sein, und der Standardwert ist auf 1.
l1_weight
Das L1-Normalisierungsgewicht. Der Wert muss größer oder gleich 0 sein, und der Standardwert ist auf 1.
opt_tol
Schwellenwert für Optimiererkonvergenz. Wenn die Verbesserung zwischen Iterationen kleiner als der Schwellenwert ist, stoppt der Algorithmus und gibt das aktuelle Modell zurück. Kleinere Werte sind langsamer, aber genauer.
Der Standardwert ist 1e-07.
memory_size
Die Speichergröße für L-BFGS, die die Anzahl der vergangenen Positionen und Farbverläufe angibt, die für die Berechnung des nächsten Schritts gespeichert werden sollen. Dieser Optimierungsparameter begrenzt die Menge des Arbeitsspeichers, der zum Berechnen der Größe und Richtung des nächsten Schritts verwendet wird. Wenn Sie weniger Arbeitsspeicher angeben, ist das Training schneller, aber weniger genau. Muss größer oder gleich 1 sein, und der Standardwert ist 20.
max_iterations
Legt die maximale Anzahl von Iterationen fest. Nach dieser Anzahl von Schritten stoppt der Algorithmus auch dann, wenn er keine Konvergenzkriterien erfüllt hat.
show_training_stats
Geben Sie True an, dass die Statistiken zu Schulungsdaten und das trainierte Modell angezeigt werden sollen; andernfalls False. Der Standardwert ist False. Weitere Informationen zu Modellstatistiken finden Sie unter summary.ml_model().
sgd_init_tol
Wird auf eine Zahl festgelegt, die größer als 0 ist, um stochastische Farbverlaufsabstiege (SGD) zu verwenden, um die anfänglichen Parameter zu finden. Ein Wertsatz ungleich Null gibt die Toleranz an, die SGD verwendet, um die Konvergenz zu bestimmen.
Der Standardwert gibt 0 an, dass SGD nicht verwendet wird.
init_wts_diameter
Legt den Anfangsgewichtsdurchmesser fest, der den Bereich angibt, aus dem Werte für die Anfangsgewichte gezeichnet werden. Diese Gewichtungen werden zufällig innerhalb dieses Bereichs initialisiert. Wenn beispielsweise der Durchmesser angegeben dist, werden die Gewichte einheitlich zwischen -d/2 und d/2verteilt. Der Standardwert ist 0, der angibt, dass alle Gewichtungen initialisiert 0werden.
train_threads
Die Anzahl der Threads, die beim Trainieren des Modells verwendet werden sollen.
Dies sollte auf die Anzahl der Kerne auf dem Computer festgelegt werden. Beachten Sie, dass L-BFGS-Multithreading versucht, Datasets in den Arbeitsspeicher zu laden. Bei Problemen mit out-of-memory,set train_threads to 1 turn off multithreading. Wenn keines der zu verwendenden Threads intern bestimmt wird. Der Standardwert ist None.
dense_optimizer
Wenn True, erzwingt die Verdichtung der internen Optimierungsvektoren. Wenn False, aktiviert die Logistik Regressionsoptimierer verwenden sparsame oder dichte interne Zustände, wie sie geeignet findet.
Die Einstellung denseOptimizer erfordert, dass True der interne Optimierer einen dichten internen Zustand verwendet, der dazu beitragen kann, die Belastung des Garbage Collector für einige Arten größerer Probleme zu verringern.
Normalisieren
Gibt den Typ der verwendeten automatischen Normalisierung an:
"Auto": Wenn die Normalisierung erforderlich ist, wird sie automatisch ausgeführt. Dies ist die Standardauswahl."No": Es wird keine Normalisierung durchgeführt."Yes": Normalisierung wird durchgeführt."Warn": Wenn die Normalisierung erforderlich ist, wird eine Warnmeldung angezeigt, die Normalisierung wird jedoch nicht ausgeführt.
Durch die Normalisierung werden unterschiedliche Datenbereiche auf eine Standardskala skaliert. Die Featureskalierung stellt die Abstände zwischen Datenpunkten proportional dar und ermöglicht verschiedene Optimierungsmethoden wie Farbverlaufsabstieg viel schneller zu konvergen. Wenn die Normalisierung durchgeführt wird, wird ein MaxMin Normalisierer verwendet. Sie normalisiert Werte in einem Intervall [a, b] wobei -1 <= a <= 0 und 0 <= b <= 1 .b - a = 1 Dieser Normalisierer behält Sparsamkeit bei, indem null zu Null zugeordnet wird.
ml_transforms
Gibt eine Liste der MicrosoftML-Transformationen an, die vor dem Training oder none für die Daten ausgeführt werden sollen, wenn keine Transformationen ausgeführt werden sollen. Siehe featurize_text, categoricalund categorical_hash, für Transformationen, die unterstützt werden.
Diese Transformationen werden nach allen angegebenen Python-Transformationen ausgeführt.
Der Standardwert ist None.
ml_transform_vars
Gibt einen Zeichenvektor von Variablennamen an, die verwendet ml_transforms werden sollen, oder "None ", wenn keine verwendet werden soll.
Der Standardwert ist None.
row_selection
NICHT UNTERSTÜTZT. Gibt die Zeilen (Beobachtungen) aus dem Dataset an, die vom Modell mit dem Namen einer logischen Variablen aus dem Dataset (in Anführungszeichen) oder mit einem logischen Ausdruck mithilfe von Variablen im Dataset verwendet werden sollen. Beispiel:
row_selection = "old"verwendet nur Beobachtungen, in denen der Wert der VariablenoldlautetTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)verwendet nur Beobachtungen, in denen der Wert derageVariablen zwischen 20 und 65 liegt und der Wert derlogincomeVariablen größer als 10 ist.
Die Zeilenauswahl erfolgt nach der Verarbeitung von Datentransformationen (siehe die Argumente transforms oder transform_function). Wie bei allen Ausdrücken kann außerhalb des Funktionsaufrufs row_selection mithilfe der expression Funktion definiert werden.
Verwandelt
NICHT UNTERSTÜTZT. Ein Ausdruck des Formulars, das die erste Runde von Variablentransformationen darstellt. Wie bei allen Ausdrücken kann (oder row_selection) außerhalb des Funktionsaufrufs transforms mithilfe der expression Funktion definiert werden.
transform_objects
NICHT UNTERSTÜTZT. Eine benannte Liste, die Objekte enthält, auf die von transforms, und transform_function.row_selection
transform_function
Die Variable Transformationsfunktion.
transform_variables
Ein Zeichenvektor von Eingabedatensatzvariablen, die für die Transformationsfunktion erforderlich sind.
transform_packages
NICHT UNTERSTÜTZT. Ein Zeichenvektor, der zusätzliche Python-Pakete angibt (außerhalb der in ) RxOptions.get_option("transform_packages")zur Verfügung gestellt und für die Verwendung in Variablentransformationsfunktionen vorab geladen werden soll.
Beispielsweise werden diejenigen, die explizit in Revoscalepy-Funktionen über ihre transforms und transform_function Argumente oder implizit über ihre formula Argumente row_selection definiert wurden, definiert. Das transform_packages Argument kann auch "None" sein, das angibt, dass keine Pakete vorgeladen RxOptions.get_option("transform_packages") werden.
transform_environment
NICHT UNTERSTÜTZT. Eine benutzerdefinierte Umgebung, die als übergeordnetes Element für alle Umgebungen dient, die intern entwickelt und für die Variable Datentransformation verwendet werden.
Wenn transform_environment = Nonestattdessen eine neue "Hash"-Umgebung mit übergeordnetem revoscalepy.baseenv verwendet wird.
blocks_per_read
Gibt die Anzahl der zu lesenden Blöcke für jeden Datenabschnitt an, der aus der Datenquelle gelesen werden soll.
report_progress
Ein ganzzahliger Wert, der die Berichtsebene für den Fortschritt der Zeilenverarbeitung angibt:
0: Es wird kein Fortschritt gemeldet.1: Die Anzahl der verarbeiteten Zeilen wird gedruckt und aktualisiert.2: Verarbeitete Zeilen und Anzeigedauern werden gemeldet.3: Verarbeitete Zeilen und alle Anzeigedauern werden gemeldet.
verbose
Ein ganzzahliger Wert, der die gewünschte Ausgabemenge angibt.
Wird 0bei Berechnungen keine ausführliche Ausgabe gedruckt. Ganzzahlige Werte von 1 bis hin zu 4 steigenden Informationsmengen.
compute_context
Legt den Kontext fest, in dem Berechnungen ausgeführt werden, die mit einem gültigen Revoscalepy angegeben werden. RxComputeContext. Derzeit lokal und revoscalepy. RxInSqlServer-Computekontexte werden unterstützt.
Ensemble
Steuerungsparameter für die Ensembling.
Rückkehr
Ein LogisticRegression Objekt mit dem trainierten Modell.
Hinweis
Dieser Algorithmus versucht, das gesamte Dataset in den Arbeitsspeicher zu laden, wenn train_threads > 1 (Multithreading).
Siehe auch
References
Wikipedia: Logistische Regression
Skalierbare Schulung von L1-Regularized Log-Linear Modellen
Testlauf – L1- und L2-Regularisierung für maschinelles Lernen
Beispiel für binäre Klassifizierung
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, 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)
model = rx_logistic_regression(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
print(model.coef_)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(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))
Ausgabe:
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.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 6
improvement criterion: Mean Improvement
L1 regularization selected 5 of 6 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0646405
Elapsed time: 00:00:00.0083991
OrderedDict([('(Bias)', -1.2366217374801636), ('spontaneous', 1.9391206502914429), ('induced', 0.7497404217720032), ('parity', -0.31517016887664795), ('age', -3.162723260174971e-06)])
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0287290
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 -1.341681 0.207234
1 True True 0.597440 0.645070
2 False True 0.544912 0.632954
3 False False -1.289152 0.215996
4 False False -1.019339 0.265156
Beispiel für eine MultiClass-Klassifizierung
'''
MultiClass Classification
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
iris = get_dataset("iris")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
irisdf = iris.as_df()
irisdf["Species"] = irisdf["Species"].astype("category")
data_train, data_test, y_train, y_test = train_test_split(irisdf, irisdf.Species)
model = rx_logistic_regression(
formula=" Species ~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width ",
method="multiClass",
data=data_train)
print(model.coef_)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["Species", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Ausgabe:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 15
improvement criterion: Mean Improvement
L1 regularization selected 9 of 15 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0493224
Elapsed time: 00:00:00.0080558
OrderedDict([('setosa+(Bias)', 2.074636697769165), ('versicolor+(Bias)', 0.4899507164955139), ('virginica+(Bias)', -2.564580202102661), ('setosa+Petal_Width', -2.8389241695404053), ('setosa+Petal_Length', -2.4824044704437256), ('setosa+Sepal_Width', 0.274869441986084), ('versicolor+Sepal_Width', -0.2645561397075653), ('virginica+Petal_Width', 2.6924400329589844), ('virginica+Petal_Length', 1.5976412296295166)])
Beginning processing data.
Rows Read: 38, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0331861
Finished writing 38 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds
Species Score.0 Score.1 Score.2
0 virginica 0.044230 0.364927 0.590843
1 setosa 0.767412 0.210586 0.022002
2 setosa 0.756523 0.221933 0.021543
3 setosa 0.767652 0.211191 0.021157
4 versicolor 0.116369 0.498615 0.385016