原文链接:http://blog.younggy.com/2017/02/24/机器学习算法调优/

机器学习算法众多,各种算法又涉及较多参数,本文将简要介绍RF,GBDT等算法的调优经验与步骤。

1. BP

调优事项
1.BP对feature scaling很敏感,要先scale data。
2.经验来说,L-BFGS在小数据上收敛更快效果更好;Adam在大数据上表现很好;SGD在参数learning rate调整好的基础效果更好。

调参
1.首先隐含层个数。一般来说,如果问题线性可分,那么不用隐含层就行;对于绝大多数问题,一个隐含层的效果就很好;多个隐含层的话训练起来更困难一些(需要用到自编码器或者RBM去预训练而且训练参数增长很快)。
2.接下来确定隐含层的神经元个数,一般来说,神经元个数在输出层和输出层神经元个数之间比较好。可以通过CV确定合适的神经元个数。同时也可以先增大下神经元的个数,然后通过pruning减少神经元个数。pruning的原理是在神经网络训练的时候主动把没什么用的神经元去掉,没什么用的神经元的特征就是其连接的w很小,所以我们可以得到神经网络后看看W的权重矩阵再决定是否要删除部分神经元。
3.画出学习曲线。
4.如果学习曲线不稳定,那么减少学习率;如果学习曲线变化很慢,那么增大学习率。
5.如果学习曲线发现过拟合,那么提前终止或加大正则系数或减少模型复杂度;如果学习曲线欠拟合,那么多迭代或减少正则项系数或增大模型复杂度。

2.LR

参数

1.C:正则项λ的倒数,越小模型越简单。
2.learning_rate

调优事项
1.sklearn中的LogisticRegression没有使用SGD,用的是一些solver,所以没有learning_rate。
2.sklearn中SGDClassifier适合对线性模型(SVM、逻辑回归)用SGD优化,常调的参数有learning_rate和alpha,SGD的速度更快一些。
3.sklearn中有LogisticRegressionCV,可以实现更快的CV。适合调整正则项惩罚权重的算法。

调参
grid search cross validation

3.SVM

参数
γ越大,单个训练数据(SV)影响越小(只有靠近SV的才可以影响),只能影响到自己周围的小区域,这样可能需要更多的SV,模型复杂度升高。
C越大,模型为了不犯错,不得不变得更复杂,模型复杂度升高。

1.γ:单个训练数据(SV)影响距离大小,因为高斯核是exp(−γ||x−xn||2),所以γ越小,单个训练数据(SV)影响越大。γ可以看做是SV影响半径的倒数。
2.C:C参数在模型的复杂度与模型的正确率之间做权衡。如果C很大,那么模型可能会变得很复杂以尽量减少分类错误,可能会过拟合;如果C很小,那么模型可能会很简单以至于在训练集上效果不好。

调优事项
1.10−3至103的log grid的调参区间便已足够
2.模型非常受γ参数的影响,当γ很大,那么SV的影响半径就很小,只能影响到它自己,这样很容易过拟合。这种情况下即使改变C也无济于事。
3.当γ很小,模型太受限了不能够捕捉到复杂的形状。每个SV的影响半径扩大以至于包含了整个训练集,这样模型就很简单,原因类似KNN中K很大。
4.γ,C的最优组合一般在分布的对角线上,选择较平滑的模型(低γ),通过增大SV的数量(高C)就可以实现很好的效果。
5.γ不可过大,否则调C也是没用的。

调参
grid search cross validation

4.RF

参数
RF的参数主要涉及两部分:

1.树参数:max depth、min_samples_split、min_samples_leaf、max_features
2.bagging参数:n_estimators

调优事项
1.RF模型的子模型都有较低的bias(树深到头),整体模型的目标是降低variance,所以需要增大树的数目。同时降低子模型之间的相关度有助于降低variance,所以max_feature的值一般设置成特征数目的平方根。
2.max_features默认sqrt,一般设置地小一些。减少max_features有利于减少不同树的相关度,减少最终模型的variance,但是增加了单个模型的bias。
3.max_features的选择和数据质量也有关系,如果数据质量很差的话,小的max_features可能split的时候选错了feature因此很有可能影响最终的模型。

调参
1.max_features是首要的调参参数,大概300个树的时候通过CV找到最优的max_features
2.调整max_depth
3.调整n_estimators,一般来说越大越好,调整到验证集上的精度提高不多就可。

5.GBDT

参数
GBDT设计到的参数主要有三部分:

1.树参数:max_depth(max_leaf_nodes)、min_samples_split(min_weight_fraction_leaf)、min_samples_leaf、max_features
2.boost参数:learning_rate、n_estimators、subsample
3.其他参数:loss、init、random_state、verbose、warm_start、presort
一般调整的参数有:

1.树参数:max_depth、min_samples_split、min_samples_leaf、max_features
2.boost参数:learning_rate、n_estimators

调优事项
1.与RF相比,GBDT不仅降低了variance(多棵树的组合),而且降低了bias(对错误的数据去训练)。其主要目的是通过树的组合降低bias。每个子模型的bias很大但是variance很小。
2.对于树的参数,RF主要调的是max_features,其目的是增加子模型间的随机性达到降低整体模型variance的作用。对于GBDT,首要目的是降低bias,所以比较关注max_depth之类的参数,通过调整增大子模型的复杂度降低子模型的bias从而降低整体模型的bias。
3.GBDT如果一直进行下去,肯定也会过拟合的,只不过基本分类器很弱,所以GBDT的抗过拟合的能力很强。
4.没有最佳的学习率,学习率越低越好,只要有足够多的树。
5.如果学习率很低,树很多,那么时间上的开销就会很大。

