LightAutoml (Lama) es un marco AUTOML de SBER AI Lab.
Proporciona creación automática de modelos para las siguientes tareas:
La versión actual del paquete maneja conjuntos de datos que tienen muestras independientes en cada fila. Es decir, cada fila es un objeto con sus características y objetivo específicos . Los conjuntos de datos y secuencias multitacionales son un trabajo en progreso :)
Nota : Usamos la biblioteca AutoWoE para crear automáticamente modelos interpretables.
Autores : Alexander Ryzhkov, Anton Vakhrushev, Dmitry Simakov, Vasilii Bunakov, Rinchin Damdinov, Pavel Shvets, Alexander Kirilin.
La documentación de LightAutoml está disponible aquí, también puede generarla.
La tubería de GPU completa para LightAutoml actualmente disponible para las pruebas de desarrolladores (aún en progreso). El código y los tutoriales disponibles aquí
Para instalar el marco LAMA en su máquina desde Pypi, ejecute los siguientes comandos:
# 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]
Además, ejecute los siguientes comandos para habilitar la generación de informes 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#windowsVolver arriba
Resolvamos la popular competencia de Kaggle Titanic a continuación. Hay dos formas principales de resolver problemas de aprendizaje automático usando 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 )El marco Lighautoml tiene muchas piezas listas para usar y opciones de personalización extensas, para obtener más información, consulte la sección de recursos.
Volver arriba
Tutorial_1_basics.ipynb - Comience con LightAutoml en datos tabulares.Tutorial_2_WhiteBox_AutoWoE.ipynb - Creación de modelos interpretables.Tutorial_3_sql_data_source.ipynb - Muestra cómo usar LightAutomL Presets (variantes independientes y utilizadas por el tiempo) para resolver tareas ML en datos tabulares de la base de datos SQL en lugar de CSV.Tutorial_4_NLP_Interpretation.ipynb - Ejemplo del uso de TabularnlPautoml Preset, LimTextExplainer.Tutorial_5_uplift.ipynb : muestra cómo usar LightAutomL para una tarea de modelación de elevación.Tutorial_6_custom_pipeline.ipynb : muestra cómo crear su propia tubería a partir de bloques especificados: tuberías para la generación de características y selección de características, algoritmos ML, optimización de hiperparameter, etc.Tutorial_7_ICE_and_PDP_interpretation.ipynb : muestra cómo obtener la interpretación local y global de los resultados del modelo utilizando enfoques de ICE y PDP.Nota 1 : para la producción no tiene necesidad de usar Profiler (que aumenta el tiempo de trabajo y la consompión de la memoria), por lo que no lo encienda, está en estado fuera de lugar por defecto
Nota 2 : Para echar un vistazo a este informe después de la ejecución, comente la última línea de demostración con el comando de eliminación del informe.
LightAutoml Cursos de choque :
Guías de video :
Documentos :
Artículos sobre LightAutoml :
Volver arriba
Si está interesado en contribuir a LightAutoml, lea la guía de contribución para comenzar.
Volver arriba
Este proyecto tiene licencia bajo la licencia Apache, versión 2.0. Consulte el archivo de licencia para obtener más detalles.
Volver arriba
En primer lugar, necesitas instalar git y poesía.
# 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 )Volver arriba
Busque un consejo rápido en Slack Community o Telegram Group.
Abra informes de errores y solicitudes de funciones sobre temas de GitHub.