最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

穆晨的数据方法论_v2.0

[复制链接]
跳转到指定楼层
楼主
发表于 2019-6-25 19:54:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1.0到2.0
去年八月中旬,笔者在公众号发表了篇《穆晨的数据方法论_v1.0》,分享了些大数据工程的心得。当初标注为1.0,便是相信很快会有2.0。毕竟技术本身也是会变化的,要学会去拥抱它~^ ^。
随着大半年工作下来,穆晨的确又有了不少新体会,在此一并整理分享给大家。

一、技术边界需明确
—— just SQL?

在当前互联网场景下,数据技术与数据工程的根本目的是以Table+SQL+AI算法模拟业务运转与大脑分析过程,为数据消费者提供及时准确的信息输入。其中消费者既可是研发或运营人员,也可以是客户端、网站、APP等。
确切来说,数据技术将涉及到:
  • 架构建模:设计科学的项目架构,并进行规范的数据建模与开发。在满足总体需求前提下,以数据的低冗余、高复用、可扩展、泛兼容等为核心指标;
  • 智能优化:提升数据智能化水平,尽可能从数据中提炼出知识,并以标签或报表等形式积累起来;
  • 质量工程:确保数据正确,并监控数据链路的完成时间,以及数据的存储与计算健康情况;
  • 流程管理:制定研发任务集,并通过甘特图等项目管理工具挖掘更高的并发度,提升研发效率;
  • 团队合作:合理配置项目组成员/团队,彼此高效协同的完成任务。

若缺乏以上技术而暴力SQL,则随着迭代数增多会出现很多问题:如数据表关系混乱不堪,维护成本暴增;如输出数据新颖度不够,变现能力堪忧;如数据生产耗费资源飙升,产出时间越来越慢;如开发工作串行开展,工作效率不高等等。
那么回到副标题:数据技术就是写写SQL么?答案显然是否定的。

二、架构模型要三思
—— modeling

很多时候我们会听到一个术语:建模。所谓建模,是指为理解事物而做的抽象表述。当事物较为复杂时,我们要做的更是不止一级抽象,而是多维度的体系化建模。
大数据工程中,笔者常用一种三层建模法:架构建模-域建模-数据建模,接下来分别进行讲解。
首先是架构建模,即根据业务诉求与现有研发组件设计系统架构。该环节需遵循三大原则:满足业务诉求、发挥工具优势、避免烟囱开发。举个例子,当某业务场景下的可用组件有算法与BI引擎时,可采用如下设计:
以下是各层职能介绍:
  • 同步层:汇总各类业务系统与本地数据,并进行初始级别的数据清洗;
  • 数仓层:对数据展开规范化建模,使之尽可能满足低冗余、高复用等指标,以便于下游使用;
  • 引擎层:封装各类组件对数据的加工操作,如算法引擎或报表引擎,并向下游提供接口;
  • 资产层:输出常用的标签画像、算法模型、BI报表等,以实现更敏捷的复用;
  • 应用层:将数据回流至最终消费对象,通常是PC客户端、网站、APP等。

然后是域建模。传统域建模中,由于数仓定义为面向主题,故通常直接划分数据域。这样的弊端是要做多次维度抽象,在快迭代型业务中会显得笨重。笔者建议采取数据域+业务域两级划分,快迭代型业务用业务域->数据域,成熟型业务则采用数据域->业务域,如下图所示:
最后是数据建模,即设置Table来模拟大脑思考或实际业务逻辑。其中维度模型类似前者,常用于构建数据域;类E-R模型则有似后者,可用于支撑业务域。维度数仓相比规范化数仓能很快投入使用,符合竞争激烈的互联网领域,但这种方式在业务频繁变更时表现很一般。
在快迭代场景下,星型、雪花、星座等维度模型由于仍要开发维度事实表,因此显得笨重。笔者常用一种逆规范化的类E-R建模,改面向主题为面向业务,将Table划分为枚举表、实体表、事件表、关系表......,同时增加时间戳和有效标签以解决维度变化问题。
以上便是架构模型的“三思”。而当模型设计好后,还有个很关键问题:“好”的标准是什么,如何评估?这里笔者建议从以下几方面着手:
  • 低冗余:冗余带来的问题可不单只是存储消耗,更麻烦的是多份冗余之间一致性的维护;
  • 高复用:架构模型中的组件或数据表应服务足够多下游,缺乏复用的本质就是烟囱开发;
  • 可扩展:后续新业务的接入不能破坏当前架构模型,改动应采用“增量式”而非“重构式”;
  • 泛兼容:架构模型尽量兼容主流数据平台,如Hive、Max Compute等,尽量减少迁移成本;
  • 响应灵活:评估总体需求,在离线与在线、批量计算与流式计算、细粒度表与粗粒度表、T+1与T+2等方案之间权衡,做出开发资源分配的最优决策。

架构模型设计好,就可以启动研发工作了。但也许你也曾听过这么一句话——“我们淹没于数据的海洋,却饱受知识的饥渴”。

  三、智能优化是亮点
—— knowledge

