Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Logistická regrese strojového učení
Podrobnosti
Logistická regrese je klasifikační metoda, která se používá k predikci hodnoty proměnné závislé na kategoriích z jejího vztahu k jedné nebo více nezávislých proměnných, u kterých se předpokládá logistická distribuce. Pokud má závislá proměnná pouze dvě možné hodnoty (úspěch/selhání), pak logistická regrese je binární. Pokud má závislá proměnná více než dvě možné hodnoty (výsledky diagnostického testu krevního typu), je logistická regrese multinomická.
Technika optimalizace používaná pro rx_logistic_regression omezenou paměť Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Oba L-BFGS i běžné algoritmy BFGS používají kvazi-Newtonovské metody k odhadu výpočetně náročné Hessian matice v rovnici používané Newtonovou metodou k výpočtu kroků. Aproximace L-BFGS ale používá k výpočtu dalšího kroku pouze omezené množství paměti, takže je obzvláště vhodná pro problémy s velkým počtem proměnných. Parametr memory_size určuje počet minulých pozic a přechodů, které se mají uložit pro použití ve výpočtu dalšího kroku.
Tento learner může používat elastické regularizace net: lineární kombinace L1 (laso) a L2 (ridge) regularizace. Regularizace je metoda, která může vykreslit špatně posedlé problémy tím, že uloží omezení, která poskytují informace k doplnění dat a které brání přeurčení tím, že modely s extrémními hodnotami koeficientu. To může zlepšit generalizaci modelu získané výběrem optimální složitosti v kompromisu odchylky. Regularizace funguje tak, že k chybě hypotézy přidá penále, která je přidružená k hodnotám koeficientu. Přesný model s extrémními hodnotami koeficientů by byl penalizován více, ale méně přesný model s konzervativnějšími hodnotami by byl penalizován méně. Regularizace L1 a L2 mají různé účinky a použití, které se doplňují v určitých ohledech.
l1_weight: lze použít u řídkých modelů při práci s vysoce dimenzionálními daty. Načítá malé váhy přidružené funkce, které jsou relativně nedůležité směrem k 0.l2_weight: je vhodnější pro data, která nejsou řídká. Stahuje velké váhy směrem k nule.
Přidáním trestů ridge do regularizace se překonaly některé omezení lasa. Může zlepšit prediktivní přesnost, například když je počet prediktorů větší než velikost vzorku.
Pokud x = l1_weight a y = l2_weight, ax + by = c definuje lineární rozsah regulárních termínů. Výchozí hodnoty x a y jsou oba 1. Agresivní regularizace může poškodit prediktivní kapacitu vyloučením důležitých proměnných z modelu. Proto je volba optimálních hodnot pro parametry regularizace důležitá pro výkon modelu logistické regrese.
Arguments
vzorec
Vzorec, jak je popsáno v podmínkách interakce revoscalepy.rx_formula a F() v microsoftml se v současné době nepodporuje.
data
Objekt zdroje dat nebo řetězec znaku určující soubor .xdf nebo objekt datového rámce.
metoda
Řetězec znaku, který určuje typ logistické regrese: "binary" pro výchozí logistickou regresi binární klasifikace nebo "multiClass" pro multinomické logistické regrese.
l2_weight
Hmotnost regularizace L2. Jeho hodnota musí být větší nebo rovna 0 a výchozí hodnota je nastavena na 1.
l1_weight
Hmotnost regularizace L1. Jeho hodnota musí být větší nebo rovna 0 a výchozí hodnota je nastavena na 1.
opt_tol
Prahová hodnota pro konvergenci optimalizátoru. Pokud je zlepšení mezi iteracemi menší než prahová hodnota, algoritmus se zastaví a vrátí aktuální model. Menší hodnoty jsou pomalejší, ale přesnější.
Výchozí hodnota je 1e-07.
memory_size
Velikost paměti pro L-BFGS určující počet minulých pozic a přechodů, které se mají uložit pro výpočet dalšího kroku. Tento parametr optimalizace omezuje velikost paměti, která se používá k výpočtu velikosti a směru dalšího kroku. Když zadáte méně paměti, trénování je rychlejší, ale méně přesné. Musí být větší nebo rovno 1 a výchozí hodnota je 20.
max_iterations
Nastaví maximální počet iterací. Po tomto počtu kroků se algoritmus zastaví, i když nesplňuje kritéria konvergence.
show_training_stats
Zadejte True , aby se zobrazily statistiky trénovacích dat a vytrénovaného modelu, jinak False. Výchozí hodnota je False. Další informace o statistikách modelu najdete v tématu summary.ml_model().
sgd_init_tol
Nastavte na číslo větší než 0 pro vyhledání počátečních parametrů pomocí stochastického gradientního sestupu (SGD). Množina nenulových hodnot určuje směroná odchylka, která se používá k určení konvergence.
Výchozí hodnota určuje 0 , že SGD se nepoužívá.
init_wts_diameter
Nastaví průměr počátečních hmotností, který určuje rozsah, ze kterého jsou hodnoty nakresleny pro počáteční váhy. Tyto váhy se inicializují náhodně z tohoto rozsahu. Pokud je například zadán dprůměr , pak jsou váhy rovnoměrně rozděleny mezi -d/2 a d/2. Výchozí hodnota je 0, která určuje, že všechny váhy jsou inicializovány na 0.
train_threads
Počet vláken, která se mají použít při trénování modelu.
To by mělo být nastavené na počet jader na počítači. Všimněte si, že vícevláknové ověřování L-BFGS se pokouší načíst datovou sadu do paměti. Vpřípaděch train_threads1 Pokud se počet vláken, která se mají použít, určuje interně. Výchozí hodnota je None.
dense_optimizer
Pokud True, vynutí densifikace vnitřních optimalizačních vektorů. Pokud Falseumožňuje optimalizátor logistické regrese používat zhuštěné nebo zhuštěné vnitřní stavy, jak je najde.
Nastavení denseOptimizer , které vyžaduje, aby True interní optimalizátor používal hustý vnitřní stav, který může pomoci zmírnit zatížení uvolňování paměti pro některé odrůdy větších problémů.
Normalizovat
Určuje typ použité automatické normalizace:
"Auto": Pokud je potřeba normalizace, provede se automaticky. Toto je výchozí volba."No": Neprovádí se normalizace."Yes": normalizace se provádí."Warn": Pokud je potřeba normalizace, zobrazí se zpráva s upozorněním, ale normalizace se neprovede.
Normalizace rescales disparate data ranges to a standard scale. Škálování funkcí zajišťuje, že vzdálenosti mezi datovými body jsou proporcionální a umožňují mnohem rychleji konvergovat různé metody optimalizace, jako je gradientní sestup. Při normalizaci MaxMin se použije normalizátor. Normalizuje hodnoty v intervalu [a, b] where -1 <= a <= 0 a 0 <= b <= 1 .b - a = 1 Tento normalizátor zachovává sparsity tím, že namapuje nulu na nulu.
ml_transforms
Určuje seznam transformací MicrosoftML, které se mají provést s daty před trénováním nebo Žádná , pokud se neprovedou žádné transformace. Viz featurize_text, categoricala categorical_hash, pro transformace, které jsou podporovány.
Tyto transformace se provádějí po všech zadaných transformacích Pythonu.
Výchozí hodnota je None.
ml_transform_vars
Určuje vektor znaku názvů proměnných, který má být použit v ml_transforms nebo None , pokud se žádný použít.
Výchozí hodnota je None.
row_selection
NEPODPORUJE SE. Určuje řádky (pozorování) ze sady dat, které má model používat s názvem logické proměnné ze sady dat (v uvozovkách) nebo logickým výrazem pomocí proměnných v sadě dat. Například:
row_selection = "old"použije pouze pozorování, ve kterých jeTruehodnota proměnnéold.row_selection = (age > 20) & (age < 65) & (log(income) > 10)používá pouze pozorování, ve kterých je hodnotaageproměnné mezi 20 a 65 a hodnotoulogincomeproměnné je větší než 10.
Výběr řádku se provede po zpracování všech transformací dat (viz argumenty transforms nebo transform_function). Stejně jako u všech výrazů row_selection je možné definovat mimo volání funkce pomocí expression funkce.
transformuje
NEPODPORUJE SE. Výraz formuláře, který představuje první kolo transformací proměnných. Stejně jako u všech výrazů transforms je možné definovat (nebo row_selection) mimo volání funkce pomocí expression funkce.
transform_objects
NEPODPORUJE SE. Pojmenovaný seznam obsahující objekty, na které lze odkazovat pomocí transforms, transform_functiona row_selection.
transform_function
Proměnná transformační funkce.
transform_variables
Znakový vektor vstupních proměnných množiny dat potřebných pro transformační funkci.
transform_packages
NEPODPORUJE SE. Vektor znaku určující další balíčky Pythonu (mimo balíčky zadané v RxOptions.get_option("transform_packages")) k dispozici a předem načtený pro použití v transformačních funkcích proměnných.
Například explicitně definované v funkcích revoscalepy prostřednictvím jejich transforms a transform_function argumentů nebo těch, které jsou definovány implicitně prostřednictvím jejich formula nebo row_selection argumentů. Argumentem transform_packages může být také Žádný, což znamená, že nejsou předem načteny žádné balíčky mimo RxOptions.get_option("transform_packages") .
transform_environment
NEPODPORUJE SE. Uživatelem definované prostředí, které bude sloužit jako nadřazené všem prostředím vyvinutým interně a které se používají k transformaci proměnných dat.
Pokud transform_environment = Nonese místo toho použije nové prostředí hash s nadřazeným revoscalepy.baseenv.
blocks_per_read
Určuje početblokůch
report_progress
Celočíselná hodnota, která určuje úroveň generování sestav o průběhu zpracování řádků:
0: Nebyl hlášen žádný průběh.1: Počet zpracovaných řádků se vytiskne a aktualizuje.2: Jsou hlášeny řádky zpracovávané a časování.3: Jsou hlášeny řádky zpracovávané a všechna časování.
podrobný
Celočíselná hodnota, která určuje požadovanou velikost výstupu.
Pokud 0se během výpočtů nevytiskne žádný podrobný výstup. Celočíselné hodnoty, od 1 které se 4 poskytují rostoucí množství informací.
compute_context
Nastaví kontext, ve kterém se výpočty spouštějí, zadané pomocí platné revoscalepy. RxComputeContext. V současné době místní a revoscalepy. Podporují se výpočetní kontexty RxInSqlServer .
Soubor
Kontrolní parametry pro přemíscení
Návraty
Objekt LogisticRegression s natrénovaným modelem.
Poznámka:
Tento algoritmus se pokusí načíst celou datovou sadu do paměti, když train_threads > 1 (více vláken).
Viz také
Odkazy
Škálovatelné trénování modelů L1-Regularized Log-Linear
Testovací běh – Regularizace L1 a L2 pro strojové učení
Příklad binární klasifikace
'''
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))
Výstup:
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
Příklad klasifikace MultiClass
'''
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))
Výstup:
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