Aracılığıyla paylaş


Dokuda AutoML (önizleme)

AutoML (Otomatik Makine Öğrenmesi), az insan katılımıyla makine öğrenmesi modeli eğitim ve iyileştirmesini otomatik hale getiren yöntem ve araçlardan oluşan bir koleksiyondur. AutoML'nin amacı, genellikle çok fazla beceri ve bilgi işlem gücü talep eden belirli bir veri kümesi için en iyi makine öğrenmesi modelini ve hiper parametreleri seçme sürecini basitleştirmek ve hızlandırmaktır.

Önemli

Bu özellik önizleme aşamasındadır.

Doku'da veri bilimciler makine öğrenmesi görevlerini otomatikleştirmek için kullanabilir flaml.AutoML .

AutoML, ML uzmanlarına ve geliştiricilerine farklı sektörlerden aşağıdakiler için yardımcı olabilir:

  • Minimum kodlama ile ML çözümleri oluşturma
  • Süreyi ve maliyeti azaltma
  • Veri bilimi en iyi uygulamalarını uygulama
  • Sorunları hızlı ve verimli bir şekilde çözme

AutoML iş akışı

flaml.AutoML , göreve göre AutoML için bir sınıftır. Her zamanki sığdırma ve tahmin yöntemleriyle Scikit-learn stili tahmin aracı olarak kullanılabilir.

AutoML deneme sürümünü başlatmak için kullanıcıların yalnızca eğitim verilerini ve görev türünü sağlaması gerekir. Doku'daki tümleşik MLflow deneyimleri sayesinde kullanıcılar, deneme sürümünde denenen farklı çalıştırmaları inceleyerek son modelin nasıl seçildiğini de görebilir.

Eğitim verileri

Doku'da kullanıcılar AutoML fit işlevine aşağıdaki giriş türlerini geçirebilir:

  • Numpy Dizisi: Giriş verileri bir Numpy dizisinde depolandığında, X_train ve y_train olarak geçirilir fit() .

  • Pandas veri çerçevesi: Giriş verileri bir Pandas veri çerçevesinde depolandığında, X_train ve y_train olarak ya da veri çerçevesi ve etiket olarak geçirilir fit() .

  • Spark veri çerçevesi üzerinde Pandas: Giriş verileri Spark veri çerçevesi olarak depolandığında, kullanılarak veri çerçevesine dönüştürülebilir Pandas ve ardından veri çerçevesi ve etiket olarak geçirilebilirfit().Spark to_pandas_on_spark()

    from flaml.automl.spark.utils import to_pandas_on_spark
    psdf = to_pandas_on_spark(sdf)
    automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
    

Makine öğrenmesi sorunu

Kullanıcılar, bağımsız değişkenini kullanarak makine öğrenmesi task görevini belirtebilir. Aşağıdakiler de dahil olmak üzere desteklenen çeşitli makine öğrenmesi görevleri vardır:

  • Sınıflandırma: Sınıflandırma modellerinin ana hedefi, eğitim verilerinden elde edilen öğrenmelere göre yeni verilerin hangi kategorilere gireceğini tahmin etmektir. Yaygın sınıflandırma örnekleri sahtekarlık algılama, el yazısı tanıma ve nesne algılamadır.
  • Regresyon: Regresyon modelleri, bağımsız tahmincilere göre sayısal çıkış değerlerini tahmin eder. Regresyonda amaç bir değişkenin diğerlerini nasıl etkilediğini tahmin ederek söz konusu bağımsız gösterge değişkenleri arasındaki ilişkiyi oluşturmaya yardımcı olmaktır. Örneğin, otomobil fiyatları, gaz kilometresi, güvenlik derecelendirmesi vb. özelliklere göre
  • Zaman Serisi Tahmini: Bu, zamana göre sıralanmış geçmiş veri noktalarına göre gelecekteki değerleri tahmin etmek için kullanılır. Bir zaman serisinde veriler günlük, haftalık, aylık veya yıllık gibi belirli bir dönemde düzenli aralıklarla toplanır ve kaydedilir. Zaman serisi tahmininin amacı, verilerdeki desenleri, eğilimleri ve mevsimselliği belirlemek ve ardından bu bilgileri kullanarak gelecekteki değerlerle ilgili tahminler yapmaktır.

FLAML'de desteklenen diğer görevler hakkında daha fazla bilgi edinmek için FLAML'deki AutoML görevleriyle ilgili belgeleri ziyaret edebilirsiniz.

İsteğe bağlı girişler

AutoML denemenizi yapılandırmak için çeşitli kısıtlamalar ve girişler sağlayın.

Sınırlamalar

Bir AutoML deneme sürümü oluştururken, kullanıcılar AutoML işlemiyle ilgili kısıtlamaları, olası tahmincilerin oluşturucu bağımsız değişkenlerini, AutoML'de denenen model türlerini ve hatta AutoML denemesinin ölçümleri üzerindeki kısıtlamaları da yapılandırabilir.

Örneğin, aşağıdaki kod kullanıcıların AutoML denemesinde bir ölçüm kısıtlaması belirtmesine olanak tanır.

metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)

Bu yapılandırmalar hakkında daha fazla bilgi edinmek için FLAML'deki yapılandırmalarla ilgili belgeleri ziyaret edebilirsiniz.

İyileştirme ölçümü

