microsoftml.rx_fast_linear: Model Linier dengan Stochastic Dual Coordinate Ascent
Penggunaan
microsoftml.rx_fast_linear()
Deskripsi
Pelatih pengoptimalan Stochastic Dual Coordinate Ascent (SDCA) untuk klasifikasi dan regresi biner linier.
Detail
rx_fast_linear
adalah pelatih yang didasarkan pada metode Stochastic Dual Coordinate Ascent (SDCA), teknik pengoptimalan canggih untuk fungsi objektif konveks. Algoritma dapat diskalakan untuk digunakan pada himpunan data di luar memori yang besar karena implementasi semi-asinkron yang mendukung multi-utas.
Konvergensi dijalani dengan secara berkala memberlakukan sinkronisasi antara pembaruan primal dan ganda dalam utas terpisah. Beberapa pilihan fungsi kerugian juga disediakan. Metode SDCA menggabungkan beberapa properti dan kemampuan terbaik dari regresi logistik dan algoritma SVM.
Untuk informasi selengkapnya tentang SDCA, lihat kutipan di bagian referensi.
Algoritma pengoptimalan tradisional, seperti penurunan gradien stochastic (SGD), mengoptimalkan fungsi kehilangan empiris secara langsung. SDCA memilih pendekatan berbeda yang mengoptimalkan masalah ganda sebagai gantinya. Fungsi kehilangan ganda diparmetriz oleh bobot per contoh. Dalam setiap perulangan, ketika contoh pelatihan dari himpunan data pelatihan dibaca, bobot contoh yang sesuai disesuaikan sehingga fungsi kehilangan ganda dioptimalkan sehubungan dengan contoh saat ini. Tidak ada tingkat pembelajaran yang diperlukan oleh SDCA untuk menentukan ukuran langkah seperti yang diperlukan oleh berbagai metode penurunan gradien.
rx_fast_linear
mendukung klasifikasi biner dengan tiga jenis fungsi kerugian saat ini: Kehilangan log, kehilangan engsel, dan kehilangan engsel yang dihaluskan.
Regresi linier juga mendukung dengan fungsi kehilangan kuadrat. Regularisasi net elastis dapat ditentukan oleh l2_weight
parameter dan l1_weight
. Perhatikan bahwa l2_weight
memiliki efek pada tingkat konvergensi. Secara umum, semakin besar l2_weight
, semakin cepat SDCA menyatu.
Perhatikan bahwa rx_fast_linear
adalah algoritma pengoptimalan stochastic dan streaming. Hasilnya tergantung pada urutan data pelatihan. Untuk hasil yang dapat direproduksi, disarankan shuffle
agar satu set ke False
dan train_threads
ke 1
.
Argumen
Formula
Rumus 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
Menentukan jenis model dengan string karakter: "binary"
untuk klasifikasi biner default atau "regression"
untuk regresi linier.
loss_function
Menentukan fungsi kehilangan empiris untuk dioptimalkan. Untuk klasifikasi biner, tersedia pilihan berikut:
log_loss
: Log-loss. Ini adalah default.hinge_loss
: Kehilangan engsel SVM. Parameternya mewakili ukuran margin.smooth_hinge_loss
: Kehilangan engsel yang dihaluskan. Parameternya mewakili konstanta penghalusan.
Untuk regresi linier, kerugian squared_loss
kuadrat saat ini didukung. Ketika parameter ini diatur ke Tidak Ada, nilai defaultnya tergantung pada jenis pembelajaran:
log_loss
untuk klasifikasi biner.squared_loss
untuk regresi linier.
Contoh berikut mengubah loss_function menjadi hinge_loss
: rx_fast_linear(..., loss_function=hinge_loss())
.
l1_weight
Menentukan bobot regularisasi L1. Nilai harus non-negatif atau Tidak Ada. Jika Tidak Ada ditentukan, nilai aktual secara otomatis dihitung berdasarkan himpunan data. Tidak ada yang merupakan nilai default.
l2_weight
Menentukan bobot regularisasi L2. Nilai harus non-negatif atau Tidak Ada. Jika Tidak Ada ditentukan, nilai aktual secara otomatis dihitung berdasarkan himpunan data. Tidak ada yang merupakan nilai default.
train_threads
Menentukan berapa banyak utas bersamaan yang dapat digunakan untuk menjalankan algoritma. Ketika parameter ini diatur ke Tidak Ada, jumlah utas yang digunakan ditentukan berdasarkan jumlah prosesor logis yang tersedia untuk proses serta ketersediaan data. Atur ke 1
untuk menjalankan algoritma dalam satu utas.
convergence_tolerance
Menentukan ambang toleransi yang digunakan sebagai kriteria konvergensi. Harus antara 0 dan 1. Nilai defaultnya adalah 0.1
. Algoritma dianggap telah terkonvergensi jika kesenjangan dualitas relatif, yang merupakan rasio antara kesenjangan gandaitas dan kehilangan primal, berada di bawah toleransi konvergensi yang ditentukan.
max_iterations
Menentukan batas atas pada jumlah iterasi pelatihan. Parameter ini harus positif atau Tidak Ada. Jika Tidak Ada ditentukan, nilai aktual secara otomatis dihitung berdasarkan himpunan data. Setiap perulangan memerlukan pass over lengkap atas data pelatihan. Pelatihan berakhir setelah jumlah total perulangan mencapai batas atas yang ditentukan atau ketika fungsi kerugian menyatu, mana pun yang terjadi sebelumnya.
shuffle
Menentukan apakah akan mengacak data pelatihan. Atur True
untuk mengacak data; False
bukan mengacak. Nilai defaultnya adalah True
. SDCA adalah algoritma pengoptimalan stochastic. Jika pengacakan diaktifkan, data pelatihan diacak pada setiap perulangan.
check_frequency
Jumlah iterasi setelah fungsi kerugian dihitung dan diperiksa untuk menentukan apakah fungsi tersebut telah terkonvergensi. Nilai yang ditentukan harus berupa bilangan bulat positif atau Tidak Ada. Jika Tidak Ada, nilai aktual secara otomatis dihitung berdasarkan himpunan data. Jika tidak, misalnya, jika checkFrequency = 5
ditentukan, maka fungsi kerugian dihitung dan konvergensi diperiksa setiap 5 iterasi. Komputasi fungsi kerugian memerlukan pass lengkap terpisah atas data pelatihan.
Menormalkan
Menentukan jenis normalisasi otomatis yang digunakan:
"Auto"
: jika normalisasi diperlukan, itu dilakukan secara otomatis. Ini adalah pilihan default."No"
: tidak ada normalisasi yang dilakukan."Yes"
: normalisasi dilakukan."Warn"
: jika normalisasi diperlukan, pesan peringatan ditampilkan, tetapi normalisasi tidak dilakukan.
Normalisasi menskalakan ulang rentang data yang berbeda dengan skala standar. Penskalaan fitur memastikan jarak antara titik data proporsional dan memungkinkan berbagai metode pengoptimalan seperti penurunan gradien untuk berkonversi jauh lebih cepat. Jika normalisasi dilakukan, MaxMin
normalizer akan digunakan. Ini menormalkan nilai dalam interval [a, b] di mana -1 <= a <= 0
dan b - a = 1
0 <= b <= 1
. Normalizer ini mempertahankan sparsitas dengan memetakan nol ke nol.
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 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 variabelold
adalahTrue
.row_selection = (age > 20) & (age < 65) & (log(income) > 10)
hanya menggunakan pengamatan di mana nilaiage
variabel adalah antara 20 dan 65 dan nilailog
income
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, 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 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 peningkatan jumlah informasi.
compute_context
Mengatur konteks di mana komputasi dijalankan, ditentukan dengan pencabutan yang valid. RxComputeContext. Saat ini lokal dan revoscalepy. Konteks komputasi RxInSqlServer didukung.
Ansambel
Parameter kontrol untuk ansambel.
Mengembalikan
Objek FastLinear
dengan model terlatih.
Catatan
Algoritma ini multi-utas dan tidak akan mencoba memuat seluruh himpunan data ke dalam memori.
Lihat juga
hinge_loss
, log_loss
, smoothed_hinge_loss
, squared_loss
, rx_predict
Referensi
Meningkatkan Stochastic Dual Coordinate Ascent
Metode Ascent Koordinat Ganda Stochastic untuk Minimisasi Kerugian Reguler
Contoh klasifikasi biner
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, 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_linear(
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:
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, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 8064.
Auto-tuning parameters: L2 = 2.666837E-05.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 568.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.5810985
Elapsed time: 00:00:00.0084876
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0292334
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
isCase PredictedLabel Score Probability
0 True True 0.990544 0.729195
1 False False -2.307120 0.090535
2 False False -0.608565 0.352387
3 True True 1.028217 0.736570
4 True False -3.913066 0.019588
Contoh regresi
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_linear, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
attitude = get_dataset("attitude")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
attitudedf = attitude.as_df()
data_train, data_test = train_test_split(attitudedf)
model = rx_fast_linear(
formula="rating ~ complaints + privileges + learning + raises + critical + advance",
method="regression",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["rating"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Output:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 22, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 22, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 22, Read Time: 0, Transform Time: 0
Beginning processing data.
Using 2 threads to train.
Automatically choosing a check frequency of 2.
Auto-tuning parameters: maxIterations = 68180.
Auto-tuning parameters: L2 = 0.01.
Auto-tuning parameters: L1Threshold (L1/L2) = 0.
Using best model from iteration 54.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.1114324
Elapsed time: 00:00:00.0090901
Beginning processing data.
Rows Read: 8, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0330772
Finished writing 8 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
rating Score
0 71.0 72.630440
1 67.0 56.995350
2 67.0 52.958641
3 72.0 80.894539
4 50.0 38.375427
fungsi kehilangan
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk