纯干货分享:人工智能与大数据开发的12个注意点,经验之谈

人工智能是近年来科技发展的重要方向,在大数据时代,对数据采集、挖掘、应用的技术越来越受到瞩目。在人工智能和大数据的开发过程中,有哪些特别需要注意的要点?

人工智能领域的算法大师、华盛顿大学教授Pedro Domingos对此进行了深入思考。

在我们新近翻译的《智能Web算法》(第2版)中,对Pedro Domingos教授的观点进行了高度的概括,提炼出12个注意点,为行业开发实践提供了重要参考:

注意点1:你的数据未必可靠

对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解

想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家

并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。

在实际应用中,有很多各种各样的原因会导致你的数据是不可靠的。因此,当你将数据用于解决问题前,必须经常留心来检查数据是否值得信赖。如果基于糟糕的数据来挖掘,无论多么聪明的人也永远只会获得糟糕的结果。下面列举了一些常见的可导致数据可靠性问题的因素:

? 用于开发的数据,往往和实际情况下的数据分布不同。例如也许你想把用户按照身高划分为“高”、“中等”、“矮”三档,但如果系统开发时使用的数据集里最低用户的身高是6英尺(184cm),那么很有可能你开发出来的系统里会把一个“仅有6英尺”的用户称为“矮”用户

? 你的数据集中存在很多缺失数据。事实上,除非是人为构造的数据集合,否则很难避免缺失数据问题的发生,如何处理数据缺失的问题是很有技巧的事情。实践中我们要么是干脆丢弃一部分残缺的数据,要么就是想办法计算一些数值去填补这些缺失值。无论哪种方法都可能导致应用结果的不稳定

? 你的数据可能随时在变化。数据库的表结构可能会变,数据定义也可能会变

? 你的数据可能没有被归一化。假设你可能在观察一组用户的体重,为了能够获得有效的结论,首先需要对每个体重的衡量单位进行归一化,是英镑还是公斤,不能混淆着用

? 你的数据可能并不适用于相应的算法。数据存在着各种各样的形式和规范,或者叫数据类型(data types),有些是数值化的数据,有些则不是。有些数据集合能被有序排列,有些则做不到。有些是离散化的数据(例如房间里的人数),另一些则是连续化的(例如气温或者气压等数据)

注意点2:计算难以瞬间完成

完成任何一个人工智能解决方案的计算,都需要一定的时间,方案的响应速度,对商业应用的成功与否起到十分关键的作用。不能总是盲目假设任何算法在所有数据集上都一定能在规定时间内完成,你需要测试下算法的性能是否在可接受的应用范围内。

以搜索引擎为例,用户对结果返回的时长是有忍耐的限度的。如果用户等待的时间超过10秒,50%的用户会流失,如果等待时间超过1分钟,90%以上的用户会流失。在开发智能应用系统时,不能为了达到更好的算法精度而忽略系统运算和等待的时间,否则会导致整个产品的失败。

注意点3: 数据的规模非常重要

当我们考虑智能应用时,数据规模是很重要的因素。数据规模的影响可以分为两点来考察:第一点是规模会影响应用系统的响应速度,上一节我们刚提过;第二点是在很大的数据集上的挖掘出有价值结果的能力会受到考验。例如为100个用户开发的电影或音乐推荐系统可能效果很好,但是同样的算法移植到有着100000个用户的环境里,效果可能就不尽如人意了。

其次,使用更多的数据来训练的简单算法,比受制于维度诅咒(Dimension Curse)的复杂算法往往有好得多的效果。类似Google这样拥有海量数据的大型企业,优秀的应用效果不仅来自于精妙复杂的算法,也来自于其对海量训练数据的大规模分析挖掘。

注意点4: 不同的算法具有不同的扩展能力

我们不能假设智能应用系统都可以通过简单增加服务器的方法来扩展性能。有些算法是有扩展性的,而另一些则不行。

例如如果我们要从数亿的文章标题里,找出标题相似的各个组的文章,注意并不是所有的聚类算法此时都能并行化运行的,你应该在设计系统的同时就考虑可扩展性。有些情况下你需要将数据切分成较小的集合,并能够让智能算法在各个集合上并行运行。设计系统时所选择的算法,往往需要有并行化的版本,而在一开始就需要将其纳入考虑,因为通常围绕着算法还会有很多相关联的商业逻辑和体系结构需要一并考虑。

注意点5:并不存在万能的方法

你可能听说过一句谚语“当你有了把榔头的时候,看什么东西都像钉子”,这里想表达的意思是:并不存在能够解决所有智能应用问题的万能算法。

智能应用软件和其他所有软件类似——具有其特定的应用领域和局限性。当面对新的应用领域时,一定要充分的验证原有方法的可行性,而且你最好能尝试用全新的视角来考察问题,因为不同的算法在解决特定的问题时才会更有效和得当。

