写给大数据从业者:数据科学的5个陷阱与缺陷

来源 | AI 前线

作者 | 陈炬,责编 | Carol

出品 | CSDN云计算(ID:CSDNcloud)

导读: 这篇分享主要总结了数据从业人员在实践中可能遇到的陷阱与缺陷。跟其他新起的行业一样,数据科学从业人员需要不停的去考虑现在,考虑未来;需要不断的斟酌工作方法的合理性,正确性。思索不断,才能前行。

注:文中斜字体表明该内容具有比较强烈的主观判断,并不是行业共识。

最近看新闻,发现数据科学专业已经是北京大学高考入学门槛最高的专业了,其实"Data Science" 这个词性感了快十年了,对互联网行业而言,相当于性感了一世纪。

从“数据说话”,”DT 时代”,到 “数据中台”,“数据驱动(Data Drive/Data Driven)”,数据体系的不断演进正在持续的改变大家的工作与决策方式;正在不断的革新大家的思维方式;同时也产生了新的商业逻辑,新的发展机会。

1976 年,Pascal 作者 Nikalus Wirth 曰:Algorithms + Data Structures = Programs.

就像之前的“SOA”,“云计算”等概念一样,目前数据科学自身的概念还在不断的变革,各家公司的实践者们一边摸索,一边获利;一边总结,一边布道;当然同时还参杂着很多凑热闹的同志把概念折腾的更加模糊。所以数据科学本身的能力边界,方法论体系,最佳实践等等还没有完善的建立起来,有很多问题没有办法很好的回答。由此就会产生一些迷信和误会,”强行数据“,”随意数据“,”政治正确数据“等等情况比较常见, 无论是实际的操作层面,还是方法层面,都存在着一些不小的误会。这也是我打算总结一下在数据科学实践中存在的陷阱与缺陷的缘由。

这篇分享是根据我自己的工作经验,和对相关资深同事的访谈总结而成。它的正确性受限于我个人的认知水平和目前行业的发展水平,它整理了一些目前可能存在的问题,但未必是长久的道理。希望大家读的时候批判性的看待。抛砖引玉,如果有不同想法欢迎大家跟我随时沟通与验证,结论本身也可以随时更新。

数据质量杀死自动 / 智能决策

网易严选的很多业务,比如风控业务,核心驱动力是数据及算法。我们在风控业务起步的时候就建立了数据算法驱动风控的方法体系,所以能保证很小的团队(3 个人)来支撑严选几十个内外部风险场景,每天执行百万次风险决策。当然,这是数据驱动自动决策 / 智能决策带来的力量。成功的美好,或许会让你按耐不住的想把很多业务运转方式转型过来,但遗憾的是,数据质量保障的缺失会让这一切变成随时会倒塌的空中楼阁!事实上,绝大部分组织对数据质量的理解 支撑不了更加自动和智能的决策场景。强行转型与减员增效会让他们原本稳定的业务接近崩溃。

严选风控出现过几次大的故障都跟数据质量紧密相关。今年 8 月份的时候,风控在执行每周误判巡检的时候发现整体疑似误判率增加了 4 倍。最终定位原因是设备号相关的日志内容有些异常。从而导致了相当一部分用户的行为(签到操作)被错误的执行了拦截。

这是一个很有意思的案例。一些关键的决策:比如用户是不是坏人?某个商品要采购多少量?可能会依赖于很不被重视的某个线上日志的一小部分内容。我们的整个质量保障体系很难把视角投入到某个具体应用的某个日志字段在高压力下会不会出错?在传统的应用服务质量保障理念里,日志字段的某个偶尔的小错误,没人会把它当作 Bug,开发人员更不会去关注。但如果你一旦把 数据当作了生产资料如果我们不对应用质量保障的理念和工具进行革新,你的大量的数据分析报告,训练好的算法模型,做出的决策可能很不可靠,因为你的生产资料本身就是垃圾,而古语有言:Garbage in , garbage out。

还有一个惊人的现状是,大量用于生产数据的复杂 SQL 并没有进行真正的测试,甚至,大量的数据系统并不存在一个所谓的测试环境。我们很难像测试线上服务(比如订单系统)那样去测试数据生产过程的正确性。那么这样通过几万行,甚至几十万行(严选)SQL 生产出来的数据到底能不能用?这个问题其实很难回答。

数据的可靠性是组织在转型数据驱动过程中一个非常大的陷阱。

大家都在讨论数据质量的重要性,但是内心又默默觉得这个事情比较低级。因此,我们很少见到有团队会把大量聪明的大脑投入到数据质量的保障上。

