- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
图(关系网络)数据分析及阿里应用
展开查看详情
1 .图(关系网络)数据分析与阿里应用 钱正平 阿里计算平台*达摩院 2019.1.18
2 .为什么要关心图 Why Graph
3 .
4 .Graph analytics for better decisions 数据间的复杂关联与结构特 更精准和可靠的决策 电商 文娱 Machine Learning Better Decision 支付 出行
5 .https://www.artificial-intelligence.video/undergraduate-machine-learning-4-introduction-to-probability-linear-algebra-and-pagerank
6 .Graph matters at Alibaba, too 阿里丰富的图场景 • Billions of vertices (几十亿的点) • Hundred billions of edges (成百上千亿的边) • Real-time updates (实时更新) o e.g., 320K Tmall transactions/s in 2017
7 .Graph data processing paradigms 图数据处理范式 See 看 Insights Get statistics 洞见 特征统计 Pattern On-line inference mining 在线预测 Machine learning 模式匹配 机器学习
8 .
9 .Graph algorithms …… 图算法 Product User OneID Location ……
10 .Pattern-based fraud detection 基于子图模式的异常检测 transfer $100.00 real-time updates transaction “accomplices” $99.00 Click farming-simple Click farming-complex On-line gambling 刷单1 刷单2 线上赌博
11 .Community-based recommendation in Taobao 基于图的机器学习应用于淘宝推荐 𝑈𝑠𝑒𝑟𝑠 𝑃𝑟𝑜𝑑𝑢𝑐𝑡𝑠 𝐴𝑡𝑡𝑟𝑖𝑏𝑢𝑡𝑒𝑠 𝐴𝑡𝑡𝑟𝑖𝑏𝑢𝑡𝑒𝑠 80s color = red ? Male brand = Gap IT professional for summer We encode the following “intuitions” 图结构信息有利于解决冷启动/结果可解释性等难题,也能引入多样性! • Reflect each user/item’s uniqueness • Utilize structural information (transaction or viewing edges) • Utilize user/item attributes (handling cold start problem in CF) • Introduce nice “surprise” via graph exploration
12 .On-line knowledge graph reasoning 基于知识图谱的在线推理 Knowledge-powered intelligent service 认知服务 Bundle recommendation 凑单推荐
13 . 大数据系统趋势与挑战 Big Data Systems: Trends & Challenges
14 .大数据技术发展趋势 多样化& o PAI 异构计算 o MaxGraph… 时效性& 机器学习、异构信息网络(图)、XPU 计算延时 规模& 实时风控、大屏、视频分析等 o Blink 可靠性 普通服务器+Scale-out分布式框架+软件容灾 向上 o MaxCompute 扩展 IOE:单点运行的软件+Scale-up解决方案+高成本硬件容错
15 . Business Operators Common Patterns 逻辑架构 Real-time decisions Real-time events Human knowledge (On-line user behaviors, network events, etc.) Requests On-line reasoning Data intelligence Updates Off-line mining Graph model Other (relational) sources Data Scientists
16 . Machine Graph traversal Graph algorithms Pattern matching Learning TinkerPop Gremlin Vertex-centric openCypher ? APIs Giraph Neo4j GraphLab JanusGraph Spark GraphX (TF, PS…) Flink Gelly… YARN HDFS
17 .(自行)组合多个系统--构建复杂&运维难度高
18 .Graph-powered智能应用 关系网络分析 认知图谱 搜索、推荐 & 广告 OneID 风控 ・・・ DataWorks Graph Studio 应用开发工具, 图数据可视化 & 交互 MaxGraph Sampling, Training & Gremlin FLASH Cypher/SPARQL Productionizing 图查询 & 服务 经典图计算 子图模式匹配 图表征学习 日志, 监控 & 运维 账号 & 权限 统一, 分布式 ”瞬时计算” 引擎 分布式图存储 数据源-ODPS & Datahub
19 . 图建模与存储 Graph Modeling & Storage
20 .
21 .建模示例“电子邮件通信中的异常检测” 邮件在哪里? • 图模型灵活性 =\> 对复杂世界的正确建模
22 .好的建模在规模、复杂性提升的情况下, 依然捕获所有关键信息 • 如:自己发给自己的邮件
23 .捕获”复杂”关联 • 如:对”对回复邮件的回复”的回复
24 .Distributed graph store 分布式图存储 node/edge structure/index ... ingest nodes progress associated attributes snapshot coordinator Log structures ||||||||||||||||||||||| store nodes Key design choices 将图分区存放到分布式节点,支持快照隔离和多副本容错 • Partitioning graph data across distributed memory/SSDs • Real-time updating with snapshot isolation • Fault tolerance using replication
25 . 图查询语言简介 Gremlin: “SQL” for Graph
26 .图查询语言“Gremlin”介绍 // 符号v表示该元素是顶点并且1表示元素唯一标识符。 gremlin> v = g.v(1) ==>v[1] // 要确定顶点的所有输出边,下面的语句就足够了。 gremlin> v.outE() ==>e[7][1-knows->2] ==>e[9][1-created->3] ==>e[8][1-knows->4] // 获取这些边的顶点(称为传入顶点)的顶点。 gremlin> v.outE().inV() ==>v[2] ==>v[3] ==>v[4] // 更多操作:outE,inE,bothE,outV,inV,和bothV gremlin> v.outE().inV().outE().inV() ==>v[5] ==>v[3] // 步骤out,in以及both可跳过边,从顶点跳转到顶点。 gremlin> v.out().out() ==>v[5] ==>v[3]
27 .图查询语言“Gremlin”介绍 // 顶点和边可以具有属性,可以在路径表达式中使用这些属性。 gremlin> v = g.v(1) ==>v[1] gremlin> v.name ==>marko // 确定name顶点1的顶点和顶点knows的年龄大于30年年龄。 gremlin> v.outE('knows').inV .filter{it.age > 30}.name ==>josh // 让我们做一个更复杂的图遍历,使用回溯和一个正则表达式。 // 当根顶点为顶点1时,该路径表达式返回顶点1知道的顶点的年龄,年龄大于21,名称为4个 字符,并以“jo”或“JO”开始。 gremlin> v.out('knows’) .filter{it.age > 21}.as('x’) .name .filter{it.matches('jo.{2}|JO.{2}’)} .back('x').age ==>32 gremlin> v.out('knows’) .filter{it.age > 21 & it.name.matches('jo.{2}|JO.{2}’)} .age
28 .图查询语言“Gremlin”介绍 // 提供一组“遍历碎片”,称为模式。 gremlin> g.V().match( __.as('a').out('created').as('b’), __.as('b').has('name', 'lop’), __.as('b').in('created').as('c’), __.as('c').has('age', 29)) .select('a','c').by('name’) ==>[a:marko,c:marko] ==>[a:josh,c:marko] ==>[a:peter,c:marko]
29 . V Loop Distributed and parallel graph traversal Out Path 分布式并行图遍历 Dedup In Many graph operations can be expressed as graph traversals Out 许多图操作可以用遍历实现 Dedup • An example query in Gremlin (from LDBC Social Network Benchmark) Count Where Left Where Right Out Select Out One Count Out Select Out One Count Duplicate Compiling Gremlin to dataflow for distributed & parallel execution 将Gremlin查询翻译成”分布式并行执行的”数据流 Join • Precompiles operators to minimize scheduling overhead Where Out