Python社区  »  机器学习算法

让你避开机器学习模型构建10大错误!(配解决方案)

机器学习算法与自然语言处理 • 1 周前 • 25 次点击  

【文末有彩蛋】

最近,小编抓取了近 600份2020年的招聘 JD 进行分析,不难发现——越来越多的企业重视 “ 大数据算法 ” 这一技能

具体表现在这一点:大数算法工程师” 招聘需求旺盛,并且薪资待遇从 2016 年来不断走高。

坐标:北京
应届生平均薪资:11010 元
1 - 3 年平均薪资:18000元

图片来源:职友集

2020 年较 2016 年,大数据算法工程师的薪资涨幅高达 86.87%( 非常震惊了!)
由上可见,很多人想要搭上人工智能这列二十一世纪的快车,力求在这个不断革新的时代领域博得自己的一片立足之地。人工智能这个名词我们并不陌生,伴随而来固然是机器学习领域的新潮,以及大数据这个新兴产业,成为“吃香”职业首选!那么,总是跟“人工智能”一起出现的“大数据”和“机器学习”,到底是什么?

01
什么是大数据+机器学习?


“大数据”指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据的核心是利用数据的价值,机器学习是利用数据价值的关键技术,对于大数据而言机器学习是不可或缺的。

相反,对于机器学习而言,越多的数据会越可能提升模型的精确性,同时,复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。因此,机器学习的兴盛也离不开大数据的帮助。大数据与机器学习两者是互相促进,相依相存的关系。

图片来源:谷歌图片(大数据)

对机器学习的认识可以从多个方面进行,有着“全球机器学习教父”之称的Tom Mitchell则将机器学习定义为:对于某类任务T和性能度量P,如果计算机程序在T上以P衡量的性能随着经验E而自我完善,就称这个计算机程序从经验E学习。普遍认为,机器学习的处理系统和算法是主要通过找出数据里隐藏的模式进而做出预测的识别模式,它是人工智能的一个重要子领域。

图片来源:谷歌图片(机器学习)

如何学习机器学习?提升攻城狮软实力?成功搭上二十一世纪人工智能的快速列车?如何构建有效的机器学习模型,解决大数据领域的案例问题?成为每一位大数据算法工程师学习的核心,那么,构建机器学习模型时应避免的10个常见错误你必须知道!


02
10个构建机器学习模型时常见错误,
你犯过几个?


近年来,机器学习在学术研究和实际应用中受到越来越多的关注。构建机器学习模型并不是一件容易的事情,需要开发人员丰富的知识、技能和经验来适应各种场景。一个有效的、满足项目需求的机器学习模型应该以数据为中心,以业务问题为基础,使用数据和机器学习算法来解决问题。

图片来源:谷歌图片(机器学习)

在构建机器学习模型时,我们需要避免10个常见错误,根据问题的类型大致分数据、建模和过程3个部分问题。


数据问题

数据问题很重要,因为机器学习模型是经过训练、测试并应用于数据的。谈到机器学习中的数据,有两个主要问题:不查看数据和不寻找数据泄漏。

常见错误1:不看数据


如果你不仔细查看数据,你可能会错过有用的见解。英国统计学家弗朗西斯·安斯科姆因《安斯科姆四重奏》而闻名,该四重奏是四个数据集的一个例子,它们具有几乎相同的描述性统计均值、方差、相关性、回归线、R平方,但有非常不同的分布如果你以不恰当的方式选择数据,也很容易欺骗自己。

例如,如果你选择因变量的值,你可能会得到一个关于自变量和因变量之间真实关系的误导性估计。

图片来源:谷歌图片(数据)

解决方案-如何查看数据


1、使用探索性数据分析(EDA)技术,包括非图形(如均值、方差、最小值、最大值和相关矩阵)和图形(如散点图、直方图、热图和降维)。

2、  仔细检查数据错误、丢失的数据、总是相同值的字段、重复的实例、不平衡的数据、抽样偏差、因变量的选择以及容易博弈的数据。

3、 验证字段是否包含您希望它们包含的数据。检查数据是否代表模型将在生产中看到的数据。对于分类问题,确保在每个分割中有足够的类实例。

4、 与数据创建者和所有者交谈,以更好地理解数据。



常见错误2:不看数据泄漏问题


当训练数据集包含在预测时无法得到的信息或线索时就会发生数据泄漏,数据泄漏会导致模型性能变差。

解决方案-如何避免数据泄露


1、作为一个一般的经验法则,如果你的结果非常好即各种指标超过90%,你可以怀疑是否数据泄漏。

2、 在最开始的时候,将您的数据分成项目中需要的数据集:训练、验证、开发、测试、盲法、折叠等等。在数据准备之前分解数据,包括值的归一化、缺失值的归一化、移除异常值、降维和特征选择,留出几个测试数据集用于最终评估。

3、当使用k折交叉验证时,在每个折中分别进行数据准备。

4、通过特征重要性的度量来识别可能泄漏的特征,例如特征与因变量的相关性(信息性)、回归特征权重、R平方和排列特征重要性(变换特征值后性能下降)。

5、 查找数据中的重复,并查找在多个分割中出现的相同实例。

6、仔细查看每个数据元素的属性。

7、确定数据元素可用的顺序,只使用过去的信息进行预测。

8、从自变量集中删除泄漏特性。与数据提供者合作改进数据文档,减少数据泄漏。




建模问题

使用数据选择和训练模型是机器学习的核心。在机器学习中建模有三个主要问题:根据测试集进行开发,不查看模型,不将模型与简单的基线模型进行比较。

常见错误3:开发到测试集



如果试图提高单个测试集(Kaggle Public)的性能,你可能会欺骗自己认为你的结果比在一个新的测试集(Kaggle Private)上的实际结果要好。


解决方案-如何避免开发到测试集


1、确保你有足够的数据。在开始时留出多个测试集。在开始时留出几组盲标,以便进行最终评估。

2、避免过多地使用测试集。每次查看测试集的结果时,您都获得了可能会泄漏到模型中的相关知识。

3、定期推出新的测试集,重复使用测试集太多次会导致过拟合。

4、确认测试集中的结果是初步的,它们可能不能反映生产中将要发生的情况。

5、使用最新的超参数优化方法。

6、对于真正的测试,使用A/B测试或相关方法。



常见错误4:不看模型


你知道你的模型在做什么吗?如果不去看,可能就不会明白模型是如何实现功能的。


图片来源:谷歌图片(机器学习模型)

解决方案-如何看你的模型


1、考虑使用可视化技术,如热图、高亮显示、聚类、t分布随机邻居嵌入(t-SNE)、均匀流形近似和投影(UMAP)以及嵌入投影仪。

2、  对于回归模型,看权重。

3、对于决策树,看分割。

4、对于神经网络,使用神经网络可视化技术,如激活图集、特征可视化。

5、使用可解释的人工智能工具,例如,深色对应注意力权重的线条可以帮助理解Transformer模型。

6、执行debug分析,看模型失败的原因。

7、以交互方式运行模型,尝试新的输入并查看输出,试着不寻常的输入打破这种模式。

8、使用各种指标评估您的模型,查看数据子集的指标(例如,在意图级别)。

9、研究为什么某些功能有用或没用,这会让你发现更多的问题。



常见错误5:没有与简单的基线模型进行比较


想要从复杂的模型开始是很自然的。但有时单个神经元(也称为逻辑回归)的表现与具有六个隐藏层的深层神经网络一样好。所以我们一般要于baseline模型进行比较,提高我们的工作效率。


解决方案-如何比较一个简单的基线模型


1、首先尝试一个简单的基线模型,不要从一个复杂的模型开始。对于分类问题计算多数类基线,然后尝试更复杂的模型。

2、执行消融研究以确定体系结构的每个部分的贡献,以及体系结构的哪些部分是实际需要的。




过程问题


最后,还有几个需要遵循的过程相关的、技术性较低的问题。有五个过程问题:不确定案例,不理解用户,为技术而开发技术,不使用现有的解决方案,以及不执行故障分析。

常见错误6:没有限定案例


在开始一个机器学习项目之前,确定这个项目是否值得做并考虑它的后果是很重要的。在2014年的这个例子中,一个价值1亿美元的收集和分析学生表现数据的项目被关闭了。该项目旨在帮助教育工作者提高学生的学习水平。不幸的是,由于公众担心潜在的数据滥用,该网站被关闭了。所以我们需要考虑这个问题是否有做的价值。


图片来源:谷歌图片(推荐系统)

解决方案-如何确定机器学习案例


1、在项目的开始,确保您通过解决大量的问题来限定案例。

2、有什么问题吗?问题是否被明确定义?

3、问题发生的频率是多少?

4、建议的解决方案是什么?为什么它会成功?

5、这个问题以前做过什么工作?

6、是否有一个明确的成功指标?成功度量是可以自动评估还是需要人工注释?

7、有任何初步的结果吗,比如从概念证明(POC)模型?他们看起来怎么样?

8、 是否有必要的数据?通常需要历史数据来训练模型,并需要实时数据来在生产环境中运行模型。

9、获取和/或创建数据的成本是多少?

10、 项目的风险是什么?考虑数据隐私、偏见和公平性、透明度以及用户接受度等问题。

11、这个项目的经济效益是什么?

12、项目的前期和维护成本是多少?

13、什么是最小可行产品(MVP)?

14、 想象一下它的工作原理。然后呢?



常见错误7:不理解用户


你的用户(客户和/或企业)真正需要和想要的是什么?


这里有一个系统的例子,它并没有像最初希望的那样成功。在20世纪90年代末部署药物-药物相互作用警报系统后,只有44%的退伍军人事务部医生对其准确性感到满意。13%的人甚至认为提醒是浪费时间。另一方面,警报系统有助于检测和预防重大问题,无论它们是否让用户感到烦恼。这里还有另一个例子,也是来自医疗保健领域,其中提供者有50%的时间忽略了与药物相关的临床决策支持(CDS)警报。


解决方案-如何理解用户


你可以通过研究用户的工作方式和他们的需求来改进你的系统。在机器学习和传统软件中都是如此。


1、为用户解决实际问题。

2、让用户参与到开发过程中。

3、向用户提出很多问题。这对你有帮助吗?你想要吗?它会在哪里失败呢?什么是最有帮助的?还有什么比这更有用的吗?

4、与用户谈论POC或产品。

5、使用以用户为中心的设计技术,如访谈、焦点小组、调查、自然观察、情境调查、阴影、角色扮演、Wizard of Oz实验和可用性测试。

6、做好迭代的准备。

7、在开发一个系统时,考虑用户体验的所有方面,例如系统是否有用、可用、可取、有价值、可查找、可访问和可信。


图片来源:谷歌图片(用户)

常见错误8:为技术而开发技术


你是为了技术而开发技术吗? 2016年,麻省理工学院的Kalyan Veeramachaneni描述了机器学习专家如何经常无法解决他们的工作的商业价值。所以解决问题的时候不能为了使用新方法而去研究新方法。


解决方案-如何不为了技术而开发技术


1、在项目开始时评估业务相关性。

2、经常与用户沟通和合作。

3、估计收入、客户满意度收益和成本。这个项目值得做吗?不要因为开发而开发。


常见错误9:不使用现有的解决方案


你知道现在所有的机器学习解决方案吗?谷歌的人工智能平台、AWS的机器学习服务、Facebook的人工智能工具、微软的人工智能平台、苹果的机器学习产品等主要技术公司的产品值得一试。对于机器学习(AutoML)的自动化应用,有很多工具可供选择,比如Capital One的《自动化机器学习:评价和比较AutoML方法和工具》。


解决方案-如何找到和使用现有的解决方案


1、保持对外界事物的警觉。

2、寻找过去的工作。

3、使用谷歌Scholar和Semantic Scholar搜索学术论文。

4、问技术大牛和行业大佬。

5、定期进行新的技术搜索,学术创新的状态是不断变化的。


常见错误10: 不进行故障分析(debug)


如果不进行故障分析(debug),即对系统中不同类型故障的频率进行分析,那么可能会花费大量的努力而收效甚微。


图片来源:谷歌图片(故障分析)

解决方案-如何进行故障分析并最大化改进


1、分析失败,将故障分类为问题类别并计算每个问题类别的频率。

2、对于每个问题类别,如果你要成功地解决这个类别,请评估在系统级度量上的改进。

3、对于每个问题类别,估计解决该类别的努力程度

4、先解决容易实现的目标。

5、最大化改进和最小化努力水平。

6、一般来说在处理一个问题之前,估计它发生的频率。

7、不要解决不常见的问题,除非出于监管、政策或风险的需要,或者当你已经解决了所有的常见问题,现在处于长尾的时候。


建立一个机器学习模型是很有挑战性的,有一些棘手的部分。你肯定会面临其他一些问题, 但记住如何避免这10个错误,你就会有更多的时间来应对其他挑战,而不会失去动力。




由此可见,在职场中,我们一定要提高自己,让自己可以闲下来做有意义的事,不能忙得要死干无意义的活。拥有人工智能思维,会数据分析,利用好数据价值,使用好机器学习算法,能够深入业务帮企业创造价值,才是职场晋升的关键!

科技的快车越来越快,我们一定要跟上,要成为坐在车厢里的人。

否则,就别抱怨车轮从脸上压过去。

上面说了这么多,你想要掌握更多的机器学习入门的知识以及实践能力,搭建更加有价值的机器学习模型吗?机会来了! 10月20日20点北京理工大学副教授毛老师将通过2天时间带你从数据角度揭秘人工智能/机器学习,结合理论知识与实际操作让你零基础入门机器学习学完即可用于工作!

为了让大家学好机器学习,并具备向上发展的能力,今天特别给大家申请的优惠,限时0.01元给到你!

本次课程,今天在本公众号内,前500名学习名额仅需0.01元报名后福利多多,你将有机会获得:CHERRY机械键盘+15天VIP会员卡+异步社区纸书!(福利详情继续往下看)先到先得!送完为止!
 
北京理工大学副教授
亲自带队
2天机器学习实战案例分析
还在等什么?
扫描二维码1分钱报名听课!

直播时间:10月20日至21日
20:00-21:00
(名额有限,抓紧抢位↓)
马上扫描二维码入群
回复暗语"ML05"
领取参与抽奖名额及开通VIP权限

哇哦!学习+福利两不误!
想了解更多课程详情
继续往下看!
直播福利 拿到手软
KEEP LOOKING FORWARD TO GOING


 

2021已过去四分之三
抓住剩下的三个月
10月20日20点直播
给自己一个职场超车的机会!
 长按扫码,一起进阶高级职场人吧!
👇👇👇


点击“阅读原文”,1分钱抢限量大神课
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/121333
 
25 次点击  
分享到微博