microsoftml.rx_fast_linear: Stokastik Çift Koordinatlı Yükselişli Lineer Model

Usage

microsoftml.rx_fast_linear()

Description

Doğrusal ikili sınıflandırma ve regresyon için Stokastik Çift Koordinatlı Yükseliş (SDCA) optimizasyon eğitmeni.

Ayrıntılar

rx_fast_linear konveks amaç fonksiyonları için son teknoloji bir optimizasyon tekniği olan Stokastik Çift Koordinatlı Yükseliş (SDCA) yöntemine dayanan bir eğitmendir. Algoritma, çoklu iş parçacığı desteğini destekleyen yarı-asenkronize bir uygulama sayesinde büyük bellek dışı veri setlerinde kullanılmak üzere ölçeklendirilebilir. Yakınsama, ayrı bir iş parçacığında primal ve dual güncellemeler arasında periyodik olarak senkronizasyonun sağlanmasıyla desteklenir. Ayrıca çeşitli kayıp fonksiyonları seçeneği de sunulmaktadır. SDCA yöntemi, lojistik regresyon ve SVM algoritmalarının en iyi özelliklerini ve yeteneklerini birleştirir. SDCA hakkında daha fazla bilgi için referans bölümündeki kaynaklara bakınız.

Stokastik gradyan inişi (SGD) gibi geleneksel optimizasyon algoritmaları, ampirik kayıp fonksiyonunu doğrudan optimize eder. SDCA, çift problemi optimize eden farklı bir yaklaşım seçer. Çift kayıp fonksiyonu, örnek başına ağırlıklarla parametrize edilir. Her yinelemede, eğitim veri setinden bir eğitim örneği okunduğunda, karşılık gelen örnek ağırlığı ayarlanır ve çift kayıp fonksiyonu mevcut örneğe göre optimize edilir. SDCA, çeşitli gradyan iniş yöntemlerinde olduğu gibi adım boyutunu belirlemek için öğrenme hızına ihtiyaç duymaz.

rx_fast_linear Şu anda üç tür kayıp fonksiyonuyla ikili sınıflandırmayı destekler: Log kaybı, menteşe kaybı ve düzeltilmiş menteşe kaybı. Doğrusal regresyon ayrıca kare kayıp fonksiyonunu destekler. Elastik ağ düzenlemesi ve l1_weight parametreleriyle l2_weight belirtilebilir. Yakınsamanın l2_weight hızı üzerinde etkisi olduğunu unutmayın. Genel olarak, ne kadar l2_weightbüyük olursa, SDCA o kadar hızlı yakınsar.

Stokastik rx_fast_linear ve akış optimizasyonu algoritmasıdır. Sonuçlar, eğitim verilerinin sırasına bağlıdır. Tekrarlanabilir sonuçlar için, birinin 'ya False ve train_threads 'ye 1ayarlanması shuffle önerilir.

Arguments

formül

revoscalepy.rx_formula'de tanımlanan formül. Etkileşim terimleri ve F() şu anda microsoftml'de desteklenmiyor.

data

Bir veri kaynağı nesnesi veya .xdf dosyası veya veri çerçevesi nesnesi belirten bir karakter dizesi.

method

Karakter dizisiyle model tipini belirler: "binary" varsayılan ikili sınıflandırma için veya "regression" doğrusal regresyon için.

loss_function

Optimize edilecek ampirik kayıp fonksiyonunu belirler. İkili sınıflandırma için aşağıdaki seçenekler mevcuttur:

  • log_loss: Kütük kaybı. Bu varsayılan seçenektir.

  • hinge_loss: SVM menteşe kaybı. Parametresi marj boyutunu temsil eder.

  • smooth_hinge_loss: Düzeltilmiş menteşe kaybı. Parametresi yumuşatma sabitini temsil eder.

Doğrusal regresyon için, kare kayıp squared_loss şu anda desteklenmektedir. Bu parametre None olarak ayarlandığında, varsayılan değeri öğrenme türüne bağlıdır:

Aşağıdaki örnek loss_function şu şekilde değiştirir hinge_loss: rx_fast_linear(..., loss_function=hinge_loss()).

l1_weight

L1 düzenlenme ağırlığını belirtir. Değer ya negatif olmayan ya da Hiç olmayan olmalıdır. Eğer None belirtilirse, gerçek değer veri setine göre otomatik olarak hesaplanır. Hiçbiri varsayılan değerdir.