除了资源投入的缺失,很多数据团队对数据质量的认知也是各不相同。我曾经跟一位在数据行业从业 15 年,为某知名公司数据体系做出巨大贡献的前辈做过一次深入的沟通,聊起数据质量,”你觉得数据质量是什么?“ 他的回答是:“数据质量,真正需要考虑的是指标一致性。”。瞧瞧,就算是非常资深的同行,他的认知还是不够完整,按他对数据质量的理解,数据的支撑能做到报表给人看,这个层面就很完美了,要落地到战术层,落地到线上自动决策基本不可行(因为数据质量的故障难以像线上程序故障一样快速修复,它是一个持续污染的过程)。

数据做为智能决策的输入,是动态变化的。它没法像代码的依赖那样做静态分析,它的依赖层次动态而不稳定。

数据科学的"科学”在哪?

数据科学是我们常常说起的一个词,也是形容我们日常工作的一个词,但当我们说起的时候,内心就会有些心虚,就光看到数据了,“科学”在哪里?如果没有”科学“的部分,我们的产出的结论会不会有问题?

这是一个最常见的问题,数据科学的从业者们,不知道什么是”科学“。所以江湖上才会有 SQL Boy, SQL Girl 的称呼。

一个常见的问题是数据指标之间的相关性到底是不是真的相关?我们做数据分析往往能看到很多有趣的相关性,比如最近几个月买了拖鞋的用户,看起来有更大的可能性在最近一个月复购另外一个商品。但是,这个相关性到底是不是真的存在,还是只是偶然的巧合(False Postive)?我们的分析报告很容易对这个问题视而不见。但如果这个相关性本身经不起推敲,它又如何来指导我们的工作呢?数据分析报告难道要靠运气来驱动业务发展么?

就算我们有不错的统计基础,给每个假设都加上了 P Value, 我们往往还很容易把相关性与因果性给搞混。两个事情相关,并不能得出结论说他们之间互为因果。我们需要通过因果分析的方法,为数据之间的相关性提出符合业务逻辑和商业逻辑的解释。

如果数据分析遗漏了因果分析这个过程,就会得出一些奇怪的结论。比如,我们发现较大的用户,买的鞋子一般也是大号。如果缺乏基于业务逻辑的因果分析我们可能会这样指导运营工作:为了让用户的脚变大,我们应该多卖大号的鞋子给他们。

但有的时候,我们很难直接的分析出数据之间的因果关系,很难直观的得出结论,这个时候,我们需要借助科学实验,帮我们更深入的理解我们的业务。

如何去做科学实验,我结合滴滴谢梁大神的观点(谢梁,数据科学中的“科学”),总结如下

  • 通过对数据的敏锐度和业务的熟悉程度,发现和定义问题;

  • 提出结构化,可量化的假设;

  • 设计验证实验。科学与实验是紧密关联的。在严选和很多公司,我们往往利用实验来判断方案的好坏。但是,其实实验更多的是用于帮助我们验证假设,帮我们更加深入的理解我们的用户(著名实验公司今天头条 CEO 说:更多的时候,AB 测试帮助我们理解用户,而不是帮助我们决策)。设计一个好的实验,并不容易,需要根据假设梳理出要验证的指标,样本集,可控制的因子(往往是流量)。设计实验,需要极强的专业性。

  • 收集与分析数据。分析数据并不仅仅是直观的去看趋势的高低。分析数据首先需要对业务的主要指标及其相关性有清晰的概念,需要把指标之间的相关因子量化,甚至可计算。我认为是先有结构化、系统化、量化的体系,再有数据分析。所幸的是,结构化的体系我们可以用系统和服务来支撑。我们团队今年主要在设计与研发的 DIS 系统严选数据智能平台),一个主要目标就是解决这个问题。

  • 分析人员需要专业的量化分析能力、统计学能力。

操纵,误导,数据的民主化不足

数据民主化在国外的数据社区讨论的很多,国内聊的比较少。数据科学家们通过黑魔法制造出一些模型来,然后告诉业务同学该怎么决策,告诉高层业务指标完成的好不好。数据的能力被限制在某一个专业团队,但它的产出却又跟业务紧密相关,这些未知会给业务人员和管理层带来恐惧与不安,数据团队给的结论会不会有可能是被操纵的?会不会有意无意的误导?这些问题会很容易让团队之间滋生不信任。

所以数据民主化不足带来的一个重要问题就是信任问题,那该怎么解决?

严选在一次产技共创会中,有同事提出,要跟业务“谈恋爱”。对于眼下的现实,这确实是解决信任问题的一个好办法。阿里的曾经的数据一把手车品觉老师也说过类似的话:数据同学要会"混,通,晒",跟业务同吃同行,建立信任,才能互相成功。

