机器学习天降福音!数据科学家、Kaggle大师发布「ML避坑宝典」
来源:51CTO.COM
时间:2023-04-16 19:35:16 479浏览 收藏
哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《机器学习天降福音!数据科学家、Kaggle大师发布「ML避坑宝典」》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!
数据科学和机器学习正变得越来越流行。
进入这个领域的人数,每天都在增长。
这意味着,很多数据科学家在构建第一个机器学习模型时,并没有丰富的经验,所以很容易发生错误。
以下就是机器学习解决方案中一些最常见的初学者错误。
在需要的地方没有使用数据归一化
对初学者来说,把特征放入模型,然后等着它给出预测,这似乎是一件很容易的事。
但是在某些情况下,得到的结果可能会令人失望,因为你遗漏了一个非常重要的步骤。
某些类型的模型需要让数据归一化,包括线性回归、经典神经网络等。这些类型的模型使用特征值乘以训练的权重。如果特征没有被归一化,可能会发生一个特征的可能值范围与另一个特征的可能值范围非常不同的情况。
假设,一个特征的值在[0, 0.001]范围内,另一个特征的值在[100000, 200000]范围内。对于两个特征同等重要的模型,第一个特征的权重将是第二个特征的权重的100'000'000倍。巨大的权重可能会给模型带来严重的问题。例如,存在一些异常值。
此外,估计各种特征的重要性会变得非常困难,因为大权重可能意味着该特征很重要,或者可能仅仅意味着它具有较小的值。
而在归一化后,所有特征都在相同的值范围内,通常是[0, 1]或[-1, 1]。在这种情况下,权重将处于相似的范围内,并且将与每个特征的真正重要性密切对应。
总体而言,在需要的地方使用数据归一化,将产生更好、更准确的预测结果。
认为特征越多越好
有人可能认为加入的特征越多越好,这样模型就会自动选择和使用最好的特征。
在实践中,并不是这样的。在大多数情况下,具有精心设计和选择特征的模型将显著优于具有10倍以上特征的类似模型。
模型的特征越多,过拟合的风险就越大。即使在完全随机的数据中,模型也能够找到一些信号——有时更弱,有时更强。
当然,随机噪声中没有真正的信号。但是,如果我们有足够多的噪声列,那么该模型就有可能根据检测到的错误信号使用其中的一部分。发生这种情况时,模型预测质量会降低,因为它们将部分基于随机噪声。
的确存在各种用于特征选择的技术,它们可以在这种情况下提供帮助。但本文不讨论它们。
记住,最重要的是——你应该能够解释你拥有的每一个特征,明白为什么这个特性会帮助你的模型。
在需要外推法时使用基于树的模型
树模型受到欢迎的最主要原因除了它是实力担当,还有就是因为它很好用。
但是,它并不是百试百灵的。在某些情况下,使用基于树的模型很可能会是一个错误。
树模型没有推断能力。这些模型永远不会给出大于训练数据中看到的最大值的预测值。他们也永远不会输出比训练中的最小值更小的预测。
但在某些任务中,外推能力或许占据主要作用。比如,如果利用该模型预测股票价格,有可能未来的股票价格将比以往任何时候都高。所以在这种情况下,基于树的模型将不再适用,因为它们的预测结果将被限制在接近历史最高价格的水平。
那这个问题又该怎么解决呢?
其实,条条大路通罗马!
一种选择是预测变化或差异,而不是直接预测值。
另一种解决方案是对此类任务使用不同的模型类型,比如能够外推的线性回归或神经网络。
多此一举的归一化
大家一定不陌生数据归一化的重要性。但是不同的任务需要不同的归一化方式,倘若类型按错了,那便会得不偿失!
基于树的模型不需要数据归一化,因为特征原始值不会用作乘数,并且异常值也不会影响它们。
神经网络可能也不需要归一化——例如,如果网络已经包含内部处理归一化的层(例如Keras库的BatchNormalization)。
在某些情况下,线性回归可能也不需要数据归一化。这是指所有特征都在相似的值范围内,并且具有相同的含义。例如,如果模型应用于时间序列数据,并且所有特征都是同一参数的历史值。
在实践中,应用不需要的数据归一化不一定会损害模型。大多数情况下,这些情况下的结果将与跳过的归一化非常相似。但是,进行额外的不必要的数据转换会使解决方案复杂化,并且会增加引入一些错误的风险。
所以,具体是用,还是不用,实践出真知!
数据泄露
数据泄露,要比我们想象得更容易。
请看以下代码段:
实际上,「sum_feature」和「diff_feature」这两个特征都是不正确的。
它们正在「泄漏」信息,因为在拆分为训练/测试集后,具有训练数据的部分将包含测试行中的一些信息。这虽然会得到更好的验证结果,但当应用于实际数据模型时,就会性能暴跌。
正确的做法是首先进行训练/测试拆分。然后才应用特征生成功能。一般来说,分别处理训练集和测试集是一种很好的特征工程模式。
在某些情况下,必须在两者之间传递一些信息——例如,我们可能希望测试集使用相同的StandardScaler ,该StandardScaler用于训练集并在其上进行了训练。但这只是个别案例,所以,我们还是需要具体问题具体分析!
从错误中吸取教训是件好事。但最好从别人的错误中学习——希望本文所提供的错误示例能帮助到你。
好了,本文到此结束,带大家了解了《机器学习天降福音!数据科学家、Kaggle大师发布「ML避坑宝典」》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多科技周边知识!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
235 收藏
-
428 收藏
-
478 收藏
-
221 收藏
-
147 收藏
-
340 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习