l2_weight

L2 düzenleme ağırlığını belirtir. Değer ya negatif olmayan ya da Hiç olmayan olmalıdır. Eğer None belirtilirse, gerçek değer veri setine göre otomatik olarak hesaplanır. Hiçbiri varsayılan değerdir.

train_threads

Algoritmayı çalıştırmak için kaç eşzamanlı iş parçacığı kullanılabileceğini belirtir. Bu parametre None olarak ayarlandığında, kullanılan iş parçacığı sayısı, sürece sunulan mantıksal işlemci sayısına ve veri seyrekliğine göre belirlenir. Algoritmayı tek bir iş parçacığında çalıştıracak şekilde ayarlayın 1 .

convergence_tolerance

Yakınsamaya değer olarak kullanılan tolerans eşiğini belirtir. 0 ile 1 arasında olmalı. 0.1 varsayılan değerdir. Algoritma, göreli ikilik boşluğu, yani ikilik boşluğu ile ilkel kayıp arasındaki oran, belirlenen yakınsamama toleransının altına düşerse yakınsamış sayılır.

max_iterations

Eğitim yinelemeleri sayısının üst sınırını belirtir. Bu parametrenin pozitif veya hiç olmaması gerekir. Eğer None belirtilirse, gerçek değer veri setine göre otomatik olarak hesaplanır. Her yineleme, eğitim verisi üzerinde tam bir geçiş gerektirir. Eğitim, toplam yineleme sayısı belirtilen üst sınıra ulaştığında veya kayıp fonksiyonu yakınsadığında, hangisi daha erken olursa sona erer.

karıştır

Eğitim verilerinin karıştırıp karıştırılmayacağını belirtir. Verileri karıştırmak için ayarlanmış True ; False karıştırmak için değil. True varsayılan değerdir. SDCA, stokastik bir optimizasyon algoritmasıdır. Karıştırma açıksa, eğitim verileri her yinelemede karıştırılır.

check_frequency

Kayıp fonksiyonunun hesaplanıp kontrol edildiği yineleme sayısı. Belirtilen değer pozitif tam sayı veya Hiç olmalıdır. Eğer Yoksa, gerçek değer veri setine göre otomatik olarak hesaplanır. Aksi takdirde, örneğin checkFrequency = 5 belirtilmişse, kayıp fonksiyonu hesaplanır ve yakınsama her 5 yinelemede kontrol edilir. Kayıp fonksiyonunun hesaplanması, eğitim verisi üzerinde ayrı bir tam geçiş gerektirir.

normalleştirme

Kullanılan otomatik normalleştirme türünü belirtir:

  • "Auto": normalleştirme gerekiyorsa otomatik olarak gerçekleştirilir. Bu varsayılan seçenektir.

  • "No": normalleştirme yapılmaz.

  • "Yes": normalleştirme gerçekleştirilir.

  • "Warn": normalleştirme gerekiyorsa, bir uyarı iletisi görüntülenir, ancak normalleştirme gerçekleştirilmez.

Normalleştirme, farklı veri aralıklarını standart bir ölçeğe yeniden ölçeklendirir. Özellik ölçeklendirme, veri noktaları arasındaki mesafelerin orantılı olmasını sağlar ve gradyan azalma gibi çeşitli iyileştirme yöntemlerinin çok daha hızlı yakınsamasını sağlar. Normalleştirme yapılırsa bir MaxMin normalleştirici kullanılır. [a, b] nerede -1 <= a <= 0 ve 0 <= b <= 1b - a = 1aralığındaki değerleri normalleştirir. Bu normalleştirici sıfırdan sıfıra eşleyerek sparsity'yi korur.

ml_transforms

Eğitimden önce veriler üzerinde gerçekleştirilecek MicrosoftML dönüşümlerinin listesini veya hiçbir dönüşüm gerçekleştirilecekse Hiçbiri'ni belirtir. Desteklenen dönüştürmeler için bkz featurize_text. , categoricalve categorical_hash. Bu dönüştürmeler, belirtilen Python dönüşümlerinden sonra gerçekleştirilir. Varsayılan değer olarak Hiçbiri kullanılır.

ml_transform_vars

