如何提高训练模型准确率


原文链接:https://blog.csdn.net/Winteeena/article/details/78997696

提升一个模型的表现有时很困难,尝试所有曾学习过的策略和算法,但模型正确率并没有改善。
这才是考验真本领的时候!这也是普通的数据科学家跟大师级数据科学家的差距所在。
本文将分享 8 个经过证实的方法,使用这些方法可以建立稳健的机器学习模型。

导语


模型的开发周期有多个不同的阶段,从数据收集开始直到模型建立。

不过,在通过探索数据来理解(变量的)关系之前,建议进行假设生成(hypothesis generation)步骤(如果想了解更多有关假设生成的内容,
推荐阅读(why-and-when-is-hypothesis-generation-important)。我认为,这是预测建模过程中最被低估的一个步骤。

花时间思考要回答的问题以及获取领域知识也很重要。这有什么帮助呢?
它会帮助你随后建立更好的特征集,不被当前的数据集误导。这是改善模型正确率的一个重要环节。

在这个阶段,你应该对问题进行结构化思考,即进行一个把此问题相关的所有可能的方面纳入考虑范围的思考过程。

现在让我们挖掘得更深入一些。让我们看看这些已被证实的,用于改善模型准确率的方法。

正文


1.增加更多数据

持有更多的数据永远是个好主意。相比于去依赖假设和弱相关,更多的数据允许数据进行“自我表达”。数据越多,模型越好,正确率越高。

我明白,有时无法获得更多数据。比如,在数据科学竞赛中,训练集的数据量是无法增加的。
但对于企业项目,我建议,如果可能的话,去索取更多数据。这会减少由于数据集规模有限带来的痛苦。

2.处理缺失值和异常值

训练集中缺失值与异常值的意外出现,往往会导致模型正确率低或有偏差。这会导致错误的预测。
这是由于我们没能正确分析目标行为以及与其他变量的关系。所以处理好缺失值和异常值很重要。

仔细看下面一幅截图。在存在缺失值的情况下,男性和女性玩板球的概率相同。
但如果看第二张表(缺失值根据称呼“Miss”被填补以后),相对于男性,女性玩板球的概率更高。

从上面的例子中,我们可以看出缺失值对于模型准确率的不利影响。所幸,我们有各种方法可以应对缺失值和异常值:

  • 1.缺失值:对于连续变量,可以把缺失值替换成平均值、中位数、众数。对于分类变量,可以把变量作为一个特殊类别看待。
    你也可以建立模型预测缺失值。KNN为处理缺失值提供了很好的方法。想了解更多这方面内容,推荐阅读《Methods to deal and treat missing values》。
  • 2.异常值:你可以删除这些条目,进行转换,分箱。如同缺失值,你也可以对异常值进行区别对待。
    想了解更多这方面内容,推荐阅读《How to detect Outliers in your dataset and treat them?》。

3.特征工程学(Feature Engineering)

这一步骤有助于从现有数据中提取更多信息。新信息作为新特征被提取出来。
这些特征可能会更好地解释训练集中的差异变化。因此能改善模型的准确率。

假设生成对特征工程影响很大。好的假设能带来更好的特征集。
这也是我一直建议在假设生成上花时间的原因。特征工程能被分为两个步骤:

  • 特征转换:许多场景需要进行特征转换:

  • A)把变量的范围从原始范围变为从0到1。这通常被称作数据标准化。
    比如,某个数据集中第一个变量以米计算,第二个变量是厘米,第三个是千米,在这种情况下,在使用任何算法之前,必须把数据标准化为相同范围。

  • B)有些算法对于正态分布的数据表现更好。所以我们需要去掉变量的偏向。
    对数,平方根,倒数等方法可用来修正偏斜。

  • C)有些时候,数值型的数据在分箱后表现更好,因为这同时也处理了异常值。
    数值型数据可以通过把数值分组为箱变得离散。这也被称为数据离散化。

  • 创建新特征:从现有的变量中衍生出新变量被称为特征创建。这有助于释放出数据集中潜藏的关系。
    比如,我们想通过某家商店的交易日期预测其交易量。在这个问题上日期可能和交易量关系不大,
    但如果研究这天是星期几,可能会有更高的相关。在这个例子中,某个日期是星期几的信息是潜在的。我们可以把这个信息提取为新特征,优化模型。

