Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
Machine Learning Hızlı Ağacı
Ayrıntılar
rx_fast_trees, FastRank'ın bir uygulamasıdır. FastRank, MART gradyan artırma algoritmasının verimli bir uygulamasıdır. Gradyan artırma, regresyon sorunlarına yönelik bir makine öğrenmesi tekniğidir. Her bir regresyon ağacını adım açısından oluşturur ve her adımın hatasını ölçmek için önceden tanımlanmış bir kayıp işlevini kullanarak sonraki adımda düzelter. Bu nedenle bu tahmin modeli aslında daha zayıf tahmin modellerinin bir grubudur. Regresyon sorunlarında, artırmak bu tür bir dizi ağacı adım başına bir şekilde oluşturur ve ardından rastgele farklı bir kayıp işlevi kullanarak en uygun ağacı seçer.
MART, yapraklarında skaler değerlere sahip bir karar ağacı olan regresyon ağaçlarının bir topluluğunu öğrenir. Karar (veya regresyon) ağacı, her iç düğümde iki alt düğümden hangisinin girişteki özellik değerlerinden birine göre devam etmeye karar veren ikili ağaç benzeri bir akış grafiğidir. Her yaprak düğümde bir değer döndürülür. İç düğümlerde karar, giriş örneğindeki özelliğin değeri olan ve v bu özelliğin olası değerlerinden biri olan x testini "x <= v"temel alır. Regresyon ağacı tarafından üretilebilen işlevlerin tümü parça başına sabit işlevlerdir.
Ağaç topluluğu, her adımda, kayıp işlevinin gradyanını yaklaşık olarak tanımlayan bir regresyon ağacı olan ve yeni ağacın kaybını en aza indiren katsayılarla önceki ağaca ekleyen bir regresyon ağacı ile üretilir. Belirli bir örnekte MART tarafından üretilen topluluğun çıkışı, ağaç çıkışlarının toplamıdır.
İkili sınıflandırma sorunu olması durumunda çıkış, bir tür kalibrasyon kullanılarak bir olasılığa dönüştürülür.
Regresyon sorunu olması durumunda çıkış, işlevin tahmin edilen değeridir.
Derecelendirme sorunu olması durumunda örnekler, topluluğun çıkış değerine göre sıralanır.
olarak ayarlanırsa method"regression", FastTree'nin regresyon sürümü kullanılır. olarak ayarlanırsa "ranking", FastTree'nin derecelendirme sürümü kullanılır. Derecelendirme örneğinde örnekler, ağaç grubunun çıkışına göre sıralanmalıdır. Bu sürümlerin ayarlarındaki tek fark, yalnızca sınıflandırma için gerekli olan kalibrasyon ayarlarındadır.
Arguments
formül
revoscalepy.rx_formula'de açıklandığı gibi formül.
Etkileşim terimleri ve F() şu anda microsoftml'de desteklenmiyor.
veriler
Bir veri kaynağı nesnesi veya .xdf dosyası veya veri çerçevesi nesnesi belirten bir karakter dizesi.
method
Hızlı Ağaç türünü belirten karakter dizesi: "binary" varsayılan Hızlı Ağaç İkili Sınıflandırması veya "regression" Hızlı Ağaç Regresyonu için.
num_trees
Toplulukta oluşturulacak karar ağaçlarının toplam sayısını belirtir. Daha fazla karar ağacı oluşturarak daha iyi bir kapsam elde edebilirsiniz, ancak eğitim süresi artar. Varsayılan değer 100 şeklindedir.
num_leaves
Herhangi bir ağaçta oluşturulabilecek en fazla yaprak sayısı (terminal düğümleri). Daha yüksek değerler büyük olasılıkla ağacın boyutunu artırır ve daha iyi duyarlık elde eder, ancak fazla uygunluk riski ve daha uzun eğitim süreleri gerektirir. Varsayılan değer 20'dir.
öğrenme oranı
Öğrenme sürecinin her adımında gradyan yönünde atılan adımın boyutunu belirler. Bu, öğrencilerin en uygun çözüm üzerinde ne kadar hızlı veya yavaş bir şekilde yakınsadığını belirler. Adım boyutu çok büyükse, en uygun çözümü fazla kullanabilirsiniz. Adım boyutu çok küçükse eğitimin en iyi çözüme yakınsama süresi daha uzun sürer.
min_split
Yaprak oluşturmak için gereken en az eğitim örneği sayısı. Başka bir ifadeyle, alt örneklenmiş verilerin dışında bir regresyon ağacının yaprağında izin verilen en az sayıda belge. 'Bölme', ağacın (düğüm) her düzeyindeki özelliklerin rastgele bölündüğü anlamına gelir. Varsayılan değer 10'dur. Örnekler ağırlıklı olsa bile yalnızca örnek sayısı sayılır.
example_fraction
Her ağaç için kullanılacak rastgele seçilen örneklerin kesri. Varsayılan değer 0,7'dir.
feature_fraction
Her ağaç için kullanılacak rastgele seçilen özelliklerin kesri. Varsayılan değer 1'dir.
split_fraction
Her bölmede kullanılacak rastgele seçilen özelliklerin kesri. Varsayılan değer 1'dir.
num_bins
Özellik başına en fazla ayrı değer (bölme) sayısı. Özellik belirtilen sayıdan daha az değere sahipse, her değer kendi kutusuna yerleştirilir. Daha fazla değer varsa, algoritma bölmeler oluşturur numBins .
first_use_penalty
Özellik ilk olarak ceza katsayısını kullanır. Bu, ağacı oluştururken yeni bir özellik kullanmak için bir cezaya neden olan bir düzenlileştirme biçimidir. Çok fazla özellik kullanmayan ağaçlar oluşturmak için bu değeri artırın. Varsayılan değer 0'dır.
gain_conf_level
Ağaç uydurma kazanç güven gereksinimi ([0,1) aralığında olmalıdır). Varsayılan değer 0'dır.
unbalanced_sets
Ise True, dengesiz kümeler için iyileştirilmiş türevler kullanılır. Yalnızca değerine eşit "binary"olduğunda type geçerlidir.
Varsayılan değer şudur: False.
train_threads
Eğitimde kullanılacak iş parçacığı sayısı. Varsayılan değer 8'dir.
random_seed
Rastgele tohumu belirtir. Varsayılan değer olarak Hiçbiri kullanılır.
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şkenininoldTruedeğerinin olduğu gözlemleri kullanır.row_selection = (age > 20) & (age < 65) & (log(income) > 10)yalnızca değişkenin değerininage20 ile 65 arasında olduğu ve değişkenin değerininlogincome10'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İ. , transform_functionve row_selectiontarafından transformsbaş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_functionrevoscalepy 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 RxOptions.get_option("transform_packages") hiçbir paketin önceden yüklenmediğini gösteren Hiçbiri 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 4 olan 1 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.
İade
FastTrees Eğitilmiş modele sahip bir nesne.
Uyarı
Bu algoritma çok iş parçacıklıdır ve her zaman veri kümesinin tamamını belleğe yüklemeyi dener.
Ayrıca bakınız
References
Vikipedi: Gradyan artırma (Gradyan ağacını artırma)
Doyumsuz işlev yaklaşık: Gradyan artırma makinesi.
İkili Sınıflandırma örneği
'''
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))
Çıktı:
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
Regresyon örneği
'''
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)
Çıktı:
'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