注意点6:数据并不是万能的

根本上看,机器学习算法并不是魔法,它需要从训练数据开始,逐步延伸到未知数据中去。

例如假设你已经对数据的分布规律有所了解,那么通过图模型来表达这些先验的知识会非常有效。除了数据以外,你还需要仔细的考虑,该领域有哪些先验知识可以应用,这对开发一个更有效的分类器会很有帮助。数据和行业经验结合往往能事半功倍。

注意点7:模型训练的时间差异很大

在特定应用中,可能某些参数的微小变化就会让模型的训练时间出现很大的差异。例如在深度神经网络训练时就会有各种各样的参数调节的情况发生。

人们往往会直观地觉得调整参数时,训练时间是基本稳定不变的。例如假设有个系统是计算地球平面上任意两点之间的距离的,那么任意给出两个点的坐标时,计算时间差不多都是相同的。但在另一些系统里却并非如此,有时细微的调整会带来很明显的时间差异,有时差异甚至可以大到数小时,而不是数秒。

注意点8:泛化能力是目标

机器学习实践中最普遍存在的一个误区是陷入处理细节中而忘了最初的目标——通过调查来获得处理问题的普适的方法。

测试阶段是验证某个方法是否具备泛化能力(generalization ability)的关键环节(通过交叉验证、外部数据验证等方法),但是寻找合适的验证数据集不容易。如果在一个只有几百个样本的集合上去训练有数百万维特征的模型,试图想获得优秀的精度是很荒唐的。

注意点9:人类的直觉未必准确

在特征空间膨胀的时候,输入信息间形成的组合关系会快速增加,这让人很难像对中等数据集合那样能够对其中一部分数据进行抽样观察。更麻烦的是,特征数量增加时人类对数据的直觉会迅速降低。

例如在高维空间里,多元高斯分布并不是沿着均值分布,而是像一个扇贝形状围绕在均值附近,这和人们的主观感受完全不同。在低维空间中建立一个分类器并不难,但是当维度增加时,人类就很难直观的理解了。

注意点10:要考虑融入更多新特征

你很可能听说过谚语“进来的是垃圾,出去的也是垃圾”(garbage in, garbage out),在建立机器学习应用中这一点尤其重要。为了避免挖掘的效果失控,关键是要充分掌握问题所在的领域,通过调查数据来生成各种各样的特征,这样的做法会对提升分类的准确率和泛化能力有很大的帮助。仅靠把数据扔进分类器就想获得优秀结果的幻想是不可能实现的。

注意点11:要学习各种不同的模型

模型的组合(Ensemble)技术正变得越来越流行了,因为组合方法,仅需要付出少许偏见(bias)的代价,就能大大的减少算法的不确定性。在著名的Netflix算法竞赛中,冠军队以及成绩优异队伍们全都使用了组合模型方法,把超过100个模型合并在一起(在模型上叠加高层的模型形成组合)以提升效果。在人工智能用于实际应用时,从业者普遍都认为,未来的算法一定时会通过模型组合的方法来获得更好精度,但是这也会抬高非专业人员理解系统机制的门槛。

注意点12:相关关系不等同于因果关系

这一点值得反复强调,我们可以通过一句调侃的话来解释:“地球变暖、地震、龙卷风,以及其他自然灾害,都和18世纪以来全球海盗数量的减少有直接关系”。这两个变量的变化有相关性,但是并不能说存在因果关系,因为往往存在第三类(甚至第4、5类)未被观察到的变量在起作用。相关关系应该看作是潜在的因果关系的一定程度的体现,但需要进一步研究。

在开发人工智能与大数据应用系统时,把握好以上十二个注意点,能够有效避免实战中的各种“坑”,帮助技术在走出实验室,走向落地应用时,能发挥更加健壮、强大的作用。

对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解

想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家

并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。

原文地址:http://blog.51cto.com/14068431/2330235

时间: 2024-08-11 18:45:07

纯干货分享:人工智能与大数据开发的12个注意点,经验之谈的相关文章

大数据开发经验分享:学习大数据开发的方法

学习新的知识,最重要的就是学习方法,有一个好的学习方法会起到事半功倍的效果.学习大数据开发的方法有哪些? 一.学会爱数据数据科学是一个广泛而模糊的领域,这使得它很难学习.没有动力,你最终会中途停止对自己失去信心.你需要些东西来激励你不断学习,即使是在半夜公式已经开始变的模糊,你还是想探究关于神经网络的意义.对于小白学习大数据需要注意的点有很多,但无论如何,既然你选择了进入大数据行业,那么便只顾风雨兼程.正所谓不忘初心.方得始终,学习大数据你最需要的还是一颗持之以恒的心. 二.在实践中学习学习神经

大数据开发经验分享:女生学大数据开发优势

