用于自动 ML 模型创建 (AutoML) 的快速且可定制的框架
项目描述
LightAutoML - 自动模型创建框架
LightAutoML (LAMA) 是一个 AutoML 框架,它为以下任务提供自动模型创建:
- 二元分类
- 多类分类
- 回归
当前版本的包处理每行中具有独立样本的数据集。即每一行都是一个具有其特定特征和目标的对象。多表数据集和序列正在进行中:)
注意:我们使用AutoWoE库来自动创建可解释的模型。
作者:Alexander Ryzhkov 、Anton Vakhrushev、Dmitry Simakov、Vasilii Bunakov、Rinchin Damdinov、Alexander Kirilin、Pavel Shvets。
LightAutoML 的文档可在此处获得,您也可以生成它。
(新功能)GPU 和 Spark 管道
LightAutoML 的完整 GPU 和 Spark 管道目前可供开发人员测试(仍在进行中)。代码和教程:
目录
安装
要从 PyPI 在您的机器上安装 LAMA 框架,请执行以下命令:
# 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]
另外,运行以下命令以启用 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#windows
快速浏览
让我们解决下面流行的 Kaggle Titanic 竞赛。使用 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)
LightAutoML 框架有很多现成的部件和广泛的自定义选项,要了解更多信息,请查看资源部分。
资源
LightAutoML 使用的 Kaggle 内核示例:
- 表格游乐场系列 2021 年 4 月竞赛解决方案
- 泰坦尼克号竞赛解决方案(80% 准确率)
- Titanic 12 行代码竞赛解决方案(78% 准确率)
- 房价竞争解决方案
- 自然语言处理与灾难推文解决方案
- 表格游乐场系列 2021 年 3 月竞赛解决方案
- 表格游乐场系列 2021 年 2 月竞赛解决方案
- 可解释的 WhiteBox 解决方案
- 现有的自定义 ML 管道元素
Google Colab 教程和其他示例:
Tutorial_1_basics.ipynb- 开始在表格数据上使用 LightAutoML。Tutorial_2_WhiteBox_AutoWoE.ipynb- 创建可解释的模型。Tutorial_3_sql_data_source.ipynb- 展示了如何使用 LightAutoML 预设(独立和使用时间的变体)来解决来自 SQL 数据库而不是 CSV 的表格数据的 ML 任务。Tutorial_4_NLP_Interpretation.ipynb- 使用 TabularNLPAutoML 预设 LimeTextExplainer 的示例。Tutorial_5_uplift.ipynb- 展示如何使用 LightAutoML 进行提升建模任务。Tutorial_6_custom_pipeline.ipynb- 展示如何从指定的块创建自己的管道:用于特征生成和特征选择的管道、ML 算法、超参数优化等。Tutorial_7_ICE_and_PDP_interpretation.ipynb- 展示如何使用 ICE 和 PDP 方法获得模型结果的本地和全局解释。Tutorial_8_CV_preset.ipynb- 在 CV 多类分类任务中使用 TabularCVAutoML 预设的示例。
注意 1:对于生产,您不需要使用分析器(这会增加工作时间和内存消耗),所以请不要打开它 - 默认情况下处于关闭状态
注意2:运行后查看该报告,请使用报告删除命令注释demo的最后一行。
课程、视频和论文
-
LightAutoML 速成课程:
-
视频指南:
- (俄语)Sberloga 社区的 LightAutoML 网络研讨会(Alexander Ryzhkov ,Dmitry Simakov)
- (俄语)Kaggle Kernels 中的 LightAutoML 动手教程(Alexander Ryzhkov)
- (英文)使用 LightAutoML 进行自动化机器学习:理论与实践( Alexander Ryzhkov )
- (英文) LightAutoML 框架概述、基准和业务优势( Alexander Ryzhkov )
- (英文) LightAutoML 实用指南 - ML 管道预设概述( Dmitry Simakov )
-
论文:
- Anton Vakhrushev、Alexander Ryzhkov、Dmitry Simakov、Rinchin Damdinov、Maxim Savchenko、Alexander Tuzhilin “LightAutoML:大型金融服务生态系统的 AutoML 解决方案”。arXiv:2109.01528,2021。
-
关于 LightAutoML 的文章:
为 LightAutoML 做贡献
如果您有兴趣为 LightAutoML 做出贡献,请阅读贡献指南以开始。
执照
该项目根据 Apache 许可证 2.0 版获得许可。有关详细信息,请参阅许可证文件。
对于开发人员
从源代码安装
# Load LAMA source code
git clone https://github.com/AILab-MLTools/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)
支持和功能请求
在电报群寻求及时的建议。
打开关于 GitHub问题的错误报告和功能请求。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
LightAutoML -0.3.7.1.tar.gz 的哈希值
| 算法 | 哈希摘要 |
|---|