15年软件架构师经验总结:在ML领域,初学者踩过的5个坑

如果你要构建你的第一个模型,请注意并避免这些问题。

数据科学和机械进修正变得越来越流行,这个领域的人数每天都在增长。这意味着有很多数据科学家在构建他们的第一个机械进修模型时没有丰富的经验,而这也是失误能够会发生的地方。

近日,软件架构师、数据科学家、Kaggle 大师 Agnis Liukis 撰写了一篇文章,他在文中谈了谈在机械进修中最常见的一些初学者失误的解决方案,以确保初学者了解并避免它们。

15年软件架构师经验总结:在ML领域,初学者踩过的5个坑

Agnis Liukis 拥有超过 15 年的软件架构和开发经验,他熟练掌握 Java、JavaScript、Spring Boot、React.JS 和 Python 等语言。此外,Liukis 还对数据科学和机械进修感兴趣,他多次参加 Kaggle 比赛并取得好成绩,已达到 Kaggle 比赛大师级别。

以下为文章内容:

在机械进修领域,这 5 个坑,你踩过吗?

1、在须要的地方没有运用数据归一化(data normalization)

对数据进行归一化操作,然后获取特色,并将其输入到模型中,让模型做出猜测,这类方法是很容易的。但在某些环境下,这类简单方法的结果能够会让人失望,因为它缺少一个非常重要的部分。

一些类型的模型须要数据归一化,如线性返回、经典神经网络等。这类模型运用特色值去乘训练值的权重。在非归一化特色的环境下,一个特色值的能够领域能够不同于另一个特色值的能够领域。

假设一个特色的值在 [0,0.001] 领域内,另一个特色的值在 [100000,200000] 领域内。对于使两个特色同等重要的模型,第一个特色的权重将比第二个特色的权重大 1 亿倍。巨大的权重能够会给模型带来严重问题,比如存在一些异常值的时候。此外,估计各种特色的重要性变得困难,因为权重大能够意味着特色很重要,但也能够只是意味着其特色值很小。

归一化后,任何特色的值都在相同的领域内,通常为 [0,1] 或 [-1,1]。在这类环境下,权重将在相似的领域内,并与每个特色的实际重要性密切对应。

总的来说,在须要的地方运用数据归一化将产生更好、更准确的猜测。

2、认为特色越多越好

有人能够会认为加入任何特色是一个好主意,认为模型会自动选择并运用最好的特色。实际上,这类想法很难成真。

模型的特色越多,过拟合的风险越大。即使在完全随机的数据中,模型也能够找到一些特色(旌旗灯号),尽管有时较弱,有时较强。当然,随机噪声中没有真实旌旗灯号。但如果我们有足够多的噪声列,则该模型有能够根据检测到的故障旌旗灯号运用其中的一部分。当这类环境发生时,模型猜测质量将会降低,因为它们一定程度上鉴于随机噪声。

现在有许多技术帮助我们进行特色选择。但你要记住,你须要解释你拥有的每一个特色,以及为什么这个特色会帮助你的模型。

3. 在须要外推的环境下,运用鉴于树的模型

鉴于树的模型易于运用,功能强大,这也是其受欢迎的原因。然而,在某些环境下,运用鉴于树的模型能够是失误的。

鉴于树的模型无法外推,这些模型的猜测值永远不会大于训练数据中的最大值,而且在训练中也永远不会输出比最小值更小的猜测值。

在某些任务中,外推能力能够非常重要。例如,如果该模型猜测股票价格,那么未来股票价格能够会比以往任何时候都高。在这类环境下,鉴于树的模型将无法直接运用,因为它们的猜测几乎会超过最高历史价格。

这个问题有多种解决方案,一种解决方案是猜测变化或差异,而不是直接猜测价值。另一种解决方案是为此类任务运用不同类型的模型。线性返回或神经网络就可以进行外推。

4、在不须要的地方运用数据归一化

之前文章谈到了数据归一化的必要性,但环境并非总是如此,鉴于树的模型不须要数据归一化。神经网络能够也不须要明确的归一化,因为有些网络内部已经包含归一化层,例如 Keras 库的 BatchNormalization 操作。

在某些环境下,即使是线性返回也能够不须要数据归一化,这是指任何特色都已处于类似的值领域,并且具有相同的含义。例如,如果模型适用于时间序列数据,并且任何特色都是同一参数的历史值。

5. 在训练集和验证集 / 尝试集之间揭发信息

造成数据揭发比人们想象的要容易,考虑以下代码段:

15年软件架构师经验总结:在ML领域,初学者踩过的5个坑

数据揭发的示例特性

实际上,这两种特色(sum_feature 和 diff_feature)都不正确。它们正在揭发信息,因为在拆分到训练集 / 尝试集后,具有训练数据的部分将包含来自尝试的一些信息。这将导致更高的验证分数,但当应用于实际的数据模型时,性能会更差。

正确的方法是首先将训练集 / 尝试集分开,然后才应用特色生成功能。通常,分别处理训练集和尝试集是一种很好的特色工程模式。

在某些环境下,能够须要在两者之间传递一些信息 —— 例如,我们能够希望在尝试集和训练集上运用相同的 StandardScaler。

总而言之,从失误中吸取教训是件好事,希望上述所提供的失误示例能帮助到你。

原文链接:https://towardsdatascience.com/5-typical-beginner-mistakes-in-machine-learning-3544bd4109b

给TA打赏
共{{data.count}}人
人已打赏
AI

这几年让你大呼惊人的AI使用,都离不开这项技巧

2022-8-2 15:54:00

AI

呆板之心升级「SOTA!模型」资材站,万余模型覆盖千余AI任务

2022-8-5 17:22:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索