Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Usage
microsoftml.rx_fast_trees(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'regression'] = 'binary', num_trees: int = 100,
num_leaves: int = 20, learning_rate: float = 0.2,
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, unbalanced_sets: bool = False,
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
Snelle boomstructuur voor Machine Learning
Bijzonderheden
rx_fast_trees is een implementatie van FastRank. FastRank is een efficiënte implementatie van het MART-gradiëntverhogingsalgoritmen. Gradiëntverhoging is een machine learning-techniek voor regressieproblemen. Elke regressiestructuur wordt stapsgewijs gebouwd met behulp van een vooraf gedefinieerde verliesfunctie om de fout voor elke stap te meten en in de volgende stap te corrigeren. Dit voorspellingsmodel is dus eigenlijk een ensemble van zwakkere voorspellingsmodellen. Bij regressieproblemen bouwt het stimuleren van een reeks dergelijke bomen stapsgewijs op en selecteert vervolgens de optimale boom met behulp van een willekeurige differentiabele verliesfunctie.
MART leert een ensemble van regressiebomen, een beslissingsstructuur met scalaire waarden in de bladeren. Een beslissingsstructuur (of regressiestructuur) is een binair stroomdiagram, waarbij op elk binnenknooppunt wordt bepaald welke van de twee onderliggende knooppunten moet worden voortgezet op basis van een van de functiewaarden uit de invoer. Op elk leaf-knooppunt wordt een waarde geretourneerd. In de binnenste knooppunten is de beslissing gebaseerd op de test "x <= v", waarbij x de waarde van de functie in het invoervoorbeeld is en v een van de mogelijke waarden van deze functie is. De functies die door een regressiestructuur kunnen worden geproduceerd, zijn alle stukgewijze constante functies.
Het ensemble van bomen wordt geproduceerd door computing, in elke stap, een regressiestructuur die de gradiënt van de verliesfunctie benadert en deze toevoegt aan de vorige boom met coëfficiënten die het verlies van de nieuwe boom minimaliseren. De uitvoer van het ensemble dat door MART op een bepaald exemplaar wordt geproduceerd, is de som van de boomuitvoer.
In het geval van een binair classificatieprobleem wordt de uitvoer geconverteerd naar een waarschijnlijkheid met behulp van een vorm van kalibratie.
In het geval van een regressieprobleem is de uitvoer de voorspelde waarde van de functie.
In het geval van een classificatieprobleem worden de exemplaren gerangschikt op basis van de uitvoerwaarde van het ensemble.
Als method dit is ingesteld "regression"op, wordt een regressieversie van FastTree gebruikt. Indien ingesteld op "ranking", wordt een classificatieversie van FastTree gebruikt. In het classificatiescenario moeten de exemplaren worden gerangschikt op basis van de uitvoer van het boomensemble. Het enige verschil in de instellingen van deze versies is in de kalibratie-instellingen, die alleen nodig zijn voor classificatie.
Arguments
formule
De formule zoals beschreven in revoscalepy.rx_formula.
Interactietermen en F() worden momenteel niet ondersteund in microsoftml.
gegevens
Een gegevensbronobject of een tekenreeks die een .xdf-bestand of een gegevensframeobject opgeeft.
method
Een tekenreeks die het type Snelle boom aangeeft: "binary" voor de standaard binaire classificatie van snelle boomstructuur of "regression" voor snelle boomregressie.
num_trees
Hiermee geeft u het totale aantal beslissingsstructuren op dat in het ensemble moet worden gemaakt. Door meer beslissingsstructuren te creëren, kunt u mogelijk betere dekking krijgen, maar de trainingstijd neemt toe. De standaardwaarde is 100.
num_leaves
Het maximum aantal bladeren (terminalknooppunten) dat in elke boomstructuur kan worden gemaakt. Hogere waarden vergroten mogelijk de grootte van de boom en krijgen betere precisie, maar risico overfitting en vereisen langere trainingstijden. De standaardwaarde is 20.
leerpercentage
Bepaalt de grootte van de stap in de richting van de kleurovergang in elke stap van het leerproces. Dit bepaalt hoe snel of traag de cursist convergeert op de optimale oplossing. Als de stapgrootte te groot is, kunt u de optimale oplossing overslaan. Als de stapgrootte te klein is, duurt het langer om de training te convergeren naar de beste oplossing.
min_split
Minimaal aantal trainingsexemplaren dat nodig is om een blad te vormen. Dat wil gezegd: het minimale aantal documenten dat is toegestaan in een blad van een regressiestructuur, uit de subgemonsterde gegevens. Een 'split' betekent dat functies in elk niveau van de structuur (knooppunt) willekeurig worden verdeeld. De standaardwaarde is 10. Alleen het aantal exemplaren wordt geteld, zelfs als exemplaren worden gewogen.
example_fraction
Het deel van willekeurig gekozen exemplaren dat voor elke structuur moet worden gebruikt. De standaardwaarde is 0,7.
feature_fraction
De fractie van willekeurig gekozen functies die voor elke structuur moeten worden gebruikt. De standaardwaarde is 1.
split_fraction
De fractie van willekeurig gekozen functies die voor elke splitsing moeten worden gebruikt. De standaardwaarde is 1.
num_bins
Maximum aantal afzonderlijke waarden (bins) per functie. Als de functie minder waarden heeft dan het aangegeven getal, wordt elke waarde in een eigen bin geplaatst. Als er meer waarden zijn, maakt numBins het algoritme bins.
first_use_penalty
De functie gebruikt eerst een boetecoëfficiënt. Dit is een vorm van regularisatie waardoor een boete wordt opgelegd voor het gebruik van een nieuwe functie bij het maken van de structuur. Verhoog deze waarde om bomen te maken die niet veel functies gebruiken. De standaardwaarde is 0.
gain_conf_level
Boomfitting krijgt betrouwbaarheidsvereiste (moet zich in het bereik [0,1)) bevinden). De standaardwaarde is 0.
unbalanced_sets
Als Truederivaten die zijn geoptimaliseerd voor niet-gebalanceerde sets worden gebruikt. Alleen van toepassing indien type gelijk aan "binary".
De standaardwaarde is False.
train_threads
Het aantal threads dat in de training moet worden gebruikt. De standaardwaarde is 8.
random_seed
Hiermee geeft u het willekeurige zaad. De standaardwaarde is None.
ml_transforms
Hiermee geeft u een lijst op met MicrosoftML-transformaties die moeten worden uitgevoerd op de gegevens vóór de training of Geen als er geen transformaties moeten worden uitgevoerd. Zie featurize_text, categoricalen categorical_hash, voor transformaties die worden ondersteund.
Deze transformaties worden uitgevoerd na opgegeven Python-transformaties.
De standaardwaarde is None.
ml_transform_vars
Hiermee geeft u een tekenvector op van namen van variabelen die moeten worden gebruikt in ml_transforms of Geen als er geen moet worden gebruikt.
De standaardwaarde is None.
row_selection
NIET ONDERSTEUND. Hiermee geeft u de rijen (waarnemingen) op uit de gegevensset die door het model moeten worden gebruikt met de naam van een logische variabele uit de gegevensset (tussen aanhalingstekens) of met een logische expressie met behulp van variabelen in de gegevensset. Voorbeeld:
row_selection = "old"gebruikt alleen waarnemingen waarin de waarde van de variabeleoldisTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)gebruikt alleen waarnemingen waarbij de waarde van deagevariabele tussen 20 en 65 ligt en de waarde van delogincomevariabele groter is dan 10.
De rijselectie wordt uitgevoerd na het verwerken van gegevenstransformaties (zie de argumenten transforms of transform_function). Net als bij alle expressies row_selection kunt u buiten de functieoproep definiëren met behulp van de expression functie.
Transformeert
NIET ONDERSTEUND. Een expressie van het formulier dat de eerste ronde van variabeletransformaties vertegenwoordigt. Net als bij alle expressies transforms kan (of row_selection) buiten de functie-aanroep worden gedefinieerd met behulp van de expression functie.
transform_objects
NIET ONDERSTEUND. Een benoemde lijst met objecten waarnaar kan worden verwezen door transforms, transform_functionen row_selection.
transform_function
De functie voor variabeletransformatie.
transform_variables
Een tekenvector van variabelen voor invoergegevenssets die nodig zijn voor de transformatiefunctie.
transform_packages
NIET ONDERSTEUND. Een tekenvector die extra Python-pakketten opgeeft (buiten de pakketten die zijn opgegeven in RxOptions.get_option("transform_packages")) die beschikbaar moeten worden gemaakt en vooraf moeten worden geladen voor gebruik in functies voor variabele transformatie.
Bijvoorbeeld degenen die expliciet zijn gedefinieerd in revoscalepy-functies via hun transforms en transform_function argumenten of die impliciet zijn gedefinieerd via hun formula of row_selection argumenten. Het transform_packages argument kan ook Geen zijn, wat aangeeft dat er geen pakketten buiten RxOptions.get_option("transform_packages") zijn geladen.
transform_environment
NIET ONDERSTEUND. Een door de gebruiker gedefinieerde omgeving die als bovenliggend element fungeert voor alle omgevingen die intern zijn ontwikkeld en worden gebruikt voor variabele gegevenstransformatie.
Als transform_environment = Nonein plaats daarvan een nieuwe hash-omgeving met bovenliggende revoscalepy.baseenv wordt gebruikt.
blocks_per_read
Hiermee geeft u het aantal blokken op dat moet worden gelezen voor elk segment gegevens dat uit de gegevensbron wordt gelezen.
report_progress
Een geheel getal dat het rapportageniveau voor de voortgang van de rijverwerking aangeeft:
0: er wordt geen voortgang gerapporteerd.1: het aantal verwerkte rijen wordt afgedrukt en bijgewerkt.2: rijen verwerkt en tijdsinstellingen worden gerapporteerd.3: rijen verwerkt en alle tijdsinstellingen worden gerapporteerd.
verbose
Een geheel getal dat de gewenste hoeveelheid uitvoer aangeeft.
Als 0er tijdens berekeningen geen uitgebreide uitvoer wordt afgedrukt. Gehele getallen van waaruit 14 grotere hoeveelheden informatie moeten worden opgegeven.
compute_context
Hiermee stelt u de context in waarin berekeningen worden uitgevoerd, opgegeven met een geldige revoscalepy. RxComputeContext. Momenteel lokaal en opnieuw schalen. RxInSqlServer-rekencontexten worden ondersteund.
Ensemble
Besturingsparameters voor het opgeven van overeenkomsten.
Retouren
Een FastTrees object met het getrainde model.
Opmerking
Dit algoritme is multithreaded en probeert altijd de volledige gegevensset in het geheugen te laden.
Zie ook
References
Wikipedia: Kleurovergangsverhoging (Kleurovergangsstructuur verhogen)
Benadering van greedy-functie: Een kleurovergangsverbeteringsmachine.
Voorbeeld van binaire classificatie
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, 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)
trees_model = rx_fast_trees(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(trees_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))
Uitvoer:
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: 7020 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0949161
Elapsed time: 00:00:00.0112103
Beginning processing data.
Rows Read: 62, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0230457
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 -4.722279 0.131369
1 False False -11.550012 0.009757
2 False False -7.312314 0.050935
3 True True 3.889991 0.825778
4 False False -6.361800 0.072782
Voorbeeld van regressie
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_trees, 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_trees(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)
Uitvoer:
'unbalanced_sets' ignored for method 'regression'
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.001, 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: 21528 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0512720
Elapsed time: 00:00:00.0094435
Beginning processing data.
Rows Read: 29, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0229873
Finished writing 29 rows.
Writing completed.
Solar_R Wind Temp Score
0 115.0 7.4 76.0 26.003876
1 307.0 12.0 66.0 18.057747
2 230.0 10.9 75.0 10.896211
3 259.0 9.7 73.0 13.726607
4 92.0 15.5 84.0 37.972855