在大数据时代下,大数据开发工程师和数据分析师都是非常多的人想要进入的行业.那么,作为女生学大数据难度大吗?女生学习大数据开发有什么优势吗?今天,我们针对此问题做个解答.一.与男性相比,女性在沟通上更有优势众所周知,做大数据就是为了服务于客户,虽然说做出项目可以满足于客户需求,但是如何完整地表达出你所做的项目初衷,则是不少男性大数据工程师的硬伤.女性给人平易近人的感觉,在与客户的沟通中会给客户以好感,自然能够减少与客户的沟通障碍.二.外界对女性工程师的期望值不高现在我们总是在强调男女平等,但是由于

月薪30-50K的大数据开发工程师们,他们背后是如何学习的

推荐一个大数据学习群 119599574晚上20:10都有一节[免费的]大数据直播课程,专注大数据分析方法,大数据编程,大数据仓库,大数据案例,人工智能,数据挖掘都是纯干货分享, 这两天小编去了解了下大数据开发相关职位的薪资,主要有hadoop工程师,数据挖掘工程师.大数据算法工程师等,从平均薪资来看,目前大数据相关岗位的月薪均在2万以上,随着项目经验的增长工资会越来越高. 那么对于新手来说,应该如何开始学习,才能够早日的实现月薪2万多的目标.就小编了解的来说,新手一般需要一年以上的时间才能够达

如何自学大数据开发?

大数据技术怎么自学?大数据开发如何自学? 我们在学习大数据开发前需要先找到适合自己的方式方法,首先需要审视一下自身的情况,是否是以兴趣为出发点,对大数据是不是自己是真的感兴趣吗,目前对大数据的了解有多少,自己的学习能力和理解能力是否适合学习.如果是跨行业转岗是否做好了心理准备.根据不同基础水平可以分为三类: 第一类:零基础学员,对大数据行业和技术一无所知; 第二类:有一定的编程基础,对大数据行业略知一二,无发真正应该用; 第三类:有工作经验的工程师,对大数据行业了解,想转行大数据开发. 在搞清楚

专科学历能学习大数据开发吗?

近来不少想转行大数据的同学在跟我的的交流中诉说到:想做IT行业,但是学历太低啦.怕花了时间和精力来学习IT相关知识,最后却找不到相应的工作,一起努力都付诸东流.对于这类学生,一般会建议他们来学习大数据,为了前沿技术,为了高薪. 具体原因是什么呢,下面一起来了解一下. 因为大数据是IT行业中比较炙热的项目,现在各个用人单位对于大数据相关的人才需求量特别的大.相关统计数据显示,未来3~5年,中国需要180万数据人才,但目前只有约30万人.所以相比其他岗位的饱和状态而言,大数据处于蓝海,学习大数据相关

为什么要学习React,学习React在大数据开发上有什么好处

为什么要学习React,学习React在大数据开发上有什么好处 分享之前我还是要推荐下我自己创建的大数据学习资料分享群716581014,这是全国最大的大数据学习交流的地方,2000人聚集,不管你是小白还是大牛,小编我都挺欢迎,今天的源码已经上传到群文件,不定期分享干货,包括我自己整理的一份最新的适合2018年学习和零基础入门教程,欢迎初学和进阶中的小伙伴. 如何学习React 如果你是一个 React (或者前端) 新手, 出于以下的原因, 你可能会对这个生态圈感到困惑: React 的目标群

大数据好学习吗?如何快速掌握大数据开发技能

大数据好学习吗?如何快速掌握大数据开发技能?经常被学员问到:大数据好学吗?想学大数据怕学不会等问题.我想说的是,大数据在当下是个非常热门的话题,大数据在深刻的影响着这个世界,在促进传统行业升级改造.引领新兴产业和新兴应用蓬勃发展.提升社会运行和管理效率等方面,大数据正引发新一轮革命.大数据是时代潮流,如果学一下就会了,那大数据行业现在恐怕已经被挤破门槛了吧,想学大数据还是得下苦功夫才行. 想学大数据,先把这几个技能学会再说: Apache Hive2.1 Hive是建立在Hadoop上的数据仓库

2018年最新Hadoop大数据开发学习路线图

Hadoop发展到今天家族产品已经非常丰富,能够满足不同场景的大数据处理需求.作为目前主流的大数据处理技术,市场上很多公司的大数据业务都是基于Hadoop开展,而且对很多场景已经具有非常成熟的解决方案. 作为开发人员掌握Hadoop及其生态内框架的开发技术,就是进入大数据领域的必经之路. 下面详细介绍一下,学习Hadoop开发技术的路线图. Hadoop本身是用java开发的,所以对java的支持性非常好,但也可以使用其他语言. 下面的技术路线侧重数据挖掘方向,因为Python开发效率较高所以我

大数据丨分享16个大数据技术

Java编程技术 Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的! 2.Linux命令 对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令. Hadoop** 在