AI为数据赋能的过程,即为数据向知识升华的过程。如果说数据是精确描述事实,那当今火热的智能学习技术则对应另外两类问题:解释过去和预测未来。
从算法工程角度出发,数仓之上可架构算法引擎,进而支持商品推荐、智能定价、潜客圈人等业务场景,对应上节引擎层;从数据工程角度出发,算法引擎产出的数据可并入数据资产,对应上节资产层。听着似乎有点绕......下面分享个具体案例:线下商户画像。
首先YY业务场景——“某家大型连锁实体型商户,希望深入洞察每家分店情况,从而制定精细化营销策略。已知消费者大都已安装某款移动支付APP,它能自动上报用户交易与位置等信息。”
接着进行域划分,可将画像初步划分为基础域、流量域、交易域和经营域。对于基础标签与离线标签,可直接汇总APP上报数据。对于动态标签,则需接入在线计算引擎并考虑是否提升输入粒度,以精度换速度。对于算法标签——潜客群与显客群标签,下面分别来介绍。
潜客群标签,即最倾向进店消费的客群画像,可从社会影响力、购买力、购买偏好等方面描述。本方案预先接入第三方数据源,对全量用户打标,构建出用户标签库;然后采用智能学习算法对用户购买行为进行预测,将预测为真的客群中比例最多的用户标签记为店铺潜客群标签。
然而单单分析潜客效果并不好。举个栗子,若商家将分店开至香港,潜客画像很可能显示主流用户来自广东,而这并无任何参考价值,因为大家都知道香港地区广东游客最多。因此要通过所在地区或行业等大盘情况对结果逆向平滑,这也是引入“显客”概念的原因。
显客群标签计算可借鉴NLP关键词提取技术,将店铺显客群标签对应为文本关键词;将店铺所在地区对应为语料训练库。可用的关键词提取算法有很多,如tf-idf便可直接拿来计算标签显著度,详情见下图。店铺所有的标签显著度计算完毕后,取topN标签为其显客群标签。
至此还有两个潜在问题。其一,可能有的店铺很火,占了所在地区绝大部分交易,导致自身无显著标签;其二,新开店铺或新推广APP的店铺交易数据量小,无法用于计算idf值。对于前者可采取均衡采样,后者则可用潜客引擎为这类店铺“补”上部分交易用户。
以算法研究的角度回看本案例,笔者认为优化深度学习潜客引擎,以及引入多方数据源展开迁移学习会有较高探索价值,因此后续还会单独拟文分享。此外画像质量评估、画像业务建模也是很有趣的话题,本文因篇幅所限就不一一展开了。
本节最后,再来谈谈复用的话题。细心读者可能已经发现,潜客模型在本案例中用到了两次,用户标签库也会被多次到。因此可以将这两部分一同并入数据资产,进一步提升数仓的复用指数。


四、质量工程不能少
—— quality

“道路千万条,安全第一条”——数据研发也同样如此,保障数据质量是所有工作的最高约束。通常来说,质量问题又可分为狭义与广义两种,其中前者专指数据内容正确无脏数据,后者则还包括数据按时产出、存储健康、计算健康等方面。

狭义质量问题通常是由于业务系统或数据生产环节出现脏数据所致。其中,系统问题需系统人员承担,同时数据人员设好门禁,杜绝“病从口入”;加工问题则需数据人员落实好“代码告警->代码复查->规则监控->监测节点->定期巡检”等一系列数据保障工作。
广义质量问题的溯源则相对复杂得多,比如产出延迟原因可能是输入数据暴增,可能是平台资源不足,也可能是代码不规范导致的数据倾斜。对于此类问题,当前大都是通过读取元仓或解析日志获取各类元信息,再以平台化的形式呈现给数据工程师自行诊断。
上述为质量问题的发现与治理。此外预防也是一种很有效的手段,笔者建议编制并维护一份数据模型与编码规范,在所有开发人员之间形成共识。


  五、研发流程多并发
—— process

可以看出数据研发包含好些步骤,而到具体落地环节涉及的事务就更多了。以项目管理角度看,整个大数据工程将会由许许多多工作流节点构成,这也给项目管理工作带来了不小的挑战。
首先是要明确工作集内容。常见工作节点包含需求评审、架构设计、数据/算法建模、数据/算法开发、数据/模型线下测试、数据/模型发布、数据初始化/模型训练、数据回流、线上测试、质量工程、项目复盘等等。
然后是各工作节点的并发问题。显然算法与数据部分工作可并发开展,不同层级的编码工作亦可同步启动,即先将代码与测试代码开发完,这样一旦源数据就绪便可以开始自测了。
特别建议采用专业项目管理软件,或起码用甘特图来管理项目。这样做的一个好处是项目复盘时有据可依,而更重要的是将来若要启动类似项目,存档文件将具有很高的参考价值。


  六、团队协作有门道
—— cooperation

写到这突然想起个老梗——“我有改变世界的idea,就缺一个程序员了......”。啊哈,这逗逼想法显然是没看清简单需求背后的复杂细节。就好比想要手机上网快,需求看着简单吧,可这是人大半个通讯行业在做的事。
那么除了“一个程序员”,完整项目还需要什么角色呢?这里笔者大致梳理了下,常见的就有项目管理、商务拓展、产品经理、产品运营、数据开发、算法开发、后台开发、前端开发、测试团队、平台运维、专业美工......这哪是一个程序员cover得住的呢?
以上还只是粗略划分,仅就数据开发而言,还可续分为数据同步、中台数仓、数据资产、业务数据、元数据管理、实时数据、关系数据库等等。大型企业中一般会配置不同团队,而中小企业则往往一人身兼数职。
上图展示了一个小型数据项目的协作范例,可以看出项目的推进并非单凭几号人,而是多团队高效协作的结果。对于大型数据项目而言,协作关系就更是错综复杂了,通常需要专业PM从中统筹协调。

结 语
数据技术的本质是一门工程方法论,涵盖技术点较多,本文正是将它们串联起来,实现无序到有序的知识整理。然而笔者才疏学浅,偏颇之处也在所难免,欢迎同行朋友们后台交流、指正。

作者:穆晨  来源:拾光斋


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 06:41

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表