流挖掘算法介绍00:序——背景,流数据模型,近似算法评估,2-Universal 哈希
2013-02-14 10:38
369 查看
背景
假如(假如。。。)我是Facebook,Twitter,或者是Weibo的工程师(额,,,);每天有上亿用户在这个平台上发牢骚,晒经历,秀恩爱,炫富什么的,记得有每天有上亿条消息,
我们就想知道,下面这些问题:
最近一天(小时,分钟)大概有多少个不同的人在发牢骚?
最近一天(小时,分钟)秀恩爱次数排名前10(100,1000)的用户大概有哪些?
假设每个人每天的发推的数量是正态分布,找出发推数异常高的用户?
这些问题在数据量小的时候很容易解决,哈希,或者堆什么的记录一下就行了,最后再扫描一遍。
但是当数据量大到100G左右的时候,一台机器都没法放下这么大的哈希表;而且老大也不想加机器去做这么无聊的功能;更不想用Hadoop工具栈的分布式什么的把系统搞得很庞大,工程师人手也不足(话说两百个不到的工程师要支撑几亿用户也很那个啥)。
总的来说现有算法在大数据上有这些缺点
需要扫多次数据;这就需要把数据库库存到硬盘上,又把它读出来,对大数据凡是遇到硬盘都是比较蛋疼的事情;(因为硬盘不够多,读写速度又慢)
处理的时间没有受限;
内存使用通常为数据量相当,或者是平方;(额,,,问题是这里有100G的数据,当然垂直切割是比较好的方法,不过比较暴力,且又把网络给牵连进来了,对于大数据,网络是第二个比较蛋疼的事情)
且一部分算法并不支持分布式或者是垂直切割的合并结果(例如找到最近1小时发推的不同用户数)
不过我们的要求又是:
只扫一遍数据
希望能实时的处理数据,希望每天处理上亿个推
不要用掉等于数据量的内存,最好是 log n 的内存
最好支持分布式的计算
只需要近似的一个答案
本系列将要介绍的方法,就是用数学上的一些概率算法,在理论上保证一些准确性的情况下来计算。
流数据模型
简单说,就是每次从流中读到一个数据,就再也无法读到这个数据了,可以在处理每次读到的数据后,在内存中保存一定量的数据,但是不能太多。
近似算法评估
我们是近似算法是A,正确算法是Φ,一个 (ε, δ) 近似算法满足:直观理解就是A算法偏差超过 ±ε 的概率不超过 δ 。
因为 Φ 可能为0,所以也常常用另外一种方法来评估:
2-Universal 哈希
两个集合X,Y;我们要把X的元素映射到Y中;通常|X| > |Y|,定义 “2-Universal 哈希” 需满足:大概的理解就是,把空间X,映射到Y,这个hash是完全随机均匀分布的,得到任何的哈希结果都是相同概率。
这里取了两对 (x, y) 是为了说明两次hash事件是独立的;
取量词“任意“是为了说明哈希的结果是随机的;
取1/|Y|^2作为概率是为了说明均匀分布。
这里只是一个数学上严格的概念,用于理论推导冲突的概率等;
为了避免王垠附体,在遇到特例之前我并不去深究。
相关文章推荐
- 数据挖掘笔记(5)——数据处理、模型评估、可视化、十大经典算法
- PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品,产品设计严格遵循国际数据挖掘标准CRISP-DM(跨行业数据挖掘过程标准),具备完备的数据准备、模型构建、模型评估、模型管理、海量数据处理和高纬数据可视化分析能力。
- 数据挖掘模型介绍之二:表查询模型(查询表格模型)
- PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品,产品设计严格遵循国际数据挖掘标准CRISP-DM(跨行业数据挖掘过程标准),具备完备的数据准备、模型构建、模型评估、模型管理、海量数据处理和高纬数据可视化分析能力。
- 大数据学习笔记之四十 数据挖掘算法之预测建模关于决策树模型的介绍
- 数据挖掘(三)分类模型的描述与性能评估,以决策树为例
- SQL Server 2005数据挖掘模型算法
- SQLSERVER数据挖掘算法介绍
- 用WEKA对于数据挖掘时相关算法的介绍和使用方法
- weka基础上 数据挖掘模型研究评估 过程
- 数据挖掘,DBSCAN算法的介绍
- 数据挖掘模型介绍之三:决策树
- 基于MapReduce编程模型的数据挖掘算法
- 数据挖掘10大算法详细介绍
- 数据挖掘模型介绍之四:最近邻方法和基于记忆的推理
- 数据挖掘---分类:基本概念、决策树、与模型评估
- 数据挖掘回顾九:回归算法之 模型树
- 数据挖掘模型介绍之一:相似度模型
- 经典数据挖掘算法(介绍了包括18大数据挖掘在内的多种经典数据挖掘算法)
- 大数据学习笔记之四十一 数据挖掘算法之预测建模的回归模型