LightAutoml (LAMA) est un framework Automl de Sber AI Lab.
Il fournit une création de modèle automatique pour les tâches suivantes:
La version actuelle du package gère les ensembles de données qui ont des échantillons indépendants dans chaque ligne. C'est-à-dire que chaque ligne est un objet avec ses fonctionnalités spécifiques et sa cible . Des ensembles de données et des séquences multiples sont un travail en cours :)
Remarque : Nous utilisons la bibliothèque AutoWoE pour créer automatiquement des modèles interprétables.
Auteurs : Alexander Ryzhkov, Anton Vakhrushev, Dmitry Simakov, Vasilii Bunakov, Rinchin Damdinov, Pavel Shvets, Alexander Kirilin.
La documentation de LightAutoml est disponible ici, vous pouvez également la générer.
Pipeline GPU complet pour LightAutoml actuellement disponible pour les tests des développeurs (toujours en cours). Le code et les tutoriels disponibles ici
Pour installer Lama Framework sur votre machine à partir de PYPI, exécutez les commandes suivantes:
# Install base functionality:
pip install -U lightautoml
# For partial installation use corresponding option.
# Extra dependecies: [nlp, cv, report]
# Or you can use 'all' to install everything
pip install -U lightautoml[nlp]
En plus, exécutez les commandes suivantes pour activer la génération de rapport PDF:
# MacOS
brew install cairo pango gdk-pixbuf libffi
# Debian / Ubuntu
sudo apt-get install build-essential libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
# Fedora
sudo yum install redhat-rpm-config libffi-devel cairo pango gdk-pixbuf2
# Windows
# follow this tutorial https://weasyprint.readthedocs.io/en/stable/install.html#windowsRetour en haut
Résolvons la populaire compétition Kaggle Titanic ci-dessous. Il existe deux façons principales de résoudre les problèmes d'apprentissage automatique à l'aide de LightAutoml:
import pandas as pd
from sklearn . metrics import f1_score
from lightautoml . automl . presets . tabular_presets import TabularAutoML
from lightautoml . tasks import Task
df_train = pd . read_csv ( '../input/titanic/train.csv' )
df_test = pd . read_csv ( '../input/titanic/test.csv' )
automl = TabularAutoML (
task = Task (
name = 'binary' ,
metric = lambda y_true , y_pred : f1_score ( y_true , ( y_pred > 0.5 ) * 1 ))
)
oof_pred = automl . fit_predict (
df_train ,
roles = { 'target' : 'Survived' , 'drop' : [ 'PassengerId' ]}
)
test_pred = automl . predict ( df_test )
pd . DataFrame ({
'PassengerId' : df_test . PassengerId ,
'Survived' : ( test_pred . data [:, 0 ] > 0.5 ) * 1
}). to_csv ( 'submit.csv' , index = False )Lighautoml Framework propose de nombreuses pièces prêtes à l'emploi et des options de personnalisation approfondies, pour en savoir plus sur la section Ressources.
Retour en haut
Tutorial_1_basics.ipynb - Commencez avec LightAutoml sur les données tabulaires.Tutorial_2_WhiteBox_AutoWoE.ipynb - Création de modèles interprétables.Tutorial_3_sql_data_source.ipynb - montre comment utiliser des préréglages LightAutoml (variantes autonomes et utilisées) pour résoudre les tâches ML sur les données tabulaires de la base de données SQL au lieu de CSV.Tutorial_4_NLP_Interpretation.ipynb - Exemple d'utilisation de Tabularnlpautoml Preset, limetextexplainer.Tutorial_5_uplift.ipynb - montre comment utiliser LightAutoml pour une tâche de modélisation de soulèvement.Tutorial_6_custom_pipeline.ipynb - montre comment créer votre propre pipeline à partir de blocs spécifiés: pipelines pour la génération de fonctionnalités et la sélection des fonctionnalités, les algorithmes ML, l'optimisation de l'hyperparamètre, etc.Tutorial_7_ICE_and_PDP_interpretation.ipynb - montre comment obtenir une interprétation locale et globale des résultats du modèle à l'aide d'approches ICE et PDP.Remarque 1 : Pour la production, vous n'avez pas besoin d'utiliser Profiler (qui augmente le temps de travail et la consommer de la mémoire), alors ne l'allumez pas - il est en dehors de l'état par défaut
Remarque 2 : Pour jeter un œil à ce rapport après la course, veuillez commenter la dernière ligne de démo avec la commande de suppression du rapport.
Cours de crash de LightAutoml :
Guides vidéo :
Documents :
Articles sur LightAutoml :
Retour en haut
Si vous souhaitez contribuer à LightAutoml, veuillez lire le guide de contribution pour commencer.
Retour en haut
Ce projet est sous licence Apache, version 2.0. Voir le fichier de licence pour plus de détails.
Retour en haut
Tout d'abord, vous avez besoin d'installer Git et la poésie.
# Load LAMA source code
git clone https://github.com/sberbank-ai-lab/LightAutoML.git
cd LightAutoML/
# !!!Choose only one item!!!
# 1. Global installation: Don't create virtual environment
poetry config virtualenvs.create false --local
# 2. Recommended: Create virtual environment inside your project directory
poetry config virtualenvs.in-project true
# For more information read poetry docs
# Install LAMA
poetry lock
poetry install import pandas as pd
from sklearn . metrics import f1_score
from lightautoml . automl . presets . tabular_presets import TabularAutoML
from lightautoml . tasks import Task
df_train = pd . read_csv ( '../input/titanic/train.csv' )
df_test = pd . read_csv ( '../input/titanic/test.csv' )
# define that machine learning problem is binary classification
task = Task ( "binary" )
reader = PandasToPandasReader ( task , cv = N_FOLDS , random_state = RANDOM_STATE )
# create a feature selector
model0 = BoostLGBM (
default_params = { 'learning_rate' : 0.05 , 'num_leaves' : 64 ,
'seed' : 42 , 'num_threads' : N_THREADS }
)
pipe0 = LGBSimpleFeatures ()
mbie = ModelBasedImportanceEstimator ()
selector = ImportanceCutoffSelector ( pipe0 , model0 , mbie , cutoff = 0 )
# build first level pipeline for AutoML
pipe = LGBSimpleFeatures ()
# stop after 20 iterations or after 30 seconds
params_tuner1 = OptunaTuner ( n_trials = 20 , timeout = 30 )
model1 = BoostLGBM (
default_params = { 'learning_rate' : 0.05 , 'num_leaves' : 128 ,
'seed' : 1 , 'num_threads' : N_THREADS }
)
model2 = BoostLGBM (
default_params = { 'learning_rate' : 0.025 , 'num_leaves' : 64 ,
'seed' : 2 , 'num_threads' : N_THREADS }
)
pipeline_lvl1 = MLPipeline ([
( model1 , params_tuner1 ),
model2
], pre_selection = selector , features_pipeline = pipe , post_selection = None )
# build second level pipeline for AutoML
pipe1 = LGBSimpleFeatures ()
model = BoostLGBM (
default_params = { 'learning_rate' : 0.05 , 'num_leaves' : 64 ,
'max_bin' : 1024 , 'seed' : 3 , 'num_threads' : N_THREADS },
freeze_defaults = True
)
pipeline_lvl2 = MLPipeline ([ model ], pre_selection = None , features_pipeline = pipe1 ,
post_selection = None )
# build AutoML pipeline
automl = AutoML ( reader , [
[ pipeline_lvl1 ],
[ pipeline_lvl2 ],
], skip_conn = False )
# train AutoML and get predictions
oof_pred = automl . fit_predict ( df_train , roles = { 'target' : 'Survived' , 'drop' : [ 'PassengerId' ]})
test_pred = automl . predict ( df_test )
pd . DataFrame ({
'PassengerId' : df_test . PassengerId ,
'Survived' : ( test_pred . data [:, 0 ] > 0.5 ) * 1
}). to_csv ( 'submit.csv' , index = False )Retour en haut
Cherchez un avis rapide sur Slack Community ou Telegram Group.
Ouvrez les rapports de bogues et les demandes de fonctionnalités sur les problèmes de GitHub.