Hak Cipta (C) 2021 Grup Automl Freiburg dan Hannover
Sementara kerangka kerja AutomL awal berfokus pada mengoptimalkan pipa ML tradisional dan hiperparameternya, tren lain dalam Automl adalah untuk fokus pada pencarian arsitektur saraf. Untuk menyatukan kedua dunia ini, kami mengembangkan Auto-Pytorch , yang bersama-sama dan kuat mengoptimalkan arsitektur jaringan dan pelatihan hiperparameter untuk memungkinkan pembelajaran mendalam (AutoDL) yang sepenuhnya otomatis.
Auto-Pytorch terutama dikembangkan untuk mendukung data tabel (klasifikasi, regresi) dan data deret waktu (peramalan). Fitur terbaru di Auto-Pytorch untuk data tabel dijelaskan dalam kertas "Auto-Pytorch Tabular: Metaleting Metalning Multi-Fidelity untuk Autodl yang efisien dan kuat" (lihat di bawah untuk Bibtex Ref). Detail tentang Auto-Pytorch untuk tugas peramalan seri waktu multi-horizontal dapat ditemukan di koran "Pembelajaran mendalam otomatis yang efisien untuk peramalan seri waktu" (juga lihat di bawah untuk Bibtex Ref).
Juga, temukan dokumentasinya di sini.
Dari V0.1.0, AutopyTorch telah diperbarui untuk lebih meningkatkan kegunaan, ketahanan dan efisiensi dengan menggunakan SMAC sebagai paket optimasi yang mendasarinya serta mengubah struktur kode. Oleh karena itu, bergerak dari V0.0.2 ke V0.1.0 akan merusak kompatibilitas. Jika Anda ingin menggunakan API lama, Anda dapat menemukannya di master_old .
Deskripsi kasar alur kerja Auto-Pytorch ditarik pada gambar berikut.
Dalam gambar tersebut, data disediakan oleh pengguna dan portofolio adalah seperangkat konfigurasi jaringan saraf yang bekerja dengan baik pada beragam set data. Versi saat ini hanya mendukung portofolio serakah seperti yang dijelaskan dalam kertas Tabular Auto-Pytorch: Metalet Metalning Multi-Fidelity untuk Autodl yang efisien dan kuat portofolio ini digunakan untuk memulai dengan hangat optimalisasi SMAC. Dengan kata lain, kami mengevaluasi portofolio pada data yang disediakan sebagai konfigurasi awal. Kemudian API memulai prosedur berikut:
sklearn.dummy yang mewakili kinerja terburuk yang mungkin.*1: Baselines adalah kumpulan algoritma pembelajaran mesin yang telah ditentukan sebelumnya, misalnya LightGBM dan mesin vektor dukungan, untuk menyelesaikan tugas regresi atau klasifikasi pada dataset yang disediakan
*2: Konfigurasi hiperparameter pipa menentukan pilihan komponen, misalnya algoritma target, bentuk jaringan saraf, di setiap langkah dan (yang menentukan pilihan komponen dalam setiap langkah dan hiperparameter yang sesuai.
pip install autoPyTorch
Auto-pytorch untuk peramalan deret waktu membutuhkan dependensi tambahan
pip install autoPyTorch[forecasting]
Kami merekomendasikan penggunaan Anaconda untuk mengembangkan sebagai berikut:
# Following commands assume the user is in a cloned directory of Auto-Pytorch
# We also need to initialize the automl_common repository as follows
# You can find more information about this here:
# https://github.com/automl/automl_common/
git submodule update --init --recursive
# Create the environment
conda create -n auto-pytorch python=3.8
conda activate auto-pytorch
conda install swig
python setup.py install
Demikian pula, untuk menginstal semua dependensi untuk auto-pytorch-timeseriesForecasting:
git submodule update --init --recursive
conda create -n auto-pytorch python=3.8
conda activate auto-pytorch
conda install swig
pip install -e[forecasting]
Pendeknya:
from autoPyTorch . api . tabular_classification import TabularClassificationTask
# data and metric imports
import sklearn . model_selection
import sklearn . datasets
import sklearn . metrics
X , y = sklearn . datasets . load_digits ( return_X_y = True )
X_train , X_test , y_train , y_test =
sklearn . model_selection . train_test_split ( X , y , random_state = 1 )
# initialise Auto-PyTorch api
api = TabularClassificationTask ()
# Search for an ensemble of machine learning algorithms
api . search (
X_train = X_train ,
y_train = y_train ,
X_test = X_test ,
y_test = y_test ,
optimize_metric = 'accuracy' ,
total_walltime_limit = 300 ,
func_eval_time_limit_secs = 50
)
# Calculate test accuracy
y_pred = api . predict ( X_test )
score = api . score ( y_pred , y_test )
print ( "Accuracy score" , score )Untuk tugas peramalan seri waktu
from autoPyTorch . api . time_series_forecasting import TimeSeriesForecastingTask
# data and metric imports
from sktime . datasets import load_longley
targets , features = load_longley ()
# define the forecasting horizon
forecasting_horizon = 3
# Dataset optimized by APT-TS can be a list of np.ndarray/ pd.DataFrame where each series represents an element in the
# list, or a single pd.DataFrame that records the series
# index information: to which series the timestep belongs? This id can be stored as the DataFrame's index or a separate
# column
# Within each series, we take the last forecasting_horizon as test targets. The items before that as training targets
# Normally the value to be forecasted should follow the training sets
y_train = [ targets [: - forecasting_horizon ]]
y_test = [ targets [ - forecasting_horizon :]]
# same for features. For uni-variant models, X_train, X_test can be omitted and set as None
X_train = [ features [: - forecasting_horizon ]]
# Here x_test indicates the 'known future features': they are the features known previously, features that are unknown
# could be replaced with NAN or zeros (which will not be used by our networks). If no feature is known beforehand,
# we could also omit X_test
known_future_features = list ( features . columns )
X_test = [ features [ - forecasting_horizon :]]
start_times = [ targets . index . to_timestamp ()[ 0 ]]
freq = '1Y'
# initialise Auto-PyTorch api
api = TimeSeriesForecastingTask ()
# Search for an ensemble of machine learning algorithms
api . search (
X_train = X_train ,
y_train = y_train ,
X_test = X_test ,
optimize_metric = 'mean_MAPE_forecasting' ,
n_prediction_steps = forecasting_horizon ,
memory_limit = 16 * 1024 , # Currently, forecasting models use much more memories
freq = freq ,
start_times = start_times ,
func_eval_time_limit_secs = 50 ,
total_walltime_limit = 60 ,
min_num_test_instances = 1000 , # proxy validation sets. This only works for the tasks with more than 1000 series
known_future_features = known_future_features ,
)
# our dataset could directly generate sequences for new datasets
test_sets = api . dataset . generate_test_seqs ()
# Calculate test accuracy
y_pred = api . predict ( test_sets )
score = api . score ( y_pred , y_test )
print ( "Forecasting score" , score ) Untuk lebih banyak contoh termasuk menyesuaikan ruang pencarian, parellising kode, dll, checkout folder examples
$ cd examples/ Kode untuk makalah ini tersedia di bawah examples/ensemble di cabang TPAMI.2021.3067763.
Jika Anda ingin berkontribusi pada auto-pytorch, klon repositori dan checkout cabang pengembangan kami saat ini
$ git checkout developmentProgram ini adalah perangkat lunak gratis: Anda dapat mendistribusikannya kembali dan/atau memodifikasinya di bawah ketentuan lisensi Apache 2.0 (silakan lihat file lisensi).
Program ini didistribusikan dengan harapan akan bermanfaat, tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari dapat diperjualbelikan atau kebugaran untuk tujuan tertentu.
Anda seharusnya menerima salinan Lisensi Apache 2.0 bersama dengan program ini (lihat file lisensi).
Silakan merujuk ke cabang TPAMI.2021.3067763 untuk mereproduksi kertas Auto-Pytorch Tabular: Metalet Metalning Multi-Fidelity untuk Autodl yang efisien dan kuat .
@article { zimmer-tpami21a ,
author = { Lucas Zimmer and Marius Lindauer and Frank Hutter } ,
title = { Auto-PyTorch Tabular: Multi-Fidelity MetaLearning for Efficient and Robust AutoDL } ,
journal = { IEEE Transactions on Pattern Analysis and Machine Intelligence } ,
year = { 2021 } ,
note = { also available under https://arxiv.org/abs/2006.13799 } ,
pages = { 3079 - 3090 }
} @incollection { mendoza-automlbook18a ,
author = { Hector Mendoza and Aaron Klein and Matthias Feurer and Jost Tobias Springenberg and Matthias Urban and Michael Burkart and Max Dippel and Marius Lindauer and Frank Hutter } ,
title = { Towards Automatically-Tuned Deep Neural Networks } ,
year = { 2018 } ,
month = dec,
editor = { Hutter, Frank and Kotthoff, Lars and Vanschoren, Joaquin } ,
booktitle = { AutoML: Methods, Sytems, Challenges } ,
publisher = { Springer } ,
chapter = { 7 } ,
pages = { 141--156 }
} @article { deng-ecml22 ,
author = { Difan Deng and Florian Karl and Frank Hutter and Bernd Bischl and Marius Lindauer } ,
title = { Efficient Automated Deep Learning for Time Series Forecasting } ,
year = { 2022 } ,
booktitle = { Machine Learning and Knowledge Discovery in Databases. Research Track
- European Conference, {ECML} {PKDD} 2022 } ,
url = { https://doi.org/10.48550/arXiv.2205.05511 } ,
}Auto-Pytorch dikembangkan oleh kelompok Automl dari University of Freiburg dan Hannover.