HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

选择机器学习模型,要注意这 7 个问题

  • 2021-08-13
  • 本文字数:1765 字

    阅读完需:约 6 分钟

选择机器学习模型,要注意这7个问题

本文最初发表于 Towards Data Science 博客,经原作者 Santiago Valdarrama 授权,InfoQ 中文站翻译并分享。


和很多人的想法相反,性能最好的机器学习模型未必是最好的解决方案。在 Kaggle 竞赛中,性能是你需要的全部。实际上,这也是另一个需要考虑的因素。下面让我们从模型的性能开始,并重新考虑一些其他考虑因素,以便在选择模型来解决问题时牢记在心。

1. 性能

模型结果的质量是选择模型时应考虑的基本因素。优先选择能够使性能最大化的算法。取决于问题,不同的度量标准可能对分析模型的结果有所帮助。举例来说,最流行的度量有正确率、准确率、查全率和 F1 分数。


切记,并非每一个度量都适用于所有的情况。例如,在处理不平衡的数据集时,正确率是不适当的。在我们准备开始模型选择过程之前,选择一种良好的度量(或一组指标)来评估模型性能是一项至关重要的任务。

2. 可解释性

很多情况下,对模型结果的解释是至关重要的。遗憾的是,很多算法就像黑盒子一样工作,无论结果如何,都很难解释。在这些情况下,缺乏可解释性可能是成功或失败的决定性条件。


如果存在可解释性问题,线性回归和决策树是很好的选择。神经网络则不然。选择好的候选者之前,一定要知道每种模型的结果是否易于解释。有意思的是,可解释性和复杂性通常存在于两个极端,所以接下来我们来看看复杂性。

3. 复杂性

一种复杂的模型在数据中可能会发现更多有趣的模式,但是,这会使维护和解释更加困难。


这里有一些不严谨的概括,需要记住:


  • 复杂性越高,性能就越好,但是成本也越高。

  • 复杂性与可解释性成反比。模型越复杂,解释结果就越困难。


抛开可解释性不谈,构建和维护模型的成本是项目成功的关键因素。复杂的设置会对模型的整个生命周期产生更大的影响。

4. 数据集大小

可用的训练数据量是选择模型时要考虑的主要因素之一。


神经网络在处理和合成大量数据方面确实很出色。KNN(K-Nearest Neighbors,K- 最近邻)模型更好,示例也更少。除了可用的数据量外,还有一个重要的考虑因素是,为了获得好的结果,你真正需要多少数据。有时候,你可以通过 100 个训练例子来建立一个很好的解决方案;有时候,你需要 100000 个例子。


利用这些与你的问题和数据量有关的信息,选择一个模型来处理它。

5. 维度

从两个不同的角度看待维度是有用的:数据集的垂直大小代表我们拥有的数据量。水平大小代表特征的数量。


我们已经讨论了垂直维度如何影响优秀模型的选择。事实证明,水平维度也是需要考虑的因素。如果你的模型有更多的特征,就会有更好的解决方案。越多的特征也会增加模型的复杂性。


维度的诅咒”(Curse of dimensionality)很好地介绍了维度如何影响模型的复杂性。可以想象,并非每一个模型对高维数据集的扩展都是相同的。在将高维数据作为问题进行集成时,我们可能也需要引入特定的降维算法。PCA 是这方面最流行的算法之一。

6. 训练时间与成本

训练一个模型需要多长时间,需要多少钱?你会选择一个正确率为 98%、训练成本为 10 万美元的模型,还是选择一个准确率为 97%、成本为 1 万美元的模型?


这个问题的答案当然取决于你的个人情况。


需要在接近实时的情况下结合新知识的模型,很难适应长周期的训练。举例来说,推荐系统需要根据每个用户的动作不断更新,才能从廉价的训练周期中获益。在设计可扩展的解决方案时,平衡时间、成本和性能非常重要。

7. 推理时间

运行一个模型并作出预测需要多长时间?想象一下自动驾驶系统:它需要实时作出决策,因此任何时间过长的模型都无法被考虑。


例如,使用 KNN 开发预测所需的大部分处理都在推理过程中进行。因此运行它的成本非常高。但决策树的推理时间较短,在训练过程中需要较长的时间。

结语

很多人专注于他们最喜欢的模型。常常是他们最熟悉的那个,在前一个项目中给他们带来了好效果。


但是机器学习中没有免费的午餐。任何一种模型都不能同时适用于所有情况,尤其是当我们考虑现实生活中的系统限制时。


当选择一个好的模型时,了解几个不同的考虑因素对确保项目的成功至关重要。作为总结,下面列出了我们刚才讨论的内容:


  1. 模型的性能

  2. 结果的可解释性

  3. 模型的复杂性

  4. 数据集的大小

  5. 数据的维度

  6. 训练时间和成本

  7. 推理时间


作者介绍:


Santiago Valdarrama,专注于机器学习系统。


原文链接:


https://towardsdatascience.com/considerations-when-choosing-a-machine-learning-model-aa31f52c27f3?gi=b42e581fe448

2021-08-13 11:003434
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 532.8 次阅读, 收获喜欢 1976 次。

关注

评论

发布
暂无评论
发现更多内容

阿里内部架构解密:网络+分布式+RPC+消息中间件+微服务

Java~~~

Java spring 架构 面试 微服务

如何在MacOS上无缝切换Win11和MacOS?

Zhendong

MacBook m1 Parallels

华为云GaussDB首次亮相2021服贸会,为数字人民币提供坚实数据底座

华为云数据库小助手

金融科技 数字经济 GaussDB 华为云数据库

令我入职阿里的750页微服务架构深度解析文档有何神秘之处?

Java 编程 架构 面试 架构师

为什么UI自动化难做?—— 关于Selenium UI自动化的思考

LigaAI

测试 UI自动化

C/S结构是什么意思?有什么优点?

行云管家

数据库 运维 IT

百度短视频推荐系统的目标设计

百度Geek说

架构 后端 推荐系统 短视频

把工作讲给家人听

FunTester

读书笔记 FunTester 奈非文化手册 办公效率 居家工作

低代码的5个误区,你踩雷了吗?

禅道项目管理

低代码 开发

安卓工控主板双网口有什么用途?

双赞工控

安卓主板 工控主板

横空出世!复盘B站面试坑我最深的Java并发:JDK源码剖析

Java~~~

Java 源码 架构 jdk 面试

微信或推出聊天记录云备份付费服务,你的微信记录值多少钱?

郑州埃文科技

云服务 微信聊天 数据风险管理

浅析 DDD 领域驱动设计

牧小农

DDD 领域驱动

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Java 编程 架构 面试 程序人生

别慌!阿里专家破SpringBoot:入门+基础+进阶+项目

Java~~~

Java 数据库 架构 面试 Spring Boot

太强了!京东首席架构师深邃洞察:服务化+云原生+微服务

Java~~~

Java 架构 面试 云原生 架构师

「技术点串烧」☕【Java 技术指南】「难点-核心-遗漏」Java线程状态流转及生命周期的技术指南!

洛神灬殇

Java 线程 Thread 9月日更

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏

Java 程序员 架构 面试 k8s

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java~~~

Java 架构 面试 高并发 系统

架构训练营 模块一

Leach Sun

数据库是什么意思?有什么用?有哪些类型?

行云管家

数据库 运维 IT

一文搞懂音视频开发技术点及职业发展方向

赖猫

c++ android 音视频

无敌!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说

Java~~~

Java 架构 面试 项目 架构师

高性能利器:CDN我建议你好好学一下!

九灵

Java 分布式 微服务 CDN

阿里内部最新“SpringCloudAlibaba学习笔记”出炉

Java 阿里巴巴 架构 面试 微服务

springboot项目集成docker

try catch

Docker Dockerfile springboot

你的 SQL 还在回表查询吗?快给它安排上覆盖索引

Java MySQL 数据库 后端

打爆怪兽 一起来养猪 养蜂人 幸福饭店

游戏开发_软件开发

软件 App 开发 游戏 语音合成

在同一台计算机中运行多个MySQL服务

Java 数据库 后端 msyql

“小巨人”的转型烦恼,百度智能云能否解压?

百度开发者中心

人工智能 企业资讯 中小企业

必杀器!鹅厂首推569页Netty+Redis+ZK+高并发

Java~~~

Java redis 架构 面试 Netty

选择机器学习模型,要注意这7个问题_AI&大模型_Santiago Valdarrama_InfoQ精选文章