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

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

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



image.png


数据泄漏的示例特性

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

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

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

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

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

相关文章
|
机器学习/深度学习 自然语言处理
彻底改变语言模型:全新架构TTT超越Transformer,ML模型代替RNN隐藏状态
【7月更文挑战第25天】近年来,NLP领域取得显著进展但也面临挑战,如长上下文建模与计算效率的平衡。为此,研究人员提出Test-Time Training (TTT) 模型架构。TTT由多机构合作开发,旨在解决长上下文建模难题及提高计算效率。通过将隐藏状态视为可学习更新的模型,TTT能随输入增长提升表示能力;采用自监督学习更新规则确保线性计算复杂度的同时保持高性能。实验显示TTT在多种NLP任务中表现优秀,尤其在长上下文处理方面超越Transformer。尽管如此,TTT仍面临训练资源需求高及自监督学习鲁棒性等挑战。[论文](https://arxiv.org/abs/2407.04620)
478 5
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
5月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
288 0
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
356 3
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1044 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
8月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
473 12
|
10月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
527 1