提高机器学习模型准确率的八大可靠方法

介绍

想要提高模型的性能有时会是一件难度不小的事情。如果你也遇到过类似的情况,相信一定会认同我这一看法。在一一尝试毕生所学的对策和算法之后,依然没能够提高模型的准确率,这时,一种陷入困境的无助感就会涌上心头。事实上,百分之九十的数据科学家就是在这一阶段选择了放弃。

但是,好戏这才开始!正是这一点划清了平凡的数据科学家与非凡的数据科学家的界限。你是不是也梦想着成为一名卓越的数据科学家呢?

如果是的话,你就需要有这八种可靠的方式来重构你的模型方法了。建立可预测模型的途径有多种多样,没有定法,但是,如果你按照我的方式(分享如下)进行,你的模型准确率一定可以得到提高(条件是你的数据足以对其做出预测)。

通过以前的经验,我掌握了这些方法。相比钻研理论,我是一直都更喜欢在实践中学习的,而这些方法也不断地给我以鼓励。本文中我分享了八种可靠的方法,你们可以借此建立起一个强有效的机器学习模型。希望我的分享能够帮助你们攀登事业的更高峰。

提高模型准确率八大方法

模型开发周期要经历不同的阶段,始于数据收集,终于模型建立。

然而,在探索数据变量关系之前,我强烈建议你最好先进行假设生成,这是预测建模中最被忽视的一个步骤。

行业信息一直是很重要的,那么,它们是如何发挥作用的呢?

如果后期想要构建更好的特征,思考和获取信息是很有帮助的,它会使特征不因为数据组中现有的数据而产生偏差。通常,正是这关键的一步使模型的准确率大大提高了。

这一阶段,你要针对具体的问题采取结构化思考的方式,也就是在思考过程中考虑到某个特定问题里所有可能的方面。

好的,那么现在让我们再深入一点,探寻一下提高模型准确性的有效办法。

1

获取更多数据

拥有更多的数据在任何时候都不坏,更多的数据就能让其“为自己代言”,而不是仅仅依赖于作的假设和弱小的相互关系。获取更多数据会使模型更完善更准确。

但是我很清楚,有时候对于增加数据我们也无能为力。例如:在数据科学竞赛中,我们除了增加训练数据的规模以外别无选择。因此在进行公司项目时,只要有可能,还是建议大家尽可能获得更多的数据,这会减少因数据组有限而带来的麻烦。

2

处理缺失值和异常值

训练数据中意外的缺失值和异常值通常会降低模型的准确率,或使模型产生的结果出现偏差,最终导致预测不准。这是因为我们没能够准确地分析这一行为以及它与其他变量的关系。因此,认真对待缺失值和异常值非常重要。

请仔细看下面的图表。它表明,如果出现缺失数据,女性打板球的几率就和男性的基本持平。但是,看一下第二行(姓名称谓是“小姐”后的处理缺失数据),我们就可以看到女性与男性相比打板球的成功率更高。

由上,我们可以看到,缺失数据对模型准确率会产生反作用。幸运的是,我们有很多方法处理缺失值和异常值:

1. 缺失值:如果出现了持续变量,你可以用平均值、中位数和众数来填补丢失值。对于分类变量,你可以把变量看成单独一类,也可以建立一个模型来预测丢失值。KNN插补方法就提供了一种处理丢失值的手段。想更多地了解以上方法,请参考文章《处理丢失值的几种方法》。

2. 异常值:你可以用删除观察值,转换、分箱和填补数值的方法,或者(和缺失值一样)你也可以单独处理缺失值。可以参考文章《如何检测并处理数据组中的异常值》来了解更多类似方法。

3

特征工程

这一步骤有利于从现有数据中提炼出更多信息,新的信息会根据新特征得以提炼出来,这些信息更能够解释训练数据的变化。因此,一定会使模型准确率更高。

特征工程受到假设生成的重要影响,合理的假设可以产生显著的特征。所以,我通常建议将黄金时间投入于假设生成的过程。特征工程流程可分为以下两步:

(1) 特征转换:很多情形都需要进行特征转换。

A) 将一个变量的范围从原始范围变为从零到一,这叫做数据规范化。例如:如果一个数据组第一个变量以米计算,第二个变量以厘米计算,第三个变量以千米计算,这时,我们在应用任何算法之前,必须以同样的单位来规范这些变量。

B) 一些算法很适合处理正态分布的数据,因此,我们必须消除变量的偏差值。消除偏差值的方法有取对数, 做平方根,或者取倒数。

C) 有时,对数字数据进行分箱也是很奏效的方法,这种方法也能处理异常值。数值数据通过分组为箱会变得更加离散。这叫做数据的离散化。

(2) 创建特征:从现有的变量中推出新的变量就是创建特征,它有助于揭示数据组的隐藏关系。比如说:我们想通过某商店的交易日期预测其交易量。虽然交易日期可能与交易量没有直接的关系,但是我们观察一周内某天的数据,可能会发现两者的相关性很高。在这种情况下,一周当中某天的信息就是隐藏的信息,我们关注这些就是希望模型能够运行得更好。

4

特征选择

特征选择是一个找到属性的最佳子集的过程,它更好地解释了目标变量与变量间的关系。

你可以基于很多类似的标准来选择有用的特征,例如:

行业知识:基于行业经验,选择那些对目标变量有更大影响的特征。

可视化:就像它的名字,可视化有助于使变量之间的关系更加直观,使变量选择过程更加便捷。

统计参数:我们也考虑P值、信息值和其他统计参数来选择正确的特征。

