Pycaret—理想的AUTOML平台

star2017 1年前 ⋅ 4898 阅读

前言

对于最终客户来说,自动化的机器学习工具(AUTO ML)无疑是很有吸引力的。就像iPhone一样,很多app无需设置参数,都是傻瓜式的操作。​虽然有一些制约,但是多数情况下这样的用户体验却是很好。

今天我们推荐的pycaret 便是致力于自动化机器学习的python 库,它还无法面向最终用户,因为它没有GUI。​但是低代码的优势,让它离这个目标很近,相信很多网页开发者可以很轻易地以pycaret为核心,开发出面向最终用户的机器学习平台。今年8月份,pycaret更新到2.0 版本,新增加了AUTO ML 应用,以及集成了ML FLOW来管理机器学习模型的“生产过程”。

极简产品体验

pycaret从安装到使用,让人察觉不出这是一款重量级的软件。

  • 安装pycaret

pycaret安装很简单,使用pip即可。如果需要解释模型,需要安装SHAP。

pip install pycaret
pip install shap 
  • 入门pycaret

使用pycaret,最好的环境是Jupyter,但是我习惯了pycharm,所以以下测试都是在pycharm中完成。

​低代码意味着几乎是会用python就得到足够优秀的模型。以下不到十行代码就完成模型的完整部署,而且每个函数几乎都是只需一个位置参数。

Pycaret -- 理想的AUTO ML 平台
  1. 读取数据–> pandas 读取即可
  2. 数据预处理–> setup 函数搞定
  3. 创建模型–>create_model 函数搞定
  4. 验证/预测模型–>predict_model 函数
  5. 查看结果–>plot_model
  6. 最终确认模型–>finalize_model 函数
  7. 解释模型–>interpret_model 函数
  8. 查看试验过程–>get_logs
from pycaret.classification import setup, get_logs,compare_models, create_model, predict_model, tune_model, finalize_model, plot_model, interpret_model
import pandas as pd
file = 'data/HR_Data_Predict Employee Turnover.csv'
raw_df = pd.read_csv(file)
expri_1 = setup(raw_df, target='left',log_experiment= True)  # minimum parameters
lightgbm_model = create_model('lightgbm')
predict_model(lightgbm_model)
plot_model(lightgbm_model)
finalize_model(lightgbm_model)
interpret_model(lightgbm_model)
logs = get_logs(save=True)
print(logs)

不得不说,虽然是开源,软件有着工业级别的成熟度。以上是员工离职率数据集的分析过程,所有的参数都是默认参数,只是采用lightgbm模型进行建模,没有使用额外的模型集成或者单个模型调优。

  • plot_model(lightgbm_model),模型的AUC达到了0.99
Pycaret -- 理想的AUTO ML 平台
  • plot_model(lightgbm_model,’feature’),可以查看模型的特征重要度。
Pycaret -- 理想的AUTO ML 平台
  • plot_model(lightgbm_model,’confusion_matrix’),用于查看confusion_matrix。
Pycaret -- 理想的AUTO ML 平台
  • plot_model(lightgbm_model,‘learning’),可以查看学习曲线。
Pycaret -- 理想的AUTO ML 平台
  • interpret_model(lightgbm_model),用于可视化解释模型。
Pycaret -- 理想的AUTO ML 平台

绝佳的开源教程

很多人在学习建模时都想找优秀的教程(含代码)来参考,pycaret可以算是绝佳的开源教程。因为它包含了建模所有必须环节以及支持环节。通过学习和分析pycaret的处理流程,可以学习数据处理和建模的逻辑​,因为pycaret已经总结出来很多优秀的”套路​“

Pycaret -- 理想的AUTO ML 平台

对于建模来说,很多情况我们会花大量的时间(大于50%的项目时间)来进行数据的清理,特征选择,特征工程的等预处理操作。pycaret仅仅用了一个setup函数便囊括了。在分析了源码的情况下,我发现pycaret的预处理套路真的“大而全”。

Pycaret -- 理想的AUTO ML 平台

比如特征工程这个环节,特征交叉,多项式特征,基于统计的特征等方法都在其中。

特征选择也支持多种方法,比如基于特征重要性,基于主成分分析,基于低方差阈值等方法。点击大图可以查看所有预处理的流程,以及在setup中对应的参数,也就是该图是setup的cheat sheet

Pycaret -- 理想的AUTO ML 平台

除了预处理方法(套路)“大而全”,代码的编写方法也值得学习。以下代码选自https://github.com/pycaret/pycaret/tree/master/pycaret。可以看到作者采用Pipeline来管理繁多的预处理流程,使得预处理流程一目了然,也方便后续扩展和维护

pipe = Pipeline([
                 ('dtypes',dtypes),
                 ('imputer',imputer),
                 ('new_levels1',new_levels1), # specifically used for ordinal, so that if a new level comes in a feature that was marked ordinal can be handled 
                 ('ordinal',ordinal),
                 ('cardinality',cardinality),
                 ('znz',znz),
                 ('club_R_L',club_R_L),
                 ('new_levels',new_levels),
                 ('feature_time',feature_time),
                 ('group',group),
                 ('nonliner',nonliner),
                 ('scaling',scaling),
                 ('P_transform',P_transform),
                 ('pt_target',pt_target),
                 ('binn',binn),
                 ('rem_outliers',rem_outliers),
                 ('cluster_all',cluster_all),
                 ('dummy',dummy),
                 ('fix_perfect',fix_perfect),
                 ('clean_names',clean_names),
                 ('feature_select',feature_select),
                 ('fix_multi',fix_multi),
                 ('dfs',dfs),
                 ('pca',pca)
                 ])

​不仅是预处理环节,其他环节的处理方法都很齐全,比如,模型集成方式。这里我总结了代码中已经实现的集成方式,常见的bagging,boosting,blending,以及stacking都囊括其中。同样的,调用方式是极其简单。

bagged_dt = ensemble_model(dt, method = 'Bagging')  # bagging
boosted_dt = ensemble_model(dt, method = 'Boosting', n_estimators = 100) #boost
blender_specific = blend_models(estimator_list = [dt,rf,adaboost], method = 'soft') #blending
stacker = stack_models(estimator_list = [ridge,lda,gbc], meta_model = xgboost) # stacking
Pycaret -- 理想的AUTO ML 平台

完整的模型生命周期管理

ML Flow 是用于管理机器学习模型生命周期的软件平台,它不仅仅支持python语言的模型管理,还支持其他多种语言的模型管理,比如R。这个软件平台包含多个核心模块,其中被调用最多的是ML flow tracking 模块。Pycaret 便集成了ML flow tracking 模块

​当在terminal中运行mlflow ui时,系统会出现模型管理的ML FlowGUI。这里会列出该experiment(实验)中每一次运行的参数,metrics,结果,以及最后的模型,当然,你可以选择保存每次实验中的绘图(plot)。

Pycaret -- 理想的AUTO ML 平台

点击每个成功的运行,可以看到所有详细的参数。你也可以对比某些运行(runs)的参数​以及结果。

Pycaret -- 理想的AUTO ML 平台

总结

pycaret无论是从使用角度,设计角度,以及可扩展角度,在我看来都是很优秀的。本文仅仅是介绍了它的使用,以及通过源码和功能分析,简单发现它的部分优势。

后续我们会用pycaret去挑战一些更复杂的数据集来进一步验证它的效果,希望能​不负所托。​

本文来自知乎,观点不代表一起大数据-技术文章心得立场,如若转载,请注明出处:https://zhuanlan.zhihu.com/p/213360208

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: