Dela via


microsoftml.rx_fast_forest: Slumpmässig skog

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

Snabb skog för maskininlärning

Detaljer

Beslutsträd är icke-parametriska modeller som utför en sekvens med enkla tester på indata. Den här beslutsproceduren mappar dem till utdata som finns i träningsdatauppsättningen vars indata liknar den instans som bearbetas. Ett beslut fattas vid varje nod i datastrukturen för binärt träd baserat på ett mått på likhet som mappar varje instans rekursivt genom grenarna i trädet tills rätt lövnod har nåtts och utdatabeslutet returneras.

Beslutsträd har flera fördelar:

  • De är effektiva i både beräkning och minnesanvändning under träning och förutsägelse.

  • De kan representera icke-linjära beslutsgränser.

  • De utför val och klassificering av integrerade funktioner.

  • De är motståndskraftiga i närvaro av bullriga funktioner.

Snabb skogsregression är en slumpmässig skogs- och kvantilregressionsskogsimplementering med hjälp av regressionsträdsläraren i rx_fast_trees. Modellen består av en ensemble av beslutsträd. Varje träd i en beslutsskog matar ut en gaussisk fördelning som förutsägelse. En aggregering utförs över trädensemblen för att hitta en gaussisk fördelning närmast den kombinerade fördelningen för alla träd i modellen.

Den här beslutsskogsklassificeraren består av en ensemble av beslutsträd. I allmänhet ger ensemblemodeller bättre täckning och noggrannhet än enskilda beslutsträd. Varje träd i en beslutsskog matar ut en gaussisk fördelning.

Arguments

formel

Formeln som beskrivs i revoscalepy.rx_formula. Interaktionsvillkor och F() stöds för närvarande inte i microsoftml.

data

Ett datakällobjekt eller en teckensträng som anger en .xdf-fil eller ett dataramobjekt.

method

En teckensträng som anger typ av snabbt träd:

  • "binary" för standardvärdet Fast Tree Binary Classification eller

  • "regression" för snabb trädregression.

num_trees

Anger det totala antalet beslutsträd som ska skapas i ensemblen. Genom att skapa fler beslutsträd kan du eventuellt få bättre täckning, men träningstiden ökar. Standardvärdet är 100.

num_leaves

Det maximala antalet löv (terminalnoder) som kan skapas i valfritt träd. Högre värden kan öka trädstorleken och få bättre precision, men riskerar att överanpassas och kräva längre träningstider. Standardvärdet är 20.

min_split

Minsta antal träningsinstanser som krävs för att bilda ett löv. Det vill: det minimala antalet dokument som tillåts i ett löv i ett regressionsträd, från de underexempelbaserade data. En "delning" innebär att funktioner i varje nivå i trädet (noden) delas slumpmässigt. Standardvärdet är 10.

example_fraction

Bråkdelen av slumpmässigt valda instanser som ska användas för varje träd. Standardvärdet är 0,7.

feature_fraction

Bråkdelen av slumpmässigt valda funktioner som ska användas för varje träd. Standardvärdet är 0,7.

split_fraction

Bråkdelen av slumpmässigt valda funktioner som ska användas vid varje delning. Standardvärdet är 0,7.

num_bins

Maximalt antal distinkta värden (intervall) per funktion. Standardvärdet är 255.

first_use_penalty

Funktionen använder först straffkoefficient. Standardvärdet är 0.

gain_conf_level

Trädanpassning får förtroendekrav (bör vara i intervallet [0,1]). Standardvärdet är 0.

train_threads

Antalet trådar som ska användas i träning. Om Ingen anges bestäms antalet trådar som ska användas internt. Standardvärdet är Ingen.

random_seed

Anger det slumpmässiga fröet. Standardvärdet är Ingen.

ml_transforms

Anger en lista över MicrosoftML-transformeringar som ska utföras på data före träning eller Ingen om inga transformeringar ska utföras. Se featurize_text, categoricaloch categorical_hash, för transformeringar som stöds. Dessa transformeringar utförs efter alla angivna Python-transformeringar. Standardvärdet är Ingen.

ml_transform_vars

Anger en teckenvektor med variabelnamn som ska användas i ml_transforms eller Ingen om ingen ska användas. Standardvärdet är Ingen.

row_selection

STÖDS INTE. Anger raderna (observationer) från datauppsättningen som ska användas av modellen med namnet på en logisk variabel från datauppsättningen (inom citattecken) eller med ett logiskt uttryck med variabler i datauppsättningen. Till exempel:

  • row_selection = "old" använder endast observationer där värdet för variabeln old är True.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) använder endast observationer där variabelns age värde är mellan 20 och 65 och värdet för variabeln logincome är större än 10.

Radmarkeringen utförs efter bearbetning av datatransformeringar (se argumenten transforms eller transform_function). Som med alla uttryck kan definieras utanför funktionsanropet row_selection med hjälp av expression funktionen.

Förvandlar

STÖDS INTE. Ett uttryck för formuläret som representerar den första omgången av variabeltransformeringar. Precis som med alla uttryck kan (eller row_selection) definieras utanför funktionsanropet transforms med hjälp expression av funktionen.

transform_objects

STÖDS INTE. En namngiven lista som innehåller objekt som kan refereras till av transforms, transform_functionoch row_selection.

transform_function

Funktionen för variabeltransformeringen.

transform_variables

En teckenvektor för indatauppsättningsvariabler som behövs för transformeringsfunktionen.

transform_packages

STÖDS INTE. En teckenvektor som anger ytterligare Python-paket (utanför de som anges i RxOptions.get_option("transform_packages")) som ska göras tillgängliga och förinlästa för användning i variabeltransformeringsfunktioner. Till exempel de som uttryckligen definieras i revoscalepy-funktioner via deras transforms argument och transform_function argument eller de som definieras implicit via deras formula eller row_selection argument. Argumentet transform_packages kan också vara Ingen, vilket indikerar att inga paket utanför RxOptions.get_option("transform_packages") är förinstallerade.

transform_environment

STÖDS INTE. En användardefinierad miljö som fungerar som överordnad till alla miljöer som utvecklats internt och används för variabel datatransformering. Om transform_environment = Noneanvänds en ny "hash"-miljö med överordnad revoscalepy.baseenv i stället.

blocks_per_read

Anger antalet block som ska läsas för varje segment av data som läss från datakällan.

report_progress

Ett heltalsvärde som anger rapporteringsnivån för radbearbetningsförloppet:

  • 0: Inga förlopp rapporteras.

  • 1: Antalet bearbetade rader skrivs ut och uppdateras.

  • 2: Rader som bearbetas och tidsinställningar rapporteras.

  • 3: bearbetade rader och alla tidsinställningar rapporteras.

verbose

Ett heltalsvärde som anger önskad mängd utdata. Om 0skrivs inga utförliga utdata ut under beräkningar. Heltalsvärden från 1 för att 4 ge ökande mängder information.

compute_context

Anger kontexten där beräkningar körs, som anges med en giltig RxComputeContext. För närvarande stöds lokala kontexter och RxInSqlServer beräkningskontexter.

Ensemble

Kontrollparametrar för montering.

Retur

Ett FastForest objekt med den tränade modellen.

Anmärkning

Den här algoritmen är flertrådad och försöker alltid läsa in hela datamängden i minnet.

Se även

rx_fast_trees, rx_predict

Referenser

Wikipedia: Slumpmässig skog

Kvantil regressionsskog

Från stubbar till träd till skogar

Exempel på binär klassificering

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

Utdata:

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

Regressionsexempel

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

Utdata:

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