调优策略
讲调优策略之前,先对一些值做下初始化:

1.max_depth:一般选的小点,避免分类器太强,5-8即可。
2.min_samples_split:根据数据大小选,选择数据量的1%即可。
3.min_samples_leaf:根据数据与直觉选。
4.max_features:一般选sqrt。
s5.ubsample:一般选0.8。

每次调优的方法都是grid search,评价参数好坏的标准是cv score。

1.先对boosting参数调优,包括learning_rate和n_estimators。一般,、learning_rate值在0.05-2,n_estimators在30-80较好。如果n_estimators过大那么增大learning_rate,反之减少learning_rate。
2.对树的参数在初始化周围调优,调优顺序是max_depth、min_samples_split、min_samples_leaf、max_features、,可视计算能力分步调优或组合参数调优。
3.确定最优的参数组合,然后降低learning_rate,增加同样倍数的n_estimators,直到计算能力到达极限或验证集上模型的提升很小。

ml基础算法参数设置相关推荐

  1. R语言-ggplot基础绘图参数设置

    Summary: 1.绘制饼图: 简单的饼图:pie(x, labels)绘制,x为非负数值向量.必要时利用as.numeric()转换一下 x<- c(1,2,3,4) labs0<-c ...

  2. 【Python基础】Pandas参数设置的八个小技巧

    在日常使用pandas的过程中,由于我们所分析的数据表规模.格式上的差异,使得同样的函数或方法作用在不同数据上的效果存在差异. 而pandas有着自己的一套「参数设置系统」,可以帮助我们在遇到不同的数 ...

  3. [网络安全自学篇] 二十七.Sqlmap基础知识、CTF实战及请求参数设置(一)

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Shodan搜索引擎的基本用法及Python命令行.本篇文章详细讲解了S ...

  4. 机器学习——人工神经网络之参数设置(BP算法)

    目录 一.复习(BP算法) 二.训练模型的建议 三.参数设置内容 1.随机梯度下降(SGD) 2.激活函数的选择 (1)sigmoid (2)tanh双曲正切函数 3.训练数集初始化 4.(w,b)的 ...

  5. 聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法

    DBSCAN聚类算法三部分: 1.        DBSCAN原理.流程.参数设置.优缺点以及算法: http://blog.csdn.net/zhouxianen1987/article/detai ...

  6. [Java基础]--JVM gc参数设置与分析

    感谢原文链接:http://xstarcd.github.io/wiki/Java/JVM_GC.html JVM gc参数设置与分析 原文: http://hi.baidu.com/i1see1yo ...

  7. 分子动力学论文--算法和参数设置1

    分子动力学论文算法和参数设置1 欢迎来到我的博客!坚持比努力重要. **1.molecular dynamics simulation is a technique for computing the ...

  8. 贪婪投影三角化算法中的参数设置

    无序点云的快速三角化 本小节描述了怎样使用贪婪投影三角化算法对有向点云进行三角化,具体方法是先将有向点云投影到某一局部二维坐标平面内,再在坐标平面内进行平面内的三角化,再根据平面内三位点的拓扑连接关系 ...

  9. STM32F767 (基础)CubeMX参数设置之RCC

    1.RCC 设置 在 操 作 界 面 , 依 次 点 击 选 项 卡Pinout&Configuration -> Categoties -> System Core -> ...

最新文章

  1. iPhone 13 终于等到了!降价、新颜色、电池续航性能大提升
  2. pandas使用replace函数移除dataframe数值数据中的逗号并基于处理后的数据生成新的整型数据列(remove comma from column values in Pandas)
  3. oracle 转换成csv文件,如何将csv转换为oracle中的表
  4. 【theano-windows】学习笔记二十——LSTM理论及实现
  5. 项目进行JVM调优 Jconsole
  6. 04.MyBatis别名的设置和类型转换器
  7. iframe异步加载_5种延迟加载图像的方法以帮助你提升网站性能与用户体验
  8. 一款轻量级的消息提示插件 —— toastr
  9. Springboot热部署(热部署原理)和用IDEA开发需要的配置
  10. 我可以做些什么来提高应用程序的可用性?
  11. 开博1个月不到,照样可以申请到text-link-ads
  12. mycat定时向mysql存储数据_【实战演练】Linux操作系统20-MyCat实现Mysql数据库读写分离与自动切换...
  13. python基础6-控制语句
  14. 淡入淡出效果 (jQuery)
  15. DBeaver 7.2.4 发布,可视化数据库管理平台
  16. AllenNLP 用法总结
  17. 微博 用户画像_深度解析丨微博的用户画像是怎样构建的?
  18. 二叉树的父子节点位置关系
  19. 2021宝德数字产业生态大会 | 计算驱动未来
  20. loh4j整合flume(log4jsource)

热门文章

  1. latex中的求和符号,连乘符号等
  2. 使用Dice loss实现清晰的边界检测
  3. 电脑上快速剪辑歌曲的方法
  4. 矩阵求导-YX拉伸术
  5. 阴天(唐伯虎点秋香版)1铃声 阴天(唐伯虎点秋香版)1手机铃声免...
  6. Python爬取起点小说并保存到本地文件夹和MongoDB数据库中
  7. 翻译软件哪个准确度高
  8. Cannot access ‘androidx.lifecycle.HasDefaultViewModelProviderFactory‘ which is a supertype of ‘com.e
  9. 网络安全风险感知和发掘习题及答案
  10. Android 代码命名规范 -- 提高代码可以读性