Megosztás:


microsoftml.rx_fast_trees: Felturbózott fák

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

Machine Learning Fast Tree

Részletek

rx_fast_trees a FastRank implementációja. A FastRank a MART színátmenet-növelő algoritmus hatékony implementálása. A gradiens kiemelés a regressziós problémák gépi tanulási technikája. Lépésenkénti módon hozza létre az egyes regressziós fákat egy előre definiált veszteségfüggvény használatával az egyes lépések hibáinak mérésére, és a következő lépésben kijavítja azt. Tehát ez az előrejelzési modell valójában gyengébb előrejelzési modellek együttese. A regressziós problémák esetén a kiemelés lépésről lépésre felépíti az ilyen fák sorozatát, majd kiválasztja az optimális fát egy tetszőleges, megkülönböztethető veszteségfüggvény használatával.

A MART megtanulja a regressziós fák együttesét, amely egy döntési fa skaláris értékekkel a leveleiben. A döntési (vagy regressziós) fa egy bináris faszerű folyamatábra, ahol minden belső csomópontnál eldönti, hogy a két gyermekcsomópont közül melyik legyen továbbra is a bemenet egyik funkcióértékén alapulva. A program minden levélcsomópontnál visszaad egy értéket. A belső csomópontokban a döntés a teszten "x <= v"alapul, ahol x a funkció értéke szerepel a bemeneti mintában, és v a funkció egyik lehetséges értéke. A regressziós fával előállítható függvények mind a darab-bölcs állandó függvények.

A fák együttesét a számítástechnika minden lépésben egy regressziós fával hozza létre, amely megközelíti a veszteségfüggvény gradiensét, és hozzáadja az előző fához olyan együtthatókkal, amelyek minimalizálják az új fa elvesztését. A MART által egy adott példányon előállított együttes kimenete a fakimenetek összege.

  • Bináris besorolási probléma esetén a kimenet valamilyen kalibráció használatával valószínűséggé alakul.

  • Regressziós probléma esetén a kimenet a függvény előrejelzett értéke.

  • Rangsorolási probléma esetén a példányokat az együttes kimeneti értéke rendezi.

Ha method be van állítva "regression", a FastTree regressziós verzióját használja a rendszer. Ha be van "ranking"állítva, a Rendszer a FastTree rangsorolási verzióját használja. A rangsorolási esetben a példányokat a fa együttes kimenetének kell rendeznie. Ezeknek a verzióknak a beállításai között az egyetlen különbség a kalibrációs beállításokban van, amelyek csak a besoroláshoz szükségesek.

Arguments

képlet

A képlet az revoscalepy.rx_formula. A microsoftml jelenleg nem támogatja az interakciós feltételeketF().

adat

. xdf-fájlt vagy adatkeret-objektumot meghatározó adatforrás-objektum vagy karaktersztring.

metódus

Egy karaktersztring, amely meghatározza a gyorsfa típusát: "binary" az alapértelmezett fast tree bináris besoroláshoz vagy "regression" a gyorsfa regresszióhoz.

num_trees

Megadja az együttesben létrehozandó döntési fák teljes számát. További döntési fák létrehozásával jobb lefedettséget érhet el, de a betanítási idő nő. Az alapértelmezett érték 100.

num_leaves

A fákon létrehozható levelek (terminálcsomópontok) maximális száma. A magasabb értékek növelhetik a fa méretét, és nagyobb pontosságot érhetnek el, de túlillesztést kockáztatnak, és hosszabb betanítási időt igényelnek. Az alapértelmezett érték 20.

tanulási sebesség

Meghatározza a tanulási folyamat minden egyes lépésében a színátmenet irányába tett lépés méretét. Ez határozza meg, hogy a tanuló milyen gyorsan vagy lassan konvergál az optimális megoldáson. Ha a lépés mérete túl nagy, előfordulhat, hogy túllépi az optimális megoldást. Ha a lépés mérete túl kicsi, a betanítás hosszabb ideig tart, amíg a legjobb megoldáshoz vezet.

min_split

A levélalakításhoz szükséges képzési példányok minimális száma. Ez azt a minimális számú dokumentumot teszi lehetővé, amely egy regressziós fa levélében engedélyezve van, az almintából vett adatokból. A "felosztás" azt jelenti, hogy a fa (csomópont) egyes szintjei véletlenszerűen vannak elosztva. Az alapértelmezett érték 10. A rendszer csak a példányok számát számítja ki, még akkor is, ha a példányok súlyozása történik.

example_fraction

Az egyes fákhoz használandó véletlenszerűen kiválasztott példányok töredéke. Az alapértelmezett érték 0,7.

feature_fraction

Az egyes fákhoz használandó véletlenszerűen kiválasztott funkciók töredéke. Az alapértelmezett érték 1.

split_fraction

Az egyes felosztásokon használandó véletlenszerűen kiválasztott funkciók töredéke. Az alapértelmezett érték 1.

num_bins

A különböző értékek (tárolók) maximális száma funkciónként. Ha a funkció a megadott számnál kevesebb értékkel rendelkezik, minden érték a saját tárolójába kerül. Ha több érték van, az algoritmus tárolókat hoz létre numBins .

first_use_penalty