4.特征选择

特征选择是寻找众多属性的哪个子集合,能够最好的解释目标变量与各个自变量的关系的过程。

你可以根据多种标准选取有用的特征,例如:

  • 所在领域知识:根据在此领域的经验,可以选出对目标变量有更大影响的变量。
  • 可视化:正如这名字所示,可视化让变量间的关系可以被看见,使特征选择的过程更轻松。
  • 统计参数:我们可以考虑p值,信息价值(information values)和其他统计参数来选择正确的参数。
  • PCA:这种方法有助于在低维空间表现训练集数据。这是一种降维技术。降低数据集维度还有许多方法:如因子分析、低方差、高相关、前向后向变量选择及其他。

5.使用多种算法

使用正确的机器学习算法是获得更高准确率的理想方法。但是说起来容易做起来难。

这种直觉来自于经验和不断尝试。有些算法比其他算法更适合特定类型数据。因此,我们应该使用所有有关的模型,并检测其表现。

6.算法的调整

我们都知道机器学习算法是由参数驱动的。这些参数对学习的结果有明显影响。参数调整的目的是为每个参数寻找最优值,以改善模型正确率。
要调整这些参数,你必须对它们的意义和各自的影响有所了解。你可以在一些表现良好的模型上重复这个过程。

例如,在随机森林中,我们有 max_features,number_trees, random_state, oob_score 以及其他参数。优化这些参数值会带来更好更准确的模型。

想要详细了解调整参数带来的影响,可以查阅《Tuning the parameters of your Random Forest model》。下面是随机森林算法在scikit learn中的全部参数清单:

RandomForestClassifier(n_estimators=10,criterion=‘gini’,max_depth=None,min_samples_split=2,
min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=‘auto’,max_leaf_nodes=None,
bootstrap=True,oob_score=False,n_jobs=1,random_state=None,verbose=0,warm_start=False,class_weight=None)

7.集成模型

在数据科学竞赛获胜方案中最常见的方法。这个技术就是把多个弱模型的结果组合在一起,获得更好的结果。它能通过许多方式实现,如:

  • Bagging(Bootstrap Aggregating)
  • Boosting
    想了解更多这方面内容,可以查阅《Introduction to ensemble learning》。

    使用集成方法改进模型正确率永远是个好主意。主要有两个原因:1)集成方法通常比传统方法更复杂;2)传统方法提供好的基础,在此基础上可以建立集成方法。

    注意:到目前为止,我们了解了改善模型准确率的方法。但是,高准确率的模型不一定(在未知数据上)有更好的表现。有时,模型准确率的改善是由于过度拟合。

8.交叉验证

如果想解决这个问题,我们必须使用交叉验证技术(cross validation)。交叉验证是数据建模领域最重要的概念之一。
它是指,保留一部分数据样本不用来训练模型,而是在完成模型前用来验证。

这种方法有助于得出更有概括性的关系。想了解更多有关交叉检验的内容,
建议查阅《Improve model performance using cross validation》。

结语


预测建模的过程令人疲惫。但是,如果你能灵活思考,就可以轻易胜过其他人。
简单地说,多考虑上面这8个步骤。获得数据集以后,遵循这些被验证过的方法,你就一定会得到稳健的机器学习模型。
不过,只有当你熟练掌握了这些步骤,它们才会真正有帮助。
比如,想要建立一个集成模型,你必须对多种机器学习算法有所了解。