PCA:这种方法有助于在更低维的空间表现训练数据,同时也表现出数据的内在关系。这是一种降维技术。很多方法都能降低训练数据的维度(特征),例如要素分析、降低方差、提高相关性、后向/前向特征选择和其他等。

5

多种算法

使用正确的机器学习算法是实现更高准确率的理想方法。然而,说起来容易做起来却难。

直觉是基于经验和不懈的实践得到的,一些算法相比其他的算法会更适合某种数据组。因此,我们应该尽可能应用所有的相关模型去检查其运行情况。

6

算法调试

我们知道机器学习算法主要靠参数,参数影响机器学习过程的结果。

调试参量的目标就是发现每个参数的最佳值来提高模型的准确性。要想调试这些参数,你就一定要深入理解参数的意义和它们对模型的影响,你可以通过一系列运行良好的模型来重复这一过程。

例如:在随机森林算法中,我们有很多参数例如max_features, number_trees, random_state, oob_score等等。直觉性的优化这些参数值会使模型更好、更准确。

你可以参考文章《调试随机森林模型的参量》来进一步学习参量调试的影响。以下列出随机森林scikit learn算法中的所有参数:

7

集成方法

这是在数据科学竞赛中最常用的方法,通过结合多种弱模型的结果以产生更佳结果。可以通过很多方式实现,如:

Bagging (Bootstrap Aggregating)

Boosting

想要了解这种方法的更多信息,可以参考文章《集成学习简介》。

将集成方法应用于提高模型的准确度一直都是很好的想法。原因有二:

a) 集成方法比传统的方法更加复杂;

b) 传统方法提供给你一个好的基础,从中你可以提取信息来建立你自己的集成模型。

注意:

到此,我们已经了解到一些可以提高模型准确性的一些方法。然而,模型准确率更高运行结果却不一定更好(由于有看不见的数据点)。有时,模型准确率的提升也会是由过度拟合产生的。

8

交叉验证

为了找到问题的最佳答案,我们必须使用交叉验证的方法。交叉验证是数据建模中最重要的一个概念。它指的是保留一个不用于训练的模型样本,检测该样本的模型然后再最终确定模型。

这种方法有助于我们形成更有概括性的关系。想更多了解交叉验证方法,请参考文章《通过交叉验证提高模型运行》。

尾注:

预测建模的过程很繁琐。然而, 如果你能灵活思考,你就可以轻易超越你的对手。简单来说,多思考这八个步骤。一旦得到数据组就遵循这些方法,你就一定会形成一个可靠的机器学习模型。然而,只有在你能单独掌握这些步骤之后这八个步骤才能对你有所裨益。例如:了解多种机器学习算法才能建成一个集成模型。

本文中,我分享了八种可提高预测模型准确率的方法。这些方法广为人知,但未必要按如上描述进行逐一使用。

你们认为这篇指导有所助益吗?如果需要有关机器学习模型的任何帮助,欢迎在下面的评论中向我提问。

翻译:灯塔大数据

原文发布于微信公众号 - 灯塔大数据(DTbigdata)

原文发表时间:2016-01-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

专栏 | 用神经网络来判定量子纠缠?这里有一篇简单易懂的方法解读

纠缠态 (entangledstate) 是量子力学预言的一种叠加态,最早是为了批判量子力学所蕴含的哲学思想,而由爱因斯坦等三名科学家于 1935 年首先提出的...

14630
来自专栏大数据文摘

机器学习性能改善备忘单:32个帮你做出更好预测模型的技巧和窍门

20750
来自专栏大数据文摘

论文Express | 美图云+中科院AAAI2018:视频语义理解的类脑智能

11520
来自专栏机器之心

CVPR 2018 | 商汤科技提出GeoNet:用无监督学习感知3D场景几何

选自arXiv 作者:Zhichao Yin等 机器之心编译 参与:Panda 有效的无监督学习方法能缓解对有标注数据的需求,无监督学习技术与视觉感知领域的结合...

30630
来自专栏机器学习和数学

[深度学习] 我理解的循环神经网络RNN

本来今天在写毕业论文,就不打算更新了,但是写毕业论文挺痛苦的,因为我发现毕业论文的文字不能像公众号这样比较随意,随意的文字不是说不严谨,而是为了便于大家理解,这...

34490
来自专栏新智元

首次超越LSTM : Facebook 门卷积网络新模型能否取代递归模型?

【新智元导读】Facebook 在尝试使用“门卷积网络”的方法来为语言建模,最近,他们首次取得了超过递归神经网络方法建模方法的性能表现,性能了超越目前被认为是...

29950
来自专栏机器之心

业界 | 谷歌发布MobileNetV2:可做语义分割的下一代移动端计算机视觉架构

选自Google Blog 作者:Mark Sandler、Andrew Howard 机器之心编译 参与:黄小天、思源 深度学习在手机等移动端设备上的应用是机...

32660
来自专栏量子位

224秒!ImageNet上训练ResNet-50最佳战绩出炉,索尼下血本破纪录

刚刚,索尼在arXiv上发文宣布:他们用224秒在ImageNet上完成了ResNet-50训练,没有明显的准确率损失。

12020
来自专栏机器之心

深度 | David Silver全面解读深度强化学习:从基础概念到AlphaGo

机器之心原创 作者:Duke Lee 参与:马亚雄、吴攀、吴沁桐、Arac Wu 强化学习在与之相关的研究者中变得越来越流行,尤其是在 DeepMind 被 G...

28780
来自专栏大数据文摘

还在用ps抠图抠瞎眼?机器学习通用背景去除产品诞生记

34260

扫码关注云+社区

领取腾讯云代金券