前言

最近在看AutoML,业界在 automl 上的进展还是很不错的,个人比较看好这个方向,所以做了一些了解:

  • Google: Cloud AutoML, Google’s Prediction API
  • Microsoft: Custom Vision, Azure Machine Learning
  • Amazon: Amazon Machine Learning
  • BaiDu:EasyE
  • Alibaba Group:PAI
  • others: BigML.com, Wise.io, SkyTree.com, RapidMiner.com, Dato.com, Prediction.io, DataRobot.com,H2O.AI

github上的开源项目也是有不少的,我所看到的包括:

  • tpot

    • 多项式特征组合
    • 无监督特征筛选
    • 集成分类
  • auto_ml
    • 集成分类
    • 可选深度模型前置
  • auto_sklearn
    • 特征清洗
    • 特征筛选
    • 元学习前置
    • 超参数自动学习
    • 自动集成分类

auto_sklearn

上述开源项目中,我主要看了auto_sklearn,对他的架构设计,算法设计还是很感兴趣的,论文在这边Efficient and Robust Automated Machine Learning:

  • meta-learning

    • 这边auto_sklearn已经内置诺干个参数选配好了的模型(可能是手动调参数,也有可能是也通过贝叶斯优化的方法在小样本上选择),我们实际去用的时候是根据元特征相似度进行选择即可

      • 《Initializing Bayesian Hyperparameter Optimization via Meta-Learning》指出可以用L1和特征协方差来筛选,聪明的你一定发现,对离散值真不友好
    • 元特征就是站在常规数据之上的汇总信息:
  • 常规 ML framework 如下图灰色部分:导入数据-数据清洗-特征工程-分类器-输出预测值

    • 这边都是常规操作,我扩充了他里面的各种方法,总结在数据预处理
  • Bayesian optimizer

    • 这个等下细讲,是这个论文中最有价值的地方之一
  • build-ensemble

    • 模型集成

Bayesian optimizer

通常我们在参数尝试的时候都是依赖如下:

  • 暴力法

    • Grid Search 网格搜索/穷举搜索
    • Random Search 随机搜索
  • Bayesian Optimization
    • 能利用先验知识高效地调节超参数,通过减少计算任务而加速寻找最优参数的进程。不依赖人为猜测所需的样本量为多少,优化技术基于随机性,概率分布
  • Neural Network
    • 用深度神经网络代替常规配置,通过线性+非线性变化拟合任何曲线

Bayesian optimizer在实际被应用的过程中使用的较多,是实现自动参数选择的核心,让我们来仔细看下,伪代码:

  1. 构建超参数与优化函数的关系(代理函数):比如gbdt中的树数量与output的AUC之间的函数f,这一般都是模型,黑盒的
  2. 随机初始化原始数据集合
  3. 通过高斯过程/随机森林等对代理函数进行建模
  4. 设计acquisition function,(EI,UCB,TS等),获取最大acquisition function对于假设数据集作为新增数据集
  5. 把新增数据集扩充到2中的数据集中重复更新整个过程

上述代码实现,非常简单,完整代码自取GP_Bayes_Optimizaion

init

init_xs = np.random.uniform(bound_dict.get("x", [0, 0])[0],bound_dict.get("x", [1, 1])[1],size=self.init_point_number)
init_ys = np.random.uniform(bound_dict.get("y", [0, 0])[0], bound_dict.get("y", [1, 1])[1],size=self.init_point_number)
init_points = zip(init_xs, init_ys)
init_labels = map(self.target_loss_function, init_xs)
train_features = np.asarray(list(init_points))
train_negative_loss = np.asarray(list(init_labels))
current_max_negative_loss = max(train_negative_loss)

Acquision function computes the max value

x_tries = np.random.uniform(bounds[:, 0], bounds[:, 1], size=(100000, bounds.shape[0]))
mean, std = gp.predict(x_tries, return_std=True)
acquisition_fucntion_values = self.Acquision_function(mean, std)
x_max = x_tries[np.argmax(acquisition_fucntion_values)]
max_acquision_fucntion_value = max(acquisition_fucntion_values)
x_max = np.clip(x_max, bounds[:, 0], bounds[:, 1])

因为我写的是简单的高斯过程这种形式,很多人对高斯过程为什么能拟合出方差均值不清楚,我手写了一些推导过程高斯过程回归。

Bayesian optimizer来解决这类问题,有很多的优点的:

  • 利用先验知识高效地调节超参数,每个试验不独立,有点boost味道
  • 通过高效的猜测而加速寻找最优参数的进程
  • 数据要求低,在目标函数未知且计算复杂度高的情况下极其强大
  • 泛化性/鲁棒性好,不易陷入局部最优

