0%

在我们常见的数据结构中,图是一种有点冷门,时常被忽视的数据表达方式。大部分场景下,我们的数据关系足够简单,例如,一对一,一对多,这种情况下,表结构(关系数据库)或者文档结构(文档数据库)足以刻画数据之前的关系,对于稍复杂的关联/嵌套数据,通过join和文档嵌套的方式也可以轻松构建,此时在抽象层面,我们可以把数据的结构看作是一个树结构(数仓中也称为星型模型和雪花模型 )。那什么时候会用到图呢?答案是在数据中存在大量多对多的模式(Pattern)时,我们可以应用图数据结构(图数据库)来刻画和解决现实世界的问题。典型的图分析场景有:

  • 网络关系的表达与相关优化:社交网络,通讯网络,交通网络
  • 推荐算法:网页排序,相似用户推荐
  • 关联分析与数据洞察:关键节点分析
  • 无监督/半监督学习:社区聚类与挖掘,样本标注
  • 数据可视化:可视化数据的关系

下面我们从图的基础概念出发,分别介绍在单机与分布式环境下的图的存储方法图分析的常见算法。此外,还会重点分析一些图算法的分布式实现以及社区挖掘的应用

阅读全文 »

分析spark初版本的源码,代码行数1w+,比较简单,但是基本架构变换不大,有必要阅读。先提出阅读Spark论文的一些疑问,再阅读源码。

阅读论文的问题

RDD

阅读全文 »

之所以起了这么一个奇怪的标题,完全是因为我是一个数学的白痴,不敢写任何数学相关的硬知识。不幸的是,在学习一些算法时,又不得不接触一些数学。尤其在机器学习领域,线性代数是一个绕不过去的话题。不像高等数学和概率,凭着一些常识和临时Google能蒙混过关(虽然也很艰难),线性代数甚至是很多算法的表现形式。如果不能系统的认识它,大部分算法往往不知所云。一个简单的例子,基本上机器学习领域所有的输入数据,中间数据都是矩阵来表示的,无论是图像,文本,各种算法无非是施加在上面的各种运算。

这里,我不会罗列方程与公式,甚至除了基本概念外,也不用会用精确的数学语言描述这些概念。我只是想在这里提供一种『直觉』的东西,让我们能明白,算法中代数运算的现实意义。

起步

阅读全文 »

我们的目标是:掌握实现『函数式库』的技能

纯函数式的并行计算

目标:实现无副作用的并行库,例如实现写函数val outputList=parMap(inputList)(f)把f同时应用到list的每个元素

阅读全文 »

Overview

第一部分主要使用Scala来函数式编程,介绍了核心概念。
我们的目标是追求使用『纯函数』编程

  • 学会写小的函数式程序。(能写一个程序中的小模块)— 第一章
  • 函数式编程中的基本概念以及Scala中的实现:高阶函数,多态函数 — 第二章
  • 使用函数式编程实现函数式数据结构 — 第三章
  • 使用函数式编程进行错误处理 — 第四章
  • 提升函数式编程运行效率:非严格求值的概念 — 第五章
  • 使用函数式编程实现状态处理(命令式编程) — 第六章
阅读全文 »

旧版本Scala中的Actor库(scala.actor)

教程

阅读全文 »