Detail 零基础入门数据挖掘 (心跳信号分类) 学习反馈TASK3
使用语言:python
Tas1 – Task5
Task4 建模与调参
本次学习的重点是贪心调参、网格搜索调参、贝叶斯调参共三种调参方法
模型对比与性能评估
- 逻辑回归
- 决策树
- 集成模型集成:Bagging和Boosting
在个人使用中,常见的是前两个;故对第三种进行详细学习:
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个更加强大的分类。两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果。常见的基于Baggin思想的集成模型有:随机森林、基于Boosting思想的集成模型有:Adaboost、GBDT、XgBoost、LightGBM等。
Baggin和Boosting的区别总结如下:
- 样本选择上: Bagging方法的训练集是从原始集中有放回的选取,所以从原始集中选出的各轮训练集之间是独立的;而Boosting方法需要每一轮的训练集不变,只是训练集中每个样本在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整
- 样例权重上: Bagging方法使用均匀取样,所以每个样本的权重相等;而Boosting方法根据错误率不断调整样本的权值,错误率越大则权重越大
- 预测函数上: Bagging方法中所有预测函数的权重相等;而Boosting方法中每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
- 并行计算上: Bagging方法中各个预测函数可以并行生成;而Boosting方法各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
模型评价方法:
数据划分
留出法,交叉验证法和自助法( 当k=1的时候,我们称之为留一法)
- 对于数据量充足的时候,通常采用留出法或者k折交叉验证法来进行训练/测试集的划分;
- 对于数据集小且难以有效划分训练/测试集时使用自助法;
- 对于数据集小且可有效划分的时候最好使用留一法来进行划分,因为这种方法最为准确
模型评价 f1-score、ks、auc
模型调参:
- 1. 贪心调参
-
- ①:max_depth、num_leaves
- ②:min_data_in_leaf、min_child_weight
- ③:bagging_fraction、 feature_fraction、bagging_freq
- ④:reg_lambda、reg_alpha
- ⑤:min_split_gain
- 2. 网格搜索
- GridSearchCV用于进行网格搜索,只需要把模型的参数输进去,就能给出最优化的结果和参数;只适用于小数据集。
- 3.贝叶斯调参
- 定义优化函数(rf_cv)
- 建立模型
- 定义待优化的参数
- 得到优化结果,并返回要优化的分数指标
对于调参需要根据数据具体进行设置参数;同时需要考虑调用不同的API官方库的定义函数(集成模型中原生库和sklearn下的库部分参数不一致,需要注意,具体可以参考xgb和lgb的官方API);本次项目重点使用贝叶斯调参对本次项目进行简单优化。
未调参前
调参后
lgb_scotrainre_list:[0.9615056903324599, 0.9597829114711733, 0.9644760387635415, 0.9622009947666585, 0.9607941521618003]
lgb_score_mean:0.9617519574991267
lgb_score_std:0.0015797109890455313
个人收获:
MK文档撰写
具体参数调参