AutoML领域的一把利器—HyperGBM
文章目录
前言
之前因为工作上的需求,需要做一个多分类模型来处理一个网站上的用户多分类问题,无奈自己当时对这个领域了解不多,不过也没办法,工作来了就得做,所以就一步步的开始从数据预处理,特征分析,筛选,模型选择,模型调参优化进行尝试,好在最终也算是完成了工作(一个字,累啊)。现在回过头来看一下,是否当初可以有更好的解决方案呢?或者说有没有一个高效的autoML框架可以帮助我完成这些工作呢?接下来,想介绍这样一款满足我以上需求的开源autoML框架—HyperGBM
一、何为AutoML?
简单来说,就是将机器学习应用于现实问题的端到端流程自动化的过程,其产生的主要原因就是因为机器学习的应用需要大量的人工干预,这些人工干预表现在:特征分析、模型选择、参数调节等机器学习的各个方面。AutoML视图将这些与特征、模型、优化、评价有关的重要步骤进行自动化地学习,使得机器学习模型无需人工干预即可被应用。
ps:关于autoML有很多优秀的paper,这里推荐一篇个人比较喜欢的供大家学习参考
Automated Machine Learning Methods, Systems, Challenges.pdf。
二、如何使用HyperGBM
本次用例数据来源于kaggle,kaggle上面每个比赛都有相当多的专业人士参与,你除了可以在kaggle上验证自己的一些技术和想法,同时你也可以学习到很多新的解题方法(个人强烈推荐的ML学习平台)
1.引入库
import pandas as pd
from hypergbm import make_experiment
from hypernets.searchers import EvolutionSearcher
from MyGeneralSearchSpaceGenerator import MyGeneralSearchSpaceGenerator
2.读入数据
train_data =pd.read_csv(r"./../resource/train.csv",index_col=0)
test_data = pd.read_csv(r"./../resource/test.csv",index_col=0)
3.初始化make_experiment
reward_metric = 'logloss' ##此次比赛的评估方法为Logloss
search_space = MyGeneralSearchSpaceGenerator() ##自定义的搜索空间
rs = EvolutionSearcher(search_space,optimize_direction='min',population_size=100,
sample_size=5,candidates_size=5,regularized=True, use_meta_learner=True)##初始化进化搜索算法
exp = make_experiment(train_data,eval_data=None,test_data=test_data,reward_metric=reward_metric,
cv=True,n_folds=5,max_trials=300,target='target',searcher=rs,log_level='info')
ps:这里有很多参数,具体可以参考GitHub上的说明文档
4.调用make_experiment
estimator = exp.run()
5.预测结果并提交kaggle
pred_proba = estimator.predict_proba(test_data)
pf = pd.DataFrame(pred_proba)
pf.to_csv("./../resource/hypergbm_out.csv", encoding='utf-8', header=None)
6.训练过程图展示
7.比赛排名进入TOP10%
三、写在最后的话
最近一直在学习研究HyperGBM,Hypernets内部实现的逻辑和技术, 这个过程也同时加深了我对ML各个环节技术的深入理解,如果你对autoML/ML/kaggle感兴趣,欢迎大家一起交流,讨论。后面我也会不断的分享一些HyperGBM具体的技术实现的文章。