microsoftml.rx_fast_forest: Random Forest

Penggunaan

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)

Deskripsi

Hutan Cepat Pembelajaran Mesin

Detail

Pohon keputusan adalah model non-parametrik yang melakukan urutan pengujian sederhana pada input. Prosedur keputusan ini memetakannya ke output yang ditemukan dalam himpunan data pelatihan yang inputnya mirip dengan instans yang sedang diproses. Keputusan dibuat pada setiap simpul struktur data pohon biner berdasarkan ukuran kesamaan yang memetakan setiap instans secara rekursif melalui cabang pohon sampai simpul daun yang sesuai tercapai dan keputusan output dikembalikan.

Pohon keputusan memiliki beberapa keuntungan:

  • Pohon keputusan efisien dalam komputasi dan penggunaan memori selama pelatihan dan prediksi.

  • Pohon keputusan dapat mewakili batas keputusan non-linier.

  • Pohon keputusan melakukan pemilihan dan klasifikasi fitur terintegrasi.

  • Pohon keputusan tangguh di hadapan fitur yang ramai.

Regresi hutan cepat adalah implementasi hutan dan regresi kuantil acak menggunakan pelajar pohon regresi di rx_fast_trees. Model ini terdiri dari ansambel pohon keputusan. Setiap pohon di hutan keputusan menghasilkan distribusi Gaussian dengan cara prediksi. Agregasi dilakukan di atas ansambel pohon untuk menemukan distribusi Gaussian yang paling dekat dengan distribusi gabungan untuk semua pohon dalam model.

Pengklasifikasi hutan keputusan ini terdiri dari ansambel pohon keputusan. Secara umum,.model ensambel memberikan cakupan dan akurasi yang lebih baik dibandingkan dengan pohon keputusan tunggal. Setiap pohon di hutan keputusan menghasilkan distribusi Gaussian.

Argumen

Formula

Rumus seperti yang dijelaskan dalam revoscalepy.rx_formula. Istilah interaksi dan F() saat ini tidak didukung di microsoftml.

data

Objek sumber data atau string karakter yang menentukan file .xdf atau objek bingkai data.

metode

String karakter yang menunjukkan jenis Pohon Cepat:

  • "binary" untuk Klasifikasi Biner Pohon Cepat default atau

  • "regression" untuk Regresi Pohon Cepat.

num_trees

Menentukan jumlah total pohon keputusan yang akan dibuat dalam ansambel. Dengan membuat lebih banyak pohon keputusan, Anda berpotensi mendapatkan cakupan yang lebih baik, tetapi waktu pelatihan meningkat. Nilai defaultnya adalah 100.

num_leaves

Jumlah maksimum daun (simpul terminal) yang dapat dibuat di pohon apa pun. Nilai yang lebih tinggi berpotensi meningkatkan ukuran pohon dan mendapatkan presisi yang lebih baik, tetapi berisiko overfitting dan membutuhkan waktu pelatihan yang lebih lama. Nilai default adalah 20.

min_split

Jumlah minimum instans pelatihan yang diperlukan untuk membentuk daun. Artinya, jumlah minimal dokumen yang diizinkan dalam daun pohon regresi, dari data sub-sampel. 'Pemisahan' berarti bahwa fitur di setiap tingkat pohon (simpul) dibagi secara acak. Nilai defaultnya adalah 10.

example_fraction

Pecahan instans yang dipilih secara acak untuk digunakan untuk setiap pohon. Nilai defaultnya adalah 0,7.

feature_fraction

Pecahan fitur yang dipilih secara acak untuk digunakan untuk setiap pohon. Nilai defaultnya adalah 0,7.

split_fraction

Pecahan fitur yang dipilih secara acak untuk digunakan pada setiap pemisahan. Nilai defaultnya adalah 0,7.

num_bins

Jumlah maksimum nilai (bin) yang berbeda per fitur. Nilai defaultnya adalah 255.

first_use_penalty

Fitur ini pertama-tama menggunakan koefisien penalti. Nilai default adalah 0.

gain_conf_level

Kecocokan pohon mendapatkan persyaratan keyakinan (harus dalam rentang [0,1]). Nilai default adalah 0.

train_threads

Jumlah utas yang akan digunakan dalam pelatihan. Jika Tidak Ada ditentukan, jumlah utas yang akan digunakan ditentukan secara internal. Nilai defaultnya adalah Tidak Ada.

random_seed

Menentukan benih acak. Nilai defaultnya adalah Tidak Ada.

