欢迎使用Cooka

Cooka是一个轻量级、可视化的自动机器学习工具,可以通过Web UI管理数据集和设计建模实验,并使用 DeepTablesHyperGBM 执行,从而自动进行特征工程、算法超参数调优和神经网络架构搜索。

_images/datacanvas_automl_toolkit.png

功能概览

通过Cooka提供的Web UI可以:

  • 添加、分析数据集

  • 设计建模实验

  • 查看实验过程和结果

  • 使用模型

  • 建模过程导出成Jupyter Notebook

Web页面截图:

_images/cooka_home_page.png _images/cooka_train.gif

建模支持的算法有:

  • XGBoost

  • LightGBM

  • Catboost

建模支持的神经网络有:

  • WideDeep

  • DeepFM

  • xDeepFM

  • AutoInt

  • DCN

  • FGCNN

  • FiBiNet

  • PNN

  • AFM

  • More nets

搜索支持的算法有:

支持由 scikit-learnfeaturetools 提供的特征工程:

  • 缩放
    • StandardScaler

    • MinMaxScaler

    • RobustScaler

    • MaxAbsScaler

    • Normalizer

  • 编码
    • LabelEncoder

    • OneHotEncoder

    • OrdinalEncoder

  • 离散化
    • KBinsDiscretizer

    • Binarizer

  • 降维
    • PCA

  • 特征衍生
    • featuretools

  • 缺失值填充
    • SimpleImputer

还以可以通过扩展搜索空间支持更多的特征工程方法和建模算法。

更多文档:

安装教程

你可以通过docker、pip、和源码来安装Cooka.

使用pip

Cooka需要 Python3.6 或者以上版本, 用pip安装命令 :

pip install --upgrade pip setuptools # (optional)
pip install cooka

启动Cooka的Web服务:

cooka server

打开浏览器访问 http://<your-ip>:8000 来使用Cooka. 整合jupyter notebook参考教程.

使用 Docker

使用Docker拉起一个Cooka 服务:

docker run -ti -p 8000:8000 -p 9001:9001 datacanvas/cooka:latest
# port 9001 is supervisor(which used to manage process) web ui, and the account/password is: user/123 
# port 8000 is cooka web ui

打开浏览器访问 http://<your-ip>:8000 来使用Cooka。

如果需要与jupyter notebook 整合,请指定运行在容器中的jupyter的url:

docker run -ti -p 8000:8000 -p 9001:9001 -p 8888:8888 -e COOKA_NOTEBOOK_PORTAL=http://<your_ip>:8888 datacanvas/cooka:latest
# port 8888 is jupyter notebook

您可也可以把数据存储在主机中:

docker run -v /path/to/cooka-config-dir:/root/.config/cooka -v /path/to/cooka-data:/root/cooka -ti -p 8000:8000 -p 9001:9001 datacanvas/cooka:latest
# Config file is at: /root/.config/cooka/cooka.py
# User data is at: /root/cooka

从源码安装

Cooka的Web页面使用reactjs开发,因此需要先安装node>=8.0.0 再安装yarn来构建Cooka:

npm install yarn -g

安装构建环境完成后来构建Cooka并安装::

pip install --upgrade pip setuptools
git clone git@github.com:DataCanvasIO/Cooka.git

cd Cooka
python setup.py buildjs  # build frontend
python setup.py install

操作手册

这个文档的目录是帮助您通过浏览器使用Cooka来完成:

  • 管理数据集

  • 预览数据集

  • 探查数据集

  • 设计运行实验

  • 使用实验成果

我们推荐使用Chrome浏览器v59以上版本访问Cooka。

数据集管理

Cooka允许用户上传或者导入服务器上的数据来进行建模训练,支持使用无列头的数据,在数据集列表页可以新增数据集:

_images/cooka_dataset_home.pngimg

导入

用户可以填写服务器上的数据文件地址,当系统确认文件正常符合建模要求后,单击分析,可以对数据集进行进一步的分析,在右侧信息栏可以显示分析的进度,以及简要信息,确认无误后点击创建。这种方式适用于文件比较大的情况,避免通过浏览器上传由于网络原因导致网络中断。

_images/cooka_dataset_import.pngimg