模型优化-提高准确率相关推荐

  1. 使用迁移学习后使用微调再次提高模型训练的准确率

    使用迁移学习后使用微调再次提高模型训练的准确率 1.微调 所谓微调:冻结模型库的底部的卷积层,共同训练新添加的分类器层和顶部部分卷积层.这允许我们"微调"基础模型中的高阶特征表示, ...

  2. 探索神经网络的奥秘:如何优化模型和提高训练速度

    探索神经网络的奥秘:如何优化模型和提高训练速度 本文将阐述如何优化神经网络模型以提高训练速度,内容分为以下七个章节: 章节 1: 神经网络优化方法概述 章节 2: 调整学习率 章节 3: 网络架构改进 ...

  3. (转) 深度模型优化性能 调参

    原地址:https://blog.csdn.net/qq_16234613/article/details/79596609 注意 调参看验证集.trainset loss通常能够一直降低,但vali ...

  4. YOLOv4 介绍及其模型优化方法

    YOLOv4 介绍及其模型优化方法 一.YOLOv4 介绍 2020 年 4 月,YOLOv4 在悄无声息中重磅发布,在目标检测领域引起广泛的讨论.在 YOLO 系列的原作者 Joseph Redmo ...

  5. 模型优化之模型融合|集成学习

    目录 模型融合 Bagging 随机森林RF Boosting Adaboost GBDT Xgboost Stacking Blending 结合策略 平均法 投票法 学习法 在机器学习训练完模型之 ...

  6. 模型优化与tensorflow

    模型优化与tensorflow 模型优化方法介绍 神经网络的要求:小.准.快 小:要求网络权重存储空间小 准:准确率高 快:计算量小 目前有四种方法达到这种要求:裁剪,蒸馏,模型结构搜索,量化. 剪裁 ...

  7. 【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述

    前言 模型部署优化这个方向其实比较宽泛.从模型完成训练,到最终将模型部署到实际硬件上,整个流程中会涉及到很多不同层面的工作,每一个环节对技术点的要求也不尽相同.但本质的工作无疑是通过减小模型大小,提高 ...

  8. 机器学习-工作流程与模型优化

    一.前序工作流程 1. 数据处理 数据清洗     不可信的样本丢掉     缺省值极多的字段考虑不用 数据采样     下/上采样     保证样本均衡 2. 特征工程 特征处理:     数值型 ...

  9. 【深入YoloV5(开源)】基于YoloV5的模型优化技术与使用OpenVINO推理实现

    [深入YoloV5(开源)]基于YoloV5的模型优化技术与使用OpenVINO推理实现 前言 CV调包侠自己的深度学习交流群中一位兄弟在看我以前的github和博客:https://blog.csd ...

最新文章

  1. 使用UEFI模式安装win10中的格式化磁盘问题
  2. 用bitmap实现中位数的算法
  3. O-GAN:简单修改,让GAN的判别器变成一个编码器!
  4. 测试 远程端口 是否处于监听状态
  5. Linux下父子进程的全局变量
  6. 惠普宣布WebOS平板和手机,透露电脑计划
  7. 【数据仓库】OLTP系统和OLAP系统区别
  8. Unity2017探究Layout布局
  9. GPS经纬度 转化为 M
  10. matlab能做财务报表吗,基于Matlab 的零售企业财务报表分析.pdf
  11. 苏锡常CIO俱乐部春季论坛暨2020年会(苏州站)圆满落幕!
  12. 如何在 vuePress中添加博客导流公众号-即输入验证码解锁全站文章
  13. 智能手机业务的最新发展趋势
  14. Integer division by zero
  15. 微信公众号怎么把网页链接地址添加
  16. 猜数字?我要王者荣耀
  17. 135编辑器生成html,135编辑器如何使用动态样式
  18. 雅可比(Jacobi)及高斯-塞德尔(Gauss_Seidel)迭代法求解线性方程组的matlab现实
  19. 保时捷Taycan的800V电气架构赏析
  20. 【资料分享】工程师必备物联网资料合集 电子书PDF

热门文章

  1. 莫兰指数(Moran's I)的小总结
  2. 收款鸿蒙系统手机,华为10月17日将会发布收款搭载鸿蒙系统的手机
  3. babel编译html文件,babel 和 browserify 编译
  4. C# 设计原则 之 依赖倒置 原则
  5. GSM系统的空中接口
  6. Lynket浏览器支持网页AMP文章阅读
  7. 国外数据采集的10个经典方法
  8. FPGA中的英文缩写含义
  9. 经典SQL语句大全转载
  10. 通讯录备份的方法你知道几个?分享iPhone通讯录3个备份技巧!