但这终究不是一个可规模化和标准化的解决方案 。去年,我们在考虑 2019-2020 年严选数据平台发展的时候,想了很久这个问题。如何去降低数据使用的门槛,让一切更直观和更容易解释?我们开展的一些项目,SQL on AI, Data Intelligence System(DIS),算法平台等,一个共同的目标是 降低数据使用门槛,并通过产品的方式固化甚至可视化数据分析过程。

数据预测未来不是理所当然

预测的成功不仅是算法模型

老板们经常会把算法能力简单化:预测的不准?找两个 NB 的算法专家做个模型就能搞定!遗憾的是,现实并不这么简单,你可能找 100 个 NB 的算法专家都没用。

有人见过用算法来预测下一轮双色球中奖号码的么?有人用算法来预测接近混沌状态的股市涨落么?作为一个旁观者,你能利用算法来预测意甲的每场比赛成绩么?

有的业务问题本身是无法预测的,因为它跟过去没有关系(比如双色球);有的业务问题预测成本很高,短时间内无法做出有价值的模型(比如预测股市,预测比赛等),需要考虑投入与回报。事实上,很多算法的成功落地应用,不光是需要有合适的模型,还需要大量维度的数据作为生产资料,更关键的是要有一个完善,可靠的 算法工程体系。而后者,往往会被决策者忽略。

决策者在考虑利用算法模型去预测未来时,他需要想明白 投入与产出,组织需要投入的不止是 几位算法大神就行,还需要建设完善的数据基础体系,还需要建设完善的算法工程体系。决策者如果期望数据和算法能发挥突破性的效应,需要有魄力把成本投入到自己目光不能及的地方,比如基础数据体系,比如算法工程。

空中楼阁 - 基础设施与基础能力的不完备

这个问题比较抽象,对于 BI/ 算法 / 数据产品的同学而言,可能不好理解。不过大家只需要记住:数据的最底层,摇摇欲坠,并不坚实,同样需要一个团队精心守护。

大家在兴奋的玩耍数据,利用数据来驱动业务前进的时候,如果回头望望做 Data Infra 的同学,如果他们告诉你其实你在用的数据能不能真的算出来、有没有算对,他们也没多少信心的时候,你会不会觉得心惊肉跳,会不会觉得人生其实有些虚无?如果大家有机会采访下各个互联网公司,可以问问他们被抱怨最多或者故障最多的技术团队是哪个?相信答案都比较一致:“大数据基础团队”。包括严选的前面几年,这个情况也非常严重(当然现在也没好多少)。数据故障频出,数据产出排期长、节奏慢、不稳定等情况都很常见,很多时候我们是用睡觉时间在做人肉保障。每每回想起来,都会心惊。

这当然并不是因为大数据基础行业的从业者敬业精神不足或者能力不足。而是因为大数据体系其实并没有一个非常坚实的工程基础。

数据的基础设施可靠性不足:数据的采集系统,数据的存储系统,数据的计算系统,数据的分析引擎,这些服务的可靠性相比其他的在线服务低一大截。数据平台每天的定时数据计算服务,比如 Hive,或者 spark,成功率如果有 98%,已经算是很不错了,而线上服务系统,如果可靠率长期在 98% 以下,相关团队的同学很难坚持一年不被优化。就算数据成功的被计算出来了,我们的分析引擎,比如 impala,查询成功率也长期低于 95% 以下,在严选这个数据还要更差一些,impala 的查询失败或者超时,几乎每天都有不少。

计算模型不完备和广泛的误解:大数据的计算有两个模型:Streaming,Batch。两个模型对应的基础设施各自独立发展,谁也不理谁。同时,由于信息流转的速度问题,也有人把这两个模型称为实时计算和离线计算。虽然,Streaming & 实时计算;Batch & 离线计算,在很多现实场景中,存在着一致性,但本质上,它们是两回事。甚至很多从业者也无法清晰的分清楚这些基本概念,把实时计算和流计算等同,这给数据工作带来了巨大的困扰。

为了适配这两个计算模型,很多组织的 Data Infrastructure 团队会有独立的流计算团队和批处理团队;会有实时数仓和离线数仓,会有实时指标和离线指标等等。这些数仓和指标的研发人员存在着割裂,数仓建设方法论、指标定义也不尽相同。维护成本和解释成本都很高,出错几率也很大。很常见的情况是一个业务的数据需求,往往需要拆解成实时和离线两个方案,共同去实现。这个糟糕的局面没有变的更好。

