机器学习笔记-Adaboost调参

Adaboost调参

  Sklearn中的Adaboost接口是在sklearn.ensemble中,ensemble是集成的意思,在这个包中含有很多集成模型,Adaboost就是封装在ensemble中,我们需要做的就是知道如何对模型进行调参,要知道Adaboost使用的基学习器就是决策树,如果解决分类问题那就是分类树,如果解决回归问题就是回归树,对应的函数就是AdaBoostClassifier和AdaBoostRegressor。这俩就是我们使用的最多的函数。回归和分类其实大体参数都是一样的。
Adaboost参数分为两类,第一类是指Adaboost的框架参数,第二类就是Adaboost使用的基学习器参数
下面就先针对Adaboost框架参数介绍:
Adaboost分类器官方文档
1、base_estimator
  这个参数是规定基学习器是什么,如果我们默认,那么Adaboost就会采用决策树,AdaBoostClassifier使用分类树、AdaBoostRegressor使用回归树,一般来说,这个参数是默认的,不需要我们进行改动。
2、n_estimators
  AdaBoostClassifier和AdaBoostRegressor都有,是我们弱学习器的最大迭代次数,或者可以说是基学习器的个数,这个参数是比较重要的,一般来需要我们进行细调,参数默认的值为50,如果参数值太大,容易过拟合;参数值太小,容易欠拟合。
2、learning_rate
  乍一看,这个参数的含义是学习率,有点像之前学习梯度下降法里面的学习率,其实不是的,Adaboost学习算法中并没有使用梯度下降法,所以这里的学习率和梯度下降法里的学习率不一样,但是却有点相似。具体来看,我们知道在Adaboost学习算法中,我们学习的策略是一个一个对基学习器进行学习,然后学习找到每个基学习器的系数,具体表示为:
f m ( x ) = f m − 1 ( x ) + v α G m ( x ) f_m(x)=f_{m-1}(x)+v\alpha G_m(x) fm(x)=fm1(x)+vαGm(x)
  上面的式子中多了一个 v v v,这个 v v v其实就是adaboost中学习率的意思,即调整每次叠加模型时的权值。在ensemble参考文档中是这么介绍这个参数的:
在这里插入图片描述
  缩小每个分类器的贡献程度,后面又说到learning_rate和n_estimators之间存在权衡关系,这说明在调参过程中learning_rate和n_estimators是相互的,合理调节这两个参数可以很好缓解过拟合问题。
这个参数还有一个特殊的名字,叫做正则化参数,范围为0-1。
3、algorithm
  这个参数比较特殊,只有AdaBoostClassifier才有这个参数。主要原因是sklearn中实现的AdaBoostClassifier有两种方式,分别为:SAMME和SAMME.R,SAMME.R必须要基学习器支持类概率计算,这点刚好在决策树中就有,所以在AdaBoostClassifier中默认的就是SAMME.R,并且SAMME.R也比SAMME收敛速度要快,能通过更少的迭代次数获得更低的误差。在调参时不需要改变这个参数。
SAMME和SAMME.R介绍
4、loss
  这个参数的而含义是定义损失函数,可选的参数有:linear、square、exponential,分别对应于线性损失函数,平方损失函数、指数损失函数,要注意这个参数只有在AdaBoostRegressor中才有,分类器中是没有这个参数的,这是因为如果用Adaboost解决回归问题我们的算法和原始算法不一样,详细可以参考这篇文档Adaboost回归算法介绍
一般来说,如果用Adaboost解决分类问题,这个参数可以不用管。

5、基学习器参数
基学习器参数也指决策树参数,在决策树那篇我们已经介绍过决策树调参的方法,详情参考决策树调参,在AdaBoost中修改基学习器参数需要在基学习器中,例如:

clf = AdaBoostClassifier(DecisionTreeClassifier(max_depth=5, min_samples_split=10, min_samples_leaf=5),
                         n_estimators=300,learning_rate=1)

我们是在AdaBoostClassifier中定义了一个DecisionTreeClassifier基学习器,对基学习器的调参是在DecisionTreeClassifier中设置的。

  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习&深度学习资料笔记&基本算法实现&资源整理.zip 0.不调库系列 No free lunch. 线性回归 - logistic回归 - 感知机 - SVM(SMO) - 神经网络 决策树 - Adaboost kNN - 朴素贝叶斯 EM - HMM - 条件随机场 kMeans - PCA ROC曲线&AUC值 Stacking(demo) 计算IOU 参考:《机器学习》周志华 《统计学习方法》李航 1.机器学习&深度学习 工具 | 书籍 | 课程 | 比赛 | 框架 ---------|---------------|-------------|-------- |--------- Scikit-learn| 机器学习实战 | 机器学习/Andrew Ng | Kaggle | Keras ★ XGBoost | 集体智慧编程 | Deep Learning/Andrew Ng | 天池 | Tensorflow LightGBM | | | Biendata | PyTorch ★ Spark| | | AI challenge |Mxnet | | | | DataFountain | Caffe 2.自然语言处理 课程:自然语言处理班 - 七月在线 | CS224n 工具:NLTK | jieba | gensim | NLPIR | word2vec | LDA | BLEU(介绍、使用) 代码:社交网络语言re | 经典项目: funNLP AI写诗 对话系统DeepQA Awesome-Chinese-NLP NLP知识点整理>> 3.计算机视觉 常用代码 常用预处理:打乱数据集 | 计算图像均值方差 | 分类数据增强 | 检测数据增强 数据集相关:生成VOC目录结构 | 标签转xml写入 | coco txt转voc xml | 可视化VOC标签框 | 更新训练验证txt图片名 | VOC转csv格式 | 计算csv格式数据合适的anchor | labelme标注的人体17点json转COCO 常用算法:NMS | Mixup | label_smoothing | Weighted-Boxes-Fusion(NMS,WBF..) | mAP计算 | IOU计算 | YOLO F1 其他 课程: CS231n/Feifei Li 笔记: chinese-ocr项目 | 《深度卷积网络:原理与实践》读书笔记 | 手写汉字识别调研 经典分类网络: LeNet-5 | AlexNet | VGGNet | GoogleNet | ResNet | DenseNet | Xception | EfficientNet 经典检测网络: SSD(自己实现)| FasterRCNN | Yolo | CornerNet | CenterNet | EfficientDet 经典分割网络:Unet | DeepLab | 谷歌bodypix(走通了tfjs转onnx转tnn安卓部署的流程,但是实时精度不高) 经典项目: HyperLPR车牌识别 中文OCR1(YOLOv3+CRNN) 中文OCR2(CTPN + DenseNet) RFBNet(ECCV2018快速目标检测) AlphaPose(人体姿态估计) 轻量级性别年龄分类模型 图像风格迁移 超分辨率 Mask_RCNN人体关键点、分割 人像卡通化 移动端人脸检测1:libface | 移动端人脸检测2:Ultra Face 人脸识别facenet-tf(2018) | 人脸识别facenet-pth(2018) | AdaFace(2022) 人脸关键点pth版 CV知识点整理>> 4.数据挖掘 笔记:特征工程 常见数学、机器学习知识点整理>> 5.其他 资源索引

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值