上传

用户可以通过浏览器将本地的文件上传到系统创建数据集:

_images/cooka_dataset_upload.pngimg

对数据分析时候还可以选择抽样策略,Cooka可以按比例、或者行数抽样来加快分析进度。

数据预览

通过数据预览可以直观地看到数据内容,当系统解析的文件格式与预期的文件格式不相符时候,还可以查看原始数据集。

_images/cooka_dataset_preview.pngimg

数据探查

创建数据集的过程中Cooka会自动分析特征的信息,包括不同类型特征的分布、每个特征的数据、数值分布、缺失值率等信息:

_images/cooka_dataset_insight.pngimg

当模型训练后Cooka还可以自动分析出特征列与目标列的线性相关性,来分析哪些特征更有用。对于类别型特征Cooka可以分析出众数和数值分布:

_images/cooka_dataset_categorical.pngimg

对于连续型特征可以分析其分布、极值等信息:

_images/cooka_dataset_continuous.pngimg

还有其离散性的分析:

_images/cooka_dataset_continuous_2.pngimg

对于日期类型数据,还可以分析出其在不同年、月、日、时的分布:

_images/cooka_dataset_datetime.pngimg

Cooka还会对质量较差以及原因进行标注:

_images/cooka_dataset_missing.pngimg

可能被标注的情况:

  1. 相关性过低

  2. 缺失值过多

  3. 常量列

  4. Id列(每一行的值都不同)

实验设计

用户可以设计建模实验来把现实生活中存在的问题定义成一个建模任务,在数据探查页面可以选择目标列设计建模实验:

_images/cooka_experiment_design.pngimg

在实验设计页面可以选择快速训练模式和性能训练模式。快速模式使用较为常用的搜索空间,并使用较少的搜索次数,性能模式使用较为全面的搜索空间和较多的搜索次数。快速模式在训练时间和模型效果之间做了均衡,性能模式则是牺牲时间来提高模型的效果,建模设计页面:

_images/cooka_experiment_design_1.pngimg

根据标签列系统将自动推断任务类型、如果二分类还将自动推荐正样本。Cooka提供了HyperGBM,和HyperDT 两种实验引擎,HyperGBM使用梯度提升树算法,HyperDT使用神经网络算法,用户可以自行选择;还可以设置数据拆分比例。如果数据是按日期有序的,设置日期列后,Cooka会使用较旧的数据用来训练模型,较新的数据用来测试模型效果。

_images/cooka_experiment_design_2.pngimg

实验列表

在实验设计页面确认训练之后, 在实验列表页面可以监控训练任务运行的情况,Cooka会监控任务运行状态,比如训练进度、模型得分:

_images/cooka_experiment_list.pngimg

Cooka支持提前停止算法,当模型的性能无法提升会提前终止训练过程来节省计算资源。

模型评估

对于已经完成的实验还可以查看其运行结果,软件会对模型的效果进行评估,比如准确率,或者误差分析,通过比较直观的方式来评价模型的优劣:

_images/cooka_experiment_evaluation.pngimg

对于二分类模型还会绘制Roc曲线:

_images/cooka_experiment_roc.pngimg

模型训练的过程中,会动态显示每次搜索的参数以及其得分表现,其中多个y轴来表示训练所使用的超参数,线条的颜色来表示模型的分数,颜色越深代表的得分越高,可以比较直观地显示优质参数:

_images/cooka_experiment_optimaize.pngimg

模型预测

训练成功的模型会被保存下来,用户可以提交新的数据来使用模型,在模型预测页面,可以通过浏览器上传数据,Cooka预测过程中会在页面上展示预测进度:

_images/cooka_experiment_predict.pngimg

结果可以在预测结束后下载到本地。

导出Notebook

模型还可以导出Jupyer Notebook,用户可以以API编程的方式进一步优化模型:

_images/cooka_experiment_notebook_1.pngimg

导出后的Notebook:

_images/cooka_experiment_notebook_2.pngimg

Notebook中会包含对预测结果的解释:

_images/cooka_experiment_notebook_3.pngimg

以及特征重要性:

_images/cooka_experiment_notebook_4.pngimg

如果是二分类任务,模型的roc曲线和混淆矩阵也会展示。