A funkció először a büntetési együtthatót használja. Ez a rendszerezés egy formája, amely büntetést von maga után, ha új funkciót használ a fa létrehozásakor. Növelje ezt az értéket olyan fák létrehozásához, amelyek nem használnak sok funkciót. Az alapértelmezett érték 0.

gain_conf_level

A faillesztés megbízhatósági követelménye (a tartománynak [0,1]) kell lennie). Az alapértelmezett érték 0.

unbalanced_sets

Ha Truea rendszer kiegyensúlyozatlan készletekre optimalizált származékokat használ. Csak akkor alkalmazható, ha type egyenlő."binary" Az alapértelmezett érték a False.

train_threads

A betanításhoz használandó szálak száma. Az alapértelmezett érték 8.

random_seed

A véletlenszerű magot adja meg. Az alapértelmezett érték: Nincs.

ml_transforms

Megadja azon MicrosoftML-átalakítások listáját, amelyeket betanítás előtt el kell végezni az adatokon, vagy Nincs , ha nem kell átalakításokat végrehajtani. categoricalA featurize_texttámogatott átalakításokat lásd, és categorical_hashtekintse meg. Ezek az átalakítások a megadott Python-átalakítások után lesznek végrehajtva. Az alapértelmezett érték: Nincs.

ml_transform_vars

A változónevek ml_transforms karaktervektorát adja meg , ha nincs . Az alapértelmezett érték: Nincs.

row_selection

NEM TÁMOGATOTT. Az adathalmaz azon sorait (megfigyeléseit) adja meg, amelyeket a modell az adathalmazból származó logikai változó nevével (idézőjelekben) vagy az adathalmaz változóit használó logikai kifejezéssel használ. Például:

  • row_selection = "old"csak olyan megfigyeléseket használ, amelyekben a változó old értéke .True

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) csak olyan megfigyeléseket használ, amelyekben a age változó értéke 20 és 65 között van, és a logincome változó értéke nagyobb, mint 10.

A sorkijelölés az adatátalakítások feldolgozása után történik (lásd az argumentumokat transforms vagy transform_functiona ). Az összes kifejezéshez hasonlóan a row_selection függvényhíváson kívül is definiálható a expression függvény használatával.

Átalakítja

NEM TÁMOGATOTT. Az űrlap kifejezése, amely a változóátalakítások első fordulóját jelöli. Az összes kifejezéshez transforms hasonlóan (vagy row_selection) a függvényhíváson kívül is definiálható a expression függvény használatával.

transform_objects

NEM TÁMOGATOTT. Névvel ellátott lista, amely olyan objektumokat tartalmaz, amelyekre hivatkozni transformslehet.row_selectiontransform_function

transform_function

A változó transzformációs függvénye.

transform_variables

A bemeneti adathalmaz változóinak karaktervektora, amely az átalakítási függvényhez szükséges.

transform_packages

NEM TÁMOGATOTT. Egy karaktervektor, amely további Python-csomagokat határoz meg (a megadottakon RxOptions.get_option("transform_packages")kívül), amelyeket elérhetővé kell tenni és előre be kell tölteni a változóátalakítási függvényekben való használatra. A revoscalepy függvényekben explicit módon definiált függvények például azok és transform_function argumentumaik vagy argumentumaik transformsformularow_selection által implicit módon definiált függvények. Az transform_packages argumentum lehet Nincs is, ami azt jelzi, hogy nincsenek előre betöltött csomagok RxOptions.get_option("transform_packages") .

transform_environment

NEM TÁMOGATOTT. Felhasználó által definiált környezet, amely szülőként szolgál minden belső fejlesztésű és változó adatátalakításhoz használt környezethez. Ha transform_environment = Nonea rendszer ehelyett egy új "kivonat" környezetet használ a szülő revoscalepy.baseenv használatával.

blocks_per_read

Megadja az adatforrásból beolvasott adattömbök olvasási blokkjainak számát.

report_progress

Egész számérték, amely a sorfeldolgozási folyamat jelentési szintjét határozza meg:

  • 0: nem jelent előrehaladást.

  • 1: a feldolgozott sorok száma ki lesz nyomtatva és frissítve.

  • 2: a feldolgozott sorok és az időzítések jelentése.

  • 3: feldolgozott sorok és az összes időzítés jelentése.

bővebb

Egy egész szám, amely meghatározza a kívánt kimenet mennyiségét. Ha 0, a számítások során a rendszer nem nyomtat részletes kimenetet. Egész számértékek a 1 növekvő mennyiségű információ biztosításához 4 .

compute_context

Beállítja a számítások végrehajtásának környezetét egy érvényes revoscalepy-val megadva. RxComputeContext. Jelenleg helyi és revoscalepy. Az RxInSqlServer számítási környezetek támogatottak.

Együttes

Vezérlési paraméterek a ensemblinghez.

Visszatérítések

A FastTrees betanított modellel rendelkező objektum.

Megjegyzés:

Ez az algoritmus többszálú, és mindig megpróbálja betölteni a teljes adathalmazt a memóriába.

Lásd még

rx_fast_forest, rx_predict

Hivatkozások

Wikipédia: Színátmenetes kiemelés (Színátmenetes fa kiemelése)

Mohó függvény közelítése: Egy gradiens felerősítő gép.

Példa bináris besorolásra

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

Kimenet:

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

Regressziós példa

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

Kimenet:

'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