其他优秀资料

  • Efficient and Robust Automated Machine Learning
  • User Modeling and Hierarchical Reinforcement Learning
  • Practical Bayesian Optimization of Machine Learning Algorithms
  • Initializing Bayesian Hyperparameter Optimization via Meta-Learning
  • A Conceptual Explanation of Bayesian Hyperparameter Optimization for Machine Learning
  • Automated Machine Learning Hyperparameter Tuning in Python

auto-sklearn快速体验

>>> import autosklearn.classification
>>> import sklearn.model_selection
>>> import sklearn.datasets
>>> import sklearn.metrics
>>> X, y = sklearn.datasets.load_digits(return_X_y=True)
>>> X_train, X_test, y_train, y_test = \sklearn.model_selection.train_test_split(X, y, random_state=1)
>>> automl = autosklearn.classification.AutoSklearnClassifier()
>>> automl.fit(X_train, y_train)
>>> y_hat = automl.predict(X_test)
>>> print("Accuracy score", sklearn.metrics.accuracy_score(y_test, y_hat))

欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码疑问都欢迎通过邮箱发消息给我。

Auto-Machine-Learning初探相关推荐

  1. Auto Machine Learning笔记 - Bayesian Optimization

    原文链接:Auto Machine Learning笔记 - Bayesian Optimization 优化器是机器学习中很重要的一个环节.当确定损失函数时,你需要一个优化器使损失函数的参数能够快速 ...

  2. Auto Machine Learning 自动化机器学习笔记

    ⭐适读人群:有机器学习算法基础 1. auto-sklearn 能 auto 到什么地步? 在机器学习中的分类模型中: 常规 ML framework 如下图灰色部分:导入数据-数据清洗-特征工程-分 ...

  3. Machine Learning | (12) 非监督学习-k-means

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  4. Machine Learning | (10) 回归算法-岭回归

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  5. Machine Learning | (3) Scikit-learn的分类器算法-k-近邻

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  6. 机器学习案例学习【每周一例】之 Titanic: Machine Learning from Disaster

     下面一文章就总结几点关键: 1.要学会观察,尤其是输入数据的特征提取时,看各输入数据和输出的关系,用绘图看! 2.训练后,看测试数据和训练数据误差,确定是否过拟合还是欠拟合: 3.欠拟合的话,说明模 ...

  7. 机器学习(Machine Learning)深入学习(Deep Learning)资料

    FROM:http://news.cnblogs.com/n/504467/ <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章, ...

  8. 吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

    作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...

  9. Machine Learning from Start to Finish with Scikit-Learn

    2019独角兽企业重金招聘Python工程师标准>>> Machine Learning from Start to Finish with Scikit-Learn This no ...

  10. Machine Learning | (1) Scikit-learn与特征工程

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Scikit-learn与特征工程 "数据决定了机器学习 ...

最新文章

  1. 阿里云Windows服务器重启后无法远程桌面连接,大量注册表在检测
  2. 黑客可以让协作机器人成为杀手
  3. linux普通文件的特点是,linux系统文件系统上有哪些特点
  4. 基于GraphHopper搭建离线路径规划服务并可视化
  5. mysql计算某一天所在周或月的第一天和最后一天
  6. Oracle创建表,并添加默认值和备注
  7. 这份网约车安全乘车指南,请务必收下!
  8. CVPR2021 Oral《Seeing Out of the Box》北科大中山大学微软提出端到端视觉语言表征预训练方法...
  9. Hibernate二级缓存 --Hibernate框架
  10. 云服务 华为p10 短信_苹果、小米、华为,手机云服务哪家强?
  11. 如何检测java安装成功_如何检查jdk是否安装成功
  12. heeds matlab,Isight FD4-CAE优化软件 与HEEDS对比
  13. java扫雷游戏课程设计素材_练习:仿Windows扫雷游戏
  14. 3d显卡2003测试软件,3DMark 2003
  15. 京东云服务器搭建php开发环境
  16. 使用高清直播编码器进行低延时直播的方法
  17. 计算机毕业设计Java诚越园区垃圾分类信息科普系统(源码+系统+mysql数据库+lw文档)
  18. matplotlib绘制3D图像
  19. 融入动画技术的粒子效果文字动画交互应用
  20. MT4/MQL4入门到精通EA教程第六课-MQL语言常用函数(六)-常用订单功能函数

热门文章

  1. ISAIR2022征稿【中国・上海​, 2022年10月21-23日】
  2. CSL-YOLO | 超越Tiny-YOLO V4,全新设计轻量化YOLO模型实现边缘实时检测!!!
  3. 公开处刑:PapersWithCode上线“论文复现报告”,遏制耍流氓行为!
  4. 一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源
  5. 一文详解手眼标定之九点法
  6. 一文览尽ToF深度相机技术
  7. 一分钟详解Git使用技巧(一)
  8. OpenCV java 图像基本处理-模糊 (8)
  9. list存储引用类型注意的问题
  10. ICLR 2020 | ELECTRA:新型文本预训练模型