Freigeben über


microsoftml.rx_fast_forest: Zufällige Gesamtstruktur

Usage

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)

Description

Schnelle Gesamtstruktur für maschinelles Lernen

Einzelheiten

Entscheidungsstrukturen sind nicht parametrische Modelle, die eine Abfolge einfacher Tests auf Eingaben durchführen. Diese Entscheidungsprozedur ordnet sie Ausgaben im Schulungsdatensatz zu, deren Eingaben der verarbeiteten Instanz ähnlich waren. Bei jedem Knoten der Binären Struktur wird basierend auf einem Maß der Ähnlichkeit eine Entscheidung getroffen, die jede Instanz rekursiv durch die Verzweigungen der Struktur ordnet, bis der entsprechende Blattknoten erreicht ist, und die zurückgegebene Ausgabeentscheidung.

Entscheidungsbäume haben mehrere Vorteile:

  • Sie sind sowohl bei der Berechnung als auch bei der Speicherauslastung während der Schulung und Vorhersage effizient.

  • Sie können nicht lineare Entscheidungsgrenzen darstellen.

  • Sie führen integrierte Featureauswahl und Klassifizierung durch.

  • Sie sind robust in Anwesenheit von lauten Features.

Schnelle Gesamtstrukturregression ist eine zufällige Gesamtstruktur- und quantile Regressions-Gesamtstrukturimplementierung mithilfe des Regressionsbaumlerners in rx_fast_trees. Das Modell besteht aus einem Ensemble von Entscheidungsbäumen. Jede Struktur in einer Entscheidungsstruktur gibt eine gaussische Verteilung per Vorhersage aus. Eine Aggregation erfolgt über das Ensemble von Bäumen, um eine gaussische Verteilung zu finden, die der kombinierten Verteilung für alle Bäume im Modell am nächsten kommt.

Dieser Entscheidungs-Gesamtstrukturklassifizierer besteht aus einem Ensemble von Entscheidungsstrukturen. Im Allgemeinen bieten Ensemblemodelle eine bessere Abdeckung und Genauigkeit als einzelne Entscheidungsstrukturen. Jede Struktur in einer Entscheidungsstruktur gibt eine gaussische Verteilung aus.

Arguments

Formel

Die Formel, wie in revoscalepy.rx_formula beschrieben. Interaktionsausdrücke und F() werden 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 schnellen Struktur angibt:

  • "binary" für die standardmäßige binäre Klassifizierung der fasten Struktur oder

  • "regression" für schnelle Strukturregression.

num_trees

Gibt die Gesamtanzahl der Entscheidungsstrukturen an, die im Ensemble erstellt werden sollen. Durch die Erstellung weiterer Entscheidungsstrukturen können Sie möglicherweise eine bessere Abdeckung erhalten, aber die Schulungszeit erhöht sich. Der Standardwert ist 100.

num_leaves

Die maximale Anzahl von Blättern (Terminalknoten), die in einer beliebigen Struktur erstellt werden können. Höhere Werte erhöhen möglicherweise die Größe des Baumes und erhalten eine bessere Präzision, aber riskieren, dass sie überfällig sind und längere Trainingszeiten erfordern. Der Standardwert lautet 20.

min_split

Mindestanzahl an Schulungsinstanzen, die zum Bilden eines Blatts erforderlich sind. Das heißt, die minimale Anzahl von Dokumenten, die in einem Blatt einer Regressionsstruktur zulässig sind, aus den untersampulierten Daten. Eine "Aufteilung" bedeutet, dass Features auf jeder Ebene der Struktur (Knoten) zufällig geteilt werden. Der Standardwert ist 10.

example_fraction

Der Anteil der zufällig ausgewählten Instanzen, die für jede Struktur verwendet werden sollen. Der Standardwert ist 0,7.

feature_fraction

Der Anteil der zufällig ausgewählten Features, die für jede Struktur verwendet werden sollen. Der Standardwert ist 0,7.

split_fraction

Der Anteil der zufällig ausgewählten Features, die für jede Aufteilung verwendet werden sollen. Der Standardwert ist 0,7.

num_bins

Maximale Anzahl unterschiedlicher Werte (Bins) pro Feature. Der Standardwert ist 255.

first_use_penalty

Das Feature verwendet zuerst den Strafkoeffizient. Der Standardwert ist 0.

gain_conf_level

Anforderungen für die Strukturanpassung an Konfidenz (sollte sich im Bereich [0,1]befinden). Der Standardwert ist 0.

train_threads

Die Anzahl der Threads, die in der Schulung verwendet werden sollen. Wenn "None" angegeben ist, wird die Anzahl der zu verwendenden Threads intern bestimmt. Der Standardwert ist None.

random_seed

Gibt den zufälligen Ausgangswert an. Der Standardwert ist None.

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 Variablen old lautet True.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) verwendet nur Beobachtungen, in denen der Wert der age Variablen zwischen 20 und 65 liegt und der Wert der logincome Variablen 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, angegeben mit einem gültigen RxComputeContext. Derzeit werden lokale Kontexte und RxInSqlServer Computekontexte unterstützt.

Ensemble

Steuerungsparameter für die Ensembling.

Rückkehr

Ein FastForest Objekt mit dem trainierten Modell.

Hinweis

Dieser Algorithmus ist multithreaded und versucht immer, das gesamte Dataset in den Arbeitsspeicher zu laden.

Siehe auch

rx_fast_trees, rx_predict

References

Wikipedia: Zufällige Gesamtstruktur

Quantile Regressions-Gesamtstruktur

Von Stumps zu Bäumen bis zu Wäldern

Beispiel für binäre Klassifizierung

'''
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))

Ausgabe:

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

Regressionsbeispiel

'''
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)

Ausgabe:

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