Kullanılacak değişken adlarının karakter vektörlerini veya hiçbiri kullanılmadıysa ml_transformsHiçbiri'ni belirtir. Varsayılan değer olarak Hiçbiri kullanılır.

row_selection

DESTEKLENMEDİ. Model tarafından veri kümesindeki bir mantıksal değişkenin adıyla (tırnak içinde) veya veri kümesindeki değişkenleri kullanan bir mantıksal ifadeyle kullanılacak satırları (gözlemleri) belirtir. Örneğin:

  • row_selection = "old" yalnızca değişkeninin oldTruedeğerinin olduğu gözlemleri kullanır.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) yalnızca değişkenin değerinin age 20 ile 65 arasında olduğu ve değişkenin değerinin logincome 10'dan büyük olduğu gözlemleri kullanır.

Satır seçimi, veri dönüştürmeleri işlendikten sonra gerçekleştirilir (veya bağımsız değişkenlerine transformstransform_functionbakın). Tüm ifadelerde olduğu gibi, row_selection işlevi kullanılarak expression işlev çağrısı dışında tanımlanabilir.

Dönüştüren

DESTEKLENMEDİ. Değişken dönüşümlerinin ilk turunu temsil eden formun ifadesi. Tüm ifadelerde olduğu gibi , transforms (veya row_selection) işlevi kullanılarak expression işlev çağrısı dışında tanımlanabilir.

transform_objects

DESTEKLENMEDİ. , transformsve transform_functiontarafından row_selectionbaşvurulabilen nesneler içeren adlandırılmış liste.

transform_function

Değişken dönüştürme işlevi.

transform_variables

Dönüştürme işlevi için gereken giriş veri kümesi değişkenlerinin karakter vektörleri.

transform_packages

DESTEKLENMEDİ. Değişken dönüştürme işlevlerinde kullanılmak üzere kullanıma sunulacak ve önceden yüklenecek ek Python paketlerini (içinde RxOptions.get_option("transform_packages")belirtilenlerin dışında) belirten bir karakter vektör. Örneğin, ve bağımsız değişkenleri aracılığıyla transformstransform_function işlevlerinde açıkça tanımlananlar veya veya bağımsız değişkenleri aracılığıyla formularow_selection örtük olarak tanımlananlar. Bağımsız transform_packages değişken, dışında hiçbir paketin önceden yüklenmediğini gösteren RxOptions.get_option("transform_packages") de olabilir.

transform_environment

DESTEKLENMEDİ. Dahili olarak geliştirilen ve değişken veri dönüşümü için kullanılan tüm ortamların üst öğesi olarak görev yapmak için kullanıcı tanımlı bir ortam. ise transform_environment = None, bunun yerine üst revoscalepy.baseenv içeren yeni bir "karma" ortam kullanılır.

blocks_per_read

Veri kaynağından okunan her veri öbekleri için okunacak blok sayısını belirtir.

report_progress

Satır işleme ilerleme durumuyla ilgili raporlama düzeyini belirten bir tamsayı değeri:

  • 0: herhangi bir ilerleme bildirilmemiştir.

  • 1: işlenen satır sayısı yazdırılır ve güncelleştirilir.

  • 2: işlenen satırlar ve zamanlamalar bildirilir.

  • 3: işlenen satırlar ve tüm zamanlamalar bildirilir.

verbose

İstenen çıkış miktarını belirten bir tamsayı değeri. ise 0, hesaplamalar sırasında ayrıntılı çıktı yazdırılmaz. Artan miktarda bilgi sağlamak için 1 olan 4 tamsayı değerleri.

compute_context

Geçerli bir revoscalepy ile belirtilen hesaplamaların yürütülme bağlamını ayarlar. RxComputeContext. Şu anda yerel ve revoscalepy. RxInSqlServer işlem bağlamları desteklenir.

Topluluğu

Benzerliği için denetim parametreleri.

İadeler

FastLinear Eğitilmiş modele sahip bir nesne.

Note

Bu algoritma çok iş ipliklidir ve tüm veri setini belleğe yüklemeye çalışmaz.

References

Stokastik Çift Koordinatlı Yükselişin Ölçeklendirilmesi

Düzenli Kayıp Minimumlaştırması için Stokastik Çift Koordinatlı Yükseliş Yöntemleri

İkili sınıflandırma örneği

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

Çıktı:

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

Regresyon örneği

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

Çıktı:

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

Kayıp fonksiyonları