LinkedIn、Uber、阿里等等公司都在尝试做批流融合,严选也在尝试,我们在做计算资源管理和调度层面的融合。但是,融合两种完全不同的计算模型,是一件不美好的事情,直觉上也不大对。我觉得现实的业务问题可能并不是聚焦在批流两种计算模型的不兼容上,而是聚焦在实时和离线两个时间维度上的不兼容。由于历史原因,实时的数据往往需要依赖流计算模式来产生,从而产生了实时计算 == 流计算的误会。而融合实时数据与离线计算,解决起来就容易很多 。而流处理也需要走向更适合它的场景。

其实能总结的问题远不止这些,比如我们会担心“算法替代思考,会不会伤害组织的远见?”、“大规模依赖 A/B 测试做决策,可能会导致运营策略的短视” 等等。

作者介绍: 

陈炬,网易严选数据平台及风控部负责人。目前主要负责数据平台,智能决策平台,数据工程,算法工程及严选风险控制等相关工作。十余年从业经验,参与负责过网易自研的 MR 计算系统;网易大规模分布式小文件存储系统;网易邮箱多级存储系统;网易严选,网易邮箱等通信网络层协议等。个人主要关注在大规模分布式系统,分布式存储,网络协议,数据科学等方向。

推荐阅读:利用丁香园数据生成疫情分布地图(R语言)| 博文精选
2020云计算,是四强争霸还是赢家通吃?
PHP 8 能有多快?
“夸夸机器人”App来了:变身百万粉丝大V,48万人给你的帖子点赞
2019年度区块链安全复盘总结
在家办公,我比上班还累你信吗?
真香,朕在看了!猛戳“阅读原文”,填写中国远程办公-调查问卷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

winform php 交互,WinForm开发,窗体显示和窗体传值

以前对WinForm窗体显示和窗体间传值了解不是很清楚最近做了一些WinForm开发,把用到的相关知识整理如下A.WinForm中窗体显示显示窗体可以有以下2种方法:Form.ShowDialog方法 (窗体显示为模式窗体)Form.Show方法 (窗体显示为无模式窗体)2者具体区别如下:1.…

阿里云数据库自研产品亮相国际顶级会议ICDE 推动云原生数据库成为行业标准

