Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Pohon Cepat Pembelajaran Mesin
Detail lebih lanjut
rx_fast_trees adalah implementasi dari FastRank. FastRank adalah implementasi algoritma peningkatan gradien MART yang efisien. Peningkatan gradien adalah teknik pembelajaran mesin untuk masalah regresi. Ini membangun setiap pohon regresi dengan cara langkah-bijaksana, menggunakan fungsi kehilangan yang telah ditentukan untuk mengukur kesalahan untuk setiap langkah dan memperbaikinya di langkah berikutnya. Jadi model prediksi ini sebenarnya merupakan ansambel model prediksi yang lebih lemah. Dalam masalah regresi, meningkatkan membangun serangkaian pohon tersebut dengan cara yang bijaksana dan kemudian memilih pohon optimal menggunakan fungsi kehilangan yang dapat diferensiasi sewenang-wenang.
MART mempelajari ansambel pohon regresi, yang merupakan pohon keputusan dengan nilai skalar di daunnya. Pohon keputusan (atau regresi) adalah bagan alur seperti pohon biner, di mana pada setiap simpul interior satu memutuskan mana dari dua node anak yang akan terus didasarkan pada salah satu nilai fitur dari input. Pada setiap simpul daun, nilai dikembalikan. Dalam simpul interior, keputusan didasarkan pada pengujian "x <= v", di mana x adalah nilai fitur dalam sampel input dan v merupakan salah satu nilai yang mungkin dari fitur ini. Fungsi yang dapat diproduksi oleh pohon regresi adalah semua fungsi konstanta sepotong bijaksana.
Ansambel pohon diproduksi oleh komputasi, di setiap langkah, pohon regresi yang memperkirakan gradien fungsi kehilangan, dan menambahkannya ke pohon sebelumnya dengan koefisien yang meminimalkan hilangnya pohon baru. Output ansambel yang dihasilkan oleh MART pada instans tertentu adalah jumlah output pohon.
Jika terjadi masalah klasifikasi biner, output dikonversi ke probabilitas dengan menggunakan beberapa bentuk kalibrasi.
Jika terjadi masalah regresi, output adalah nilai fungsi yang diprediksi.
Jika terjadi masalah peringkat, instans diurutkan berdasarkan nilai output ansambel.
Jika method diatur ke "regression", versi regresi FastTree digunakan. Jika diatur ke "ranking", versi peringkat FastTree digunakan. Dalam kasus peringkat, instans harus diurutkan berdasarkan output ansambel pohon. Satu-satunya perbedaan dalam pengaturan versi ini adalah dalam pengaturan kalibrasi, yang hanya diperlukan untuk klasifikasi.
Arguments
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 menentukan 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 defaultnya adalah 20.
laju pembelajaran
Menentukan ukuran langkah yang diambil ke arah gradien di setiap langkah proses pembelajaran. Ini menentukan seberapa cepat atau lambat pelajar berkonversi pada solusi optimal. Jika ukuran langkah terlalu besar, Anda mungkin melakukan overshoot solusi optimal. Jika ukuran langkah terlalu kecil, pelatihan membutuhkan waktu lebih lama untuk bertemu dengan solusi terbaik.
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. Hanya jumlah instans yang dihitung bahkan jika instans ditimbang.
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 1.
split_fraction
Pecahan fitur yang dipilih secara acak untuk digunakan pada setiap pemisahan. Nilai defaultnya adalah 1.
num_bins
Jumlah maksimum nilai yang berbeda (bin) per fitur. Jika fitur memiliki nilai yang lebih sedikit dari angka yang ditunjukkan, setiap nilai ditempatkan di bin sendiri. Jika ada lebih banyak nilai, algoritma akan membuat numBins bin.
first_use_penalty
Fitur ini pertama-tama menggunakan koefisien penalti. Ini adalah bentuk regularisasi yang dikenakan penalti karena menggunakan fitur baru saat membuat pohon. Tingkatkan nilai ini untuk membuat pohon yang tidak menggunakan banyak fitur. Nilai defaultnya adalah 0.
gain_conf_level
Persyaratan kepercayaan perolehan tree fitting (harus dalam kisaran [0,1)). Nilai defaultnya adalah 0.
unbalanced_sets
Jika True, turunan yang dioptimalkan untuk set yang tidak seimbang digunakan. Hanya berlaku jika type sama dengan "binary".
Nilai defaultnya adalah False.
train_threads
Jumlah utas yang akan digunakan dalam pelatihan. Nilai default adalah 8.
random_seed
Menentukan seed acak. Nilai default adalah None.
ml_transforms
Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau Tidak ada jika tidak ada transformasi yang harus dilakukan. Lihat featurize_text, categorical, dan categorical_hash, untuk transformasi yang didukung.
Transformasi ini dilakukan setelah transformasi Python tertentu.
Nilai default adalah None.
ml_transform_vars
Menentukan vektor karakter nama variabel yang akan digunakan di ml_transforms atau Tidak Ada jika tidak ada yang akan digunakan.
Nilai default adalah None.
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 variabeloldadalahTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)hanya menggunakan pengamatan di mana nilaiagevariabel antara 20 dan 65 dan nilailogincomevariabel 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 .
Mengubah
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_functiondan 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, mereka yang secara eksplisit didefinisikan dalam fungsi pencabutan skala 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 waktunya 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 peningkatan jumlah informasi.
compute_context
Mengatur konteks di mana komputasi dijalankan, ditentukan dengan pencabutan skala yang valid. RxComputeContext. Saat ini lokal dan pencabutan. Konteks komputasi RxInSqlServer didukung.
Ansambel
Parameter kontrol untuk ansambel.
Pengembalian Barang
Objek FastTrees dengan model terlatih.
Nota
Algoritma ini multi-utas dan akan selalu mencoba memuat seluruh himpunan data ke dalam memori.
Lihat juga
Referensi
Wikipedia: Peningkatan gradien (Peningkatan pohon gradien)
Perkiraan fungsi serakah: Mesin peningkatan gradien.
Contoh Klasifikasi Biner
'''
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))
Keluaran:
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
Contoh regresi
'''
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)
Keluaran:
'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