ml_transforms

Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau Tidak Ada jika tidak ada transformasi yang akan dilakukan. Lihat featurize_text, , categoricaldan categorical_hash, untuk transformasi yang didukung. Transformasi ini dilakukan setelah transformasi Python yang ditentukan. Nilai defaultnya adalah Tidak Ada.

ml_transform_vars

Menentukan vektor karakter nama variabel yang akan digunakan di ml_transforms atau Tidak Ada jika tidak ada yang akan digunakan. Nilai defaultnya adalah Tidak Ada.

row_selection

TIDAK DIDUKUNG. Menentukan baris (pengamatan) dari himpunan data yang akan digunakan oleh model dengan nama variabel logis dari himpunan data (dalam tanda kutip) atau dengan ekspresi logis menggunakan variabel dalam himpunan data. Contohnya:

  • row_selection = "old" hanya akan menggunakan pengamatan di mana nilai variabel old adalah True.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) hanya menggunakan pengamatan di mana nilai age variabel adalah antara 20 dan 65 dan nilai logincome variabel lebih besar dari 10.

Pemilihan baris dilakukan setelah memproses transformasi data apa pun (lihat argumen transforms atau transform_function). Seperti semua ekspresi, row_selection dapat didefinisikan di luar panggilan fungsi menggunakan expression fungsi .

transformasi

TIDAK DIDUKUNG. Ekspresi formulir yang mewakili putaran pertama transformasi variabel. Seperti semua ekspresi, transforms (atau row_selection) dapat didefinisikan di luar panggilan fungsi menggunakan expression fungsi .

transform_objects

TIDAK DIDUKUNG. Daftar bernama yang berisi objek yang dapat dirujuk oleh transforms, transform_function, dan row_selection.

transform_function

Fungsi transformasi variabel.

transform_variables

Vektor karakter variabel himpunan data input yang diperlukan untuk fungsi transformasi.

transform_packages

TIDAK DIDUKUNG. Vektor karakter yang menentukan paket Python tambahan (di luar yang ditentukan dalam RxOptions.get_option("transform_packages")) untuk tersedia dan dimuat sebelumnya untuk digunakan dalam fungsi transformasi variabel. Misalnya, yang secara eksplisit didefinisikan dalam fungsi revoscalepy melalui argumen dan transform_function mereka transforms atau yang didefinisikan secara implisit melalui argumen atau row_selection merekaformula. Argumen transform_packages mungkin juga Tidak Ada, menunjukkan bahwa tidak ada paket di luar RxOptions.get_option("transform_packages") yang dimuat sebelumnya.

transform_environment

TIDAK DIDUKUNG. Lingkungan yang ditentukan pengguna untuk berfungsi sebagai induk untuk semua lingkungan yang dikembangkan secara internal dan digunakan untuk transformasi data variabel. Jika transform_environment = None, lingkungan "hash" baru dengan revoscalepy.baseenv induk digunakan sebagai gantinya.

blocks_per_read

Menentukan jumlah blok yang akan dibaca untuk setiap potongan data yang dibaca dari sumber data.

report_progress

Nilai bilangan bulat yang menentukan tingkat pelaporan pada kemajuan pemrosesan baris:

  • 0: tidak ada kemajuan yang dilaporkan.

  • 1: jumlah baris yang diproses dicetak dan diperbarui.

  • 2: baris yang diproses dan waktu dilaporkan.

  • 3: baris yang diproses dan semua waktu dilaporkan.

verbose

Nilai bilangan bulat yang menentukan jumlah output yang diinginkan. Jika 0, tidak ada output verbose yang dicetak selama perhitungan. Nilai bilangan bulat dari 1 untuk 4 memberikan jumlah informasi yang meningkat.

compute_context

Mengatur konteks di mana komputasi dijalankan, ditentukan dengan yang valid RxComputeContext. Saat ini konteks lokal dan RxInSqlServer komputasi didukung.

Ansambel

Parameter kontrol untuk ansambel.

Mengembalikan

Objek FastForest dengan model terlatih.

Catatan

Algoritma ini multi-utas dan akan selalu mencoba memuat seluruh himpunan data ke dalam memori.

Lihat juga

rx_fast_trees, rx_predict

Referensi

Wikipedia: Hutan acak

Forest regresi kuantil

Dari Tunggul ke Pohon ke Hutan

Contoh klasifikasi biner

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

Output:

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

Contoh regresi

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

Output:

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