Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Agnis Liukis作者杨阳编辑

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

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

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

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



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. 在训练集和验证集 / 测试集之间泄漏信息

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


数据泄漏的示例特性

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

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

在某些情况下,可能需要在两者之间传递一些信息 —— 例如,我们可能希望在测试集和训练集上使用相同的 StandardScaler。

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

原文链接:https://towardsdatascience.com/5-typical-beginner-mistakes-in-machine-learning-3544bd4109b
入门机器学习模型优化
1
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

暂无评论
暂无评论~