Eğitim sırasında AutoML işlevi, farklı algoritmaları ve parametreleri deneyen birçok deneme oluşturur. AutoML aracı ML algoritmaları ve hiper parametreler aracılığıyla yinelenir. Bu işlemde, her yineleme bir eğitim puanına sahip bir model oluşturur. İyileştirme yapmak istediğiniz ölçümün puanı ne kadar iyi olursa, modelin verilerinizi "sığdırmak" için o kadar iyi olduğu kabul edilir. İyileştirme ölçümü bağımsız değişken aracılığıyla metric belirtilir. Yerleşik ölçüme başvuran bir dize veya kullanıcı tanımlı bir işlev olabilir.

AutoML iyileştirme ölçümleri

Paralel ayarlama

Bazı durumlarda, eğitiminizi paralel hale getirmek için Apache Spark kullanarak AutoML denemenizi hızlandırmak isteyebilirsiniz. Spark kümeleri için FLAML varsayılan olarak yürütücü başına bir deneme başlatır. Bağımsız değişkenini kullanarak n_concurrent_trials eşzamanlı deneme sayısını da özelleştirebilirsiniz.

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

AutoML izlerinizi paralelleştirme hakkında daha fazla bilgi edinmek için paralel Spark işleri için FLAML belgelerini ziyaret edebilirsiniz.

MLflow ile izleme

Keşfedilen izlerin ölçümlerini, parametrelerini ve ölçümlerini yakalamak için Doku MLflow tümleştirmesini de kullanabilirsiniz.

import mlflow
mlflow.autolog()

with mlflow.start_run(nested=True):
    automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")

# You can also provide a run_name pre-fix for the child runs

automl_experiment = flaml.AutoML()
automl_settings = {
    "metric": "r2",
    "task": "regression",
    "use_spark": True,
    "mlflow_exp_name": "test_doc",
    "estimator_list": [
        "lgbm",
        "rf",
        "xgboost",
        "extra_tree",
        "xgb_limitdepth",
    ],  # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
    automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)

Desteklenen modeller

Dokuda AutoML aşağıdaki modelleri destekler:

Sınıflandırma Gerileme Zaman Serisi Tahmini
(PySpark) Gradyan Artırılmış Ağaçlar (GBT) Sınıflandırıcısı (PySpark) Hızlandırılmış Hata Süresi (AFT) Hayatta Kalma Regresyonu Arimax
(PySpark) Doğrusal SVM (PySpark) Genelleştirilmiş Doğrusal Regresyon AutoARIMA
(PySpark) Naive Bayes (PySpark) Gradyan Destekli Ağaçlar (GBT) Regresyonu Ortalama
(Synapse) LightGBM (PySpark) Doğrusal Regresyon CatBoost
CatBoost (Synapse) LightGBM Karar Ağacı
Karar Ağacı CatBoost ExponentialSmoothing
Aşırı Rastgele Ağaçlar Karar Ağacı Aşırı Rastgele Ağaçlar
Gradyan Artırma Elastik Net ForecastTCN
En Yakın K Komşu Aşırı Rastgele Ağaçlar Gradyan Artırma
Işık GBM Gradyan Artırma Holt-Winters Üstel Düzeltme
Doğrusal SVC En Yakın K Komşu En Yakın K Komşu
Lojistik Regresyon LARS Lasso LARS Lasso
L1/L2 Normalleştirme ile Lojistik Regresyon Işık GBM Işık GBM
Sade Bayes L1/L2 Normalleştirme ile Lojistik Regresyon Saf
Rastgele Orman Rastgele Orman Yörünge
Spark üzerinde Rastgele Orman Spark üzerinde Rastgele Orman Peygamber
Stokastik Gradyan Azalma (SGD) Stokastik Gradyan Azalma (SGD) Rastgele Orman
Destek Vektör Sınıflandırması (SVC) XGBoost SARIMAX
XGboost Sınırlı Derinlikli XGBoost SeasonalAverage
Sınırlı Derinlikli XGBoost SeasonalNaive
Zamana Bağlı Fusion Transformatörü
XGBoost
Zaman Serisi için XGBoost
Zaman Serisi için Sınırlı Derinlikli XGBoost
ElasticNet

Sonuçları görselleştirme

Modül, flaml.visualization Plotly kullanarak iyileştirme işlemini çizmeye yönelik yardımcı program işlevleri sağlar. Kullanıcılar Plotly'den yararlanarak AutoML deneme sonuçlarını etkileşimli olarak keşfedebilir. Bu çizim işlevlerini kullanmak için, iyileştirilmiş flaml.AutoML veya flaml.tune.tune.ExperimentAnalysis nesnenizi giriş olarak sağlayın.

Not defterinizde aşağıdaki işlevleri kullanabilirsiniz:

  • plot_optimization_history: Denemedeki tüm denemelerin iyileştirme geçmişini çizin.
  • plot_feature_importance: Veri kümesindeki her özellik için çizim önemi.
  • plot_parallel_coordinate: Denemedeki yüksek boyutlu parametre ilişkilerini çizin.
  • plot_contour: Denemede parametre ilişkisini dağılım çizimi olarak çizin.
  • plot_edf: Denemenin EDF (ampirik dağılım işlevi) hedef değerini çizin.
  • plot_timeline: Denemenin zaman çizelgesini çizin.
  • plot_slice: Bir çalışmada parametre ilişkisini dilim çizimi olarak çizin.
  • plot_param_importance: Denemenin hiper parametre önemini çizin.