Configuration

配置文件

Cooka 提供了一个命令来生成配置文件模板:

❯ cooka generate-config

# Configuration file for cooka

# HTTP 服务端口
# c.CookaApp.server_port = 8000

# 语言,可以设置为 zh_CN, en_US, auto; 如果是auto将使用浏览器中到语言信息
# c.CookaApp.language = "auto"

# Cooka的数据目录
# c.CookaApp.data_directory = "~/cooka"

# Jupyter 的访问地址,Jupyter的工作目录应与Cooka的数据目录一致
# c.CookaApp.notebook_portal = "http://localhost:8888"

# 不同任务类型的默认优化指标
# c.CookaApp.optimize_metric = {
#     "multi_classification_optimize": "accuracy",
#     "binary_classification": "auc",
#     "regression": "rmse"
# }

# 不同训练模式的trails个数
# c.CookaApp.max_trials = {
#     "performance": 50,
#     "quick": 10,
#     "minimal": 1
# }

把配置模板写入到配置文件~/.config/cooka/cooka.py中:

mkdir -p ~/.config/cooka/
cooka generate-config > ~/.config/cooka/cooka.py

与Jupyter Notebook整合

1. 安装依赖

与Jupyter Notebook整合需要以下python模块:

  • shap: 用来解释模型

  • jupyterlab: notebook 服务

  • matplotlib: 在notebook中绘图

您可以参照这个文档来安装shap。

用pip来安装jupyterlab:

pip install jupyterlab

matplotlib依赖系统包graphviz 以在centos 7上安装它为例:

sudo yum install graphviz

接着用pip安装matplotlib:

pip install matplotlib

2. 启动Jupyter Notebook

需要在Cooka的工作目录启动jupyterab,默认在~/cooka:

cd ~/cooka
jupyter-lab --ip=0.0.0.0 --no-browser --allow-root --NotebookApp.token= 

3. 配置Cooka

需要在Cooka的配置~/.config/cooka/cooka.py中来配置jupyter notebook的访问地址::

c.CookaApp.notebook_portal = "http://<change_to_you_jupyter_ip>:8888"

启动Cooka的Web服务:

cooka server

然后试试在实验列表中选择实验导出成Notebook吧。

Release Note

Version 0.1.2

实验设计 - 使用设置随机种子来拆分训练集和测试集

实验列表 - 超参数图表中,参数的折线颜色与reward关联(修复bug)

** 其他 ** - Update hypergbm to 0.2.2

Version 0.1.1

这个版本包含以下新特性:

数据集管理

  • 搜索

  • 删除

  • 上传、导入csv
    • 分析抽样支持按行数、按比例、和使用全量数据

    • 支持无列头数据集文件

    • 自动推断特征类型(连续、离散、日期)

数据集预览

  • 查看原始数据集

  • 数据表格滚动加载

数据集探查

  • 特征类型分布

  • 特征的数据类型、特征类型、缺失值、不同值、线性相关分析

  • Id列、常量列、过多缺失值列识别

  • 特征检索

  • 日期类型特征支持
    • 按年、月、日、时、星期分布

  • 类别特征
    • 值分布

    • 众数

  • 连续特征
    • 区间分布

    • 值分布

    • 最大值,最小值,中位数,均值,标准差

实验设计

  • 自动推荐建模选项

  • HyperGBM、HyperDT实验引擎

  • 快速、性能训练模式

  • Train-Validation-Holdout数据拆分模式

  • 按日期顺序拆分数据

  • 支持任务类型
    • 二分类

    • 多分类

    • 回归

实验列表

  • 训练进度、剩余时间评估

  • 混淆矩阵、ROC曲线(二分类)

  • 评估指标
    • 二分类: Accuracy, F1, Fbeta, Precision, Recall, AUC, Log Loss

    • 多分类: Accuracy, F1, Fbeta, Precision, Recall, Log Loss

    • 回归: EVS, MAE, MSE, RMSE, MSLE, R2, MedianAE

  • 查看训练日志、训练源码

  • 导出成Notebook文件

  • 优化参数可视化

  • 批量预测

DataCanvas

_images/dc_logo_1.png

Cooka is an open source project created by DataCanvas .