4月9日,澳门当地时间下午4:00-5:30,阿里云在ICDE 2019举办了主题为“云时代的数据库”的专场分享研讨会。 本次专场研讨会由阿里巴巴集团副总裁、高级研究员,阿里云智能数据库产品事业部负责人李飞飞(花名:飞刀&#…

常用git

常用git #在此分支基础上创建test分支,并切换到test 注:本分值的以前提交记录会保存 git checkout -b test #在此分支基础上创建uat分支,并切换到uat 注:本分值的以前提交记录会保存 git checkout -b uat #将本地的uat分支推送…

springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式

注只适配utf-8的场景,待完善! 压缩为zip文件 通过java程序输出文件 /*** 功能:压缩多个文件成一个zip文件* param srcfile:源文件列表* param zipfile:压缩后的文件*/ public static void zipFiles(File[] srcfile, File zipfil…

大神如何一招完美解决Hadoop集群无法正常关闭的问题!| 博文精选

来源 | CSDN 博客作者 | Alice菌,责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)相信对于大部分的大数据初学者来说,一定遇见过Hadoop集群无法正常关闭的情况。有时候当我们更改了Hadoop内组件的配置文件后,…

oracle怎么查语句消耗时常,Oracle 查找常见耗性能的语句

-- 最耗缓存SELECT * FROM (SELECT SQL_FULLTEXT sql,buffer_gets, executions, buffer_gets/executions "Gets/Exec",hash_value,address,LAST_ACTIVE_TIMEFROM V$SQLAREAWHERE buffer_gets > 10000ORDER BY buffer_gets DESC)WHERE rownum < 10 ;-- 最多物理…

现代IM系统中的消息系统架构 - 架构篇

前言 IM全称是『Instant Messaging』&#xff0c;中文名是即时通讯。在这个高度信息化的移动互联网时代&#xff0c;生活中IM类产品已经成为必备品&#xff0c;比较有名的如钉钉、微信、QQ等以IM为核心功能的产品。当然目前微信已经成长为一个生态型产品&#xff0c;但其核心功…

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID 给程序配置新的数据库的时候&#xff0c;出现了以下错误 ORA-12505, TNS:listener does not currently know of SID given in connect descriptor说明给到的sid有误,很有可能就是服务名和sid混淆使用。 首先了解…

华南地区最大数据中心上线 阿里云河源数据中心正式开服

2月18日&#xff0c;阿里云在官网宣布&#xff0c;河源数据中心正式对外提供服务。这是华南地区规模最大的绿色数据中心&#xff0c;可容纳超过30万台服务器&#xff0c;作为深圳地域的新可用区为华南地区上百万企业客户提供领先的云计算、人工智能、物联网等服务。 据悉&#…

在阿里做了五年技术主管,我有话想说

阿里妹导读&#xff1a;在历史文章《如何成为优秀的技术主管&#xff1f;》中&#xff0c;阿里巴巴高级技术专家云狄从开发规范、开发流程、技术规划与管理三个角度&#xff0c;分享对技术 TL 的理解与思考。 今天的文章&#xff0c;他将继续深入探讨这一话题&#xff0c;从管理…

oracle删除查询的数据库语句,Oracle简略的语句 查询 删除 修改(1)

Oracle简单的语句 查询 删除 修改(1)Dual系统表介绍数据类型&#xff1a;数据是信息数字表现形式,信息的加工处理是以大量的结构化数据为载体进行的,数据库管理系统的核心是数据库,数据库的主要对象是表,表是结构化数据存储的地方.Oracle系统也提供了大量的数据类型主要包括两大…

Fish Redux中的Dispatch是怎么实现的?

零.前言 我们在使用fish-redux构建应用的时候&#xff0c;界面代码&#xff08;view&#xff09;和事件的处理逻辑&#xff08;reducer&#xff0c;effect&#xff09;是完全解耦的&#xff0c;界面需要处理事件的时候将action分发给对应的事件处理逻辑去进行处理&#xff0c;…

装载服务器安装和配置_一站式解决方案

文章目录一、安装搭建篇1.1. 安装ORACLE客户端1.2. 安装LFTP1.3. 安装DBI和DBD&#xff08;1.4. 将应用包导入数据加载服务器1.5. 数据库账号密码加密策略二、进阶篇2.1. 数据库操作2.2. 加载器操作2.3. 数据库连接2.4. 模型变更2.5. 装载数据到目标表2.6. 装载特殊场景三、特色…

码上用它开始Flutter混合开发——FlutterBoost

开源地址: https://github.com/alibaba/flutter_boost为什么需要混合方案 具有一定规模的App通常有一套成熟通用的基础库&#xff0c;尤其是阿里系App&#xff0c;一般需要依赖很多体系内的基础库。那么使用Flutter重新从头开发App的成本和风险都较高。所以在Native App进行渐…

Linux系统常用指令总结

来源 | CSDN 博客作者 | 不撸代码闲得慌&#xff0c;责编 | Carol出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;系统的运行级别0&#xff1a;关机1&#xff1a;单用户模式&#xff08;可以找回丢失的密码&#xff09;2&#xff1a;多用户状态没有网络服务…

在php中调用java接口吗,php 调用 java 接口

php 需要开启 curl模块/** HTTP 请求函数封装*/function http_request_cloudzone($url, $data){//var_dump($url."test");if(!$url){return "";}$ch curl_init ();curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //禁用证书curl_setopt($ch, CURLOPT_…

像数据科学家一样思考:12步指南(下)

第三阶段-完成 一旦产品构建完成&#xff0c;你仍然需要做一些事情来使项目更加成功并使你的未来生活更轻松。那么我们如何完成数据科学项目呢&#xff1f; 10-交付产品 完成阶段的第一步是产品交付。为了创建可以交付给客户的有效产品&#xff0c;首先必须了解客户的观点。其…

数据加载操作手册

文章目录一、基础资料准备1.1.表名规约1.2.设计1套临时表和1套同构层表1.3.存储过程二、流程规范2.1. 生成控制文件(.ctl)2.2. 拉取ods推送的数据文件2.3. 数据加载数据同步三、手动调度3.1. 到下载的数据文件路径&#xff1a;3.2. 数据文件筛选3.3. 将要加载的表的备份表清空;…

基于Tablestore管理海量快递轨迹数据架构实现

快递轨迹管理 对于一个快递公司&#xff0c;在全国范围内有着大量的快递点、快递员、运输车辆以及仓储中心。而快递自产生后&#xff0c;就会在这些地点、人物之间流转。因而&#xff0c;一套完善的快递管理追踪系统是快递公司的重要管理工具&#xff1b; 用户通过平台客户端…

完了!Python黄了! 80%的程序员:痛快!你怎么看?

Python真的万能语言&#xff1f;在我的一个朋友看来&#xff0c;他坚信 Python 可以做任何事情。其实我是不服的&#xff0c;因为我在某网站看到有条评论&#xff1a;Python将要黄了&#xff01;事实究竟如何&#xff1f;这篇文章会揭开这个黑幕&#xff0c;让程序员看清现实&a…