我一直在做社交网络的挖掘工作,深感目前的一些技术并不能满足社交挖掘的需要。我并没有用过太多的工具,而且图计算的平台也没有用过,涉及到大规模数据的离线分析,主要是依赖hadoop。不过,这并不妨碍,我从挖掘需求的角度来探讨:社交挖掘到底需要哪些技术基础,需要一些什么样的工具。

题目中有一个词:large graph。也有很多人认为是big graph。我之所以改变称谓,主要的原因在我前面的博客中有体现。因为big data中的个体之间,往往具有关系,这个样就组成了一个graph,并且这是个超大的graph。元数据信息要比单纯的big data要高几个量级。所以,为了进一步体现graph之大,我称之为large graph。到底于多大呢?我以新浪微博为例来说明(其实新浪微博在这些large graph中,目前算比较小的)。新浪微博号称4亿的用户,那么用户关系有多少呢?我估计在大概在300亿-400亿。我们在处理社交网络的时候,绝大多数是要和边(也就是关系)打交道的,那这样的一个规模,如何高效存储、计算对挖掘效果的影响,是非常直接的。如果这是一个面试题,大家该如何分析并给出方案呢。

首先根据自己之前做挖掘的一些经验,总结一下,在large graph上,要进行哪些操作:

  1. 随机访问:

    1. 读取一个节点的邻居(在微博中,就是读取关注或者粉丝,如何读取粉丝??)
    2. 读取两个节点之间的关系
  2. 顺序访问:
    1. 图的遍历:宽度优先,深度优先等
    2. 最短路径
  3. 其他分析:介数计算等

这个是我在挖掘过程中,主要涉及的操作,而且要针对不同的访问分析需求,速度要快。如果要求某个计算平台,能够全部满足,并且速度都很快,那是不现实的。所以,针对特定功能需求,特殊的去优化性能。比如,我在挖掘过程中有一个特定的需求:快速判断两个人之间的关系,要在尽可能短的时间内,完成百万次的判断。这个为基础计算平台的设计,提出了一个直接的挑战。

在big data出来的时候,相伴着NoSQL也火了起来。这都是相辅相成的,数据多了,自然就需要适合的存储技术,那一台及其无法存储,那么直接的想法就是划分,多台进行存储。可是关系如何划分呢?

这个要从large graph的分析开始,large graph有哪些性质,这些性质对快速存取、快速计算都有哪些影响呢?

  1. 幂律分布

    1. 首先是正向的影响。这个性质的意思直白一点说,就是粉丝多的人比较集中,很少。更多的是长尾的、粉丝比较少的用户。这个可以帮助我们在计算过程中,合理的做一些剪枝。
    2. kv数据之所以可以采用NoSQL,进行划分存储的主要原因是,它可以均匀的划分,让每台机器的负载都近乎均衡。但是关系数据呢?这个幂律分布直接击碎了按人划分,存储关系的美梦。这是绝对不会均匀的。少数机器的数据很大,其它的机器数据很少。
  2. 小世界特性
    1. 这个很直接,就是两个人之间的最短路径很短。最直接的体现了六度分离的理论。
    2. 在做一些图分析的时候,代价很大,涉及的节点很多。
  3. 社团结构
    1. 社团结构本身是很重要的性质。我之前的博客有详细的介绍。
    2. 社团结构的存在,直接导致了图划分的问题难度增加。要保证均匀,保证划分之间边最少。社团结构是个很大的障碍。

上面的三个特性,使得图划分的难度大大增加。但是,由于数据量级的剧增,图的划分还是非常重要的选择。目前已经有的一些算法,KL,metis(目前state-of-the-art的方法)等,在处理百万、千万级节点的网络时,还可应付。但是亿级节点呢?十亿级呢?其实,划分是个核心,是重中之重,存储、计算都依赖这个。否则,就会有大量的冗余,更多的IO消耗。

需求就在我们面前。现在产生巨大关系数据的公司已经产生,Facebook、微博等。但是能够处理这些数据的公司呢?可以断言,能够大规模挖掘关系数据的公司,必将是下一个Google。这是一波浪潮,让我们加入进去,一起冲浪。

【完】

【思考题】

1亿节点,100亿关系,如何迅速判断连个节点是否有边?节点用整数唯一标识。如果大家对这个问题感兴趣,可以和我一起探讨,解决实际问题。

转载于:https://www.cnblogs.com/sing1ee/archive/2012/11/18/2776178.html

large graph挖掘的技术基础相关推荐

  1. ERNIE源码学习与实践:为超越ChatGPT打下技术基础!

    ★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> ERNIE学习与实践:为超越ChatGPT打下技术基础! ERNIE是BERT相爱相杀的好基友,由 ...

  2. 文心ERNIE源码学习与实践:为超越ChatGPT打下技术基础!

    ERNIE学习与实践:为超越ChatGPT打下技术基础! ERNIE是BERT相爱相杀的好基友,由ERNIE发展起来的文心大模型,是GPT3.0的强劲竞争对手,未来还会挑战ChatGPT的江湖地位! ...

  3. 视频教程-PC游戏逆向思维-漏洞挖掘-网络技术

    PC游戏逆向思维-漏洞挖掘 90后,游戏作弊工程师,从事开发4-5年,擅长语言:C,C++ 领域:服务器开发,精通MFC,STL,Boost,熟悉TCP/IP协议,熟练运用IOCP完成端口模型,线程池 ...

  4. 《计算机软件技术基础(1)》,计算机软件技术基础(邮电)1-7.ppt

    <计算机软件技术基础(邮电)1-7.ppt>由会员分享,可在线阅读,更多相关<计算机软件技术基础(邮电)1-7.ppt(49页珍藏版)>请在人人文库网上搜索. 1.1,计算机软 ...

  5. 攻防技术基础笔记一——病毒、蠕虫病毒、木马、软件漏洞、常见问题、漏洞成因、黑产产业链、遵纪守法、渗透测试、渗透测试方法、VMware的使用、认识kali

    攻防技术基础笔记 一.病毒 二.蠕虫(worm)病毒 三.简单辨析蠕虫病毒跟普通病毒 四.木马 五.木马与病毒的区别 六.软件漏洞 七.两个生活中的安全问题 八.漏洞产生的原因 九.漏洞黑产产业链 十 ...

  6. [JAVA EE] JPA技术基础:完成数据列表的删除

    接上一篇:[JAVA EE] JPA技术基础:完成数据列表显示 本章完成数据列表的删除 修改 UserController.java package com.example.demo.controll ...

  7. Docker | Docker技术基础梳理(五) - Docker网络管理

    Docker | Docker技术基础梳理(五) - Docker网络管理 链接: 原文链接 原文链接: https://gitbook.cn/books/5b8f3c471966b44b00d265 ...

  8. 软件工程技术基础-(软件复用技术)

    软件可重用问题,包括源程序代码重用.静态库重用和组建重用. 源程序代码重用是直接将其他项目或系统开发完成的代码复制过来,直接使用. 限制源程序代码重用技术使用的关键因素是要考虑代码的语言实现,以及源代 ...

  9. 计算机与网络技术基础试题及答案,计算机与网络技术基础试题及答案(2003年10月)...

    计算机与网络技术基础试题及答案(2003年10月) 以下是部分内容预览,注意图片没有显示出来,WORD里是有的.请到下载区下载完整的试题及答案. 全国2003年10月高等教育自学考试 计算机与网络技术 ...

最新文章

  1. linux下修复bash漏洞
  2. poj pku 2528 线段树的基础应用
  3. 学python需要英语基础吗-英语基础一般,如何才能学习C语言编程和Python
  4. java 什么时候依赖注入_玩框架java依赖注入 – 何时使用单例
  5. JAVA项目怎么不是蓝色_解决IDEA创建maven项目时pom.xml没有变蓝的问题
  6. 从mysql到大数据(一)--开宗明义
  7. python 当前文件路径获取方式_python中获取文件路径的几种方式
  8. android数据库文件是否加密存储,详解Android数据存储之SQLCipher数据库加密
  9. tensorflow之exponential_decay
  10. 大数据资料全解析(352个案例+大数据交易白皮书+国内外政策汇篇)
  11. 华为交换机常用的查询命令(自己学习时统计的)
  12. 网线线序和插座插头配线规则和光纤接口分类
  13. 使用echarts完成中国省市区县镇地图展示
  14. 短链接如何快速生成?短链接的应用场景有哪些?
  15. 语音识别之HTK入门(四)——HCompV源码解析
  16. 野火F1开发板STM32案例-USART使用
  17. Êtes-vous au courant des derniers sacs lancel styles et tendances ?
  18. 用turtle库画大风车(零基础python教程适合亲子教学互动)
  19. ul,ol,dl区别
  20. Jersey中文版指南

热门文章

  1. php putcontent,PHP函数file_get_content及file_put_content介绍
  2. MATLAB批量实现dicom转换为bmp格式
  3. Matlab学习笔记——图形标注
  4. 【 FPGA 】四位16进制的数码管动态显示设计
  5. 当我们输入一条SQL查询语句时,发生了什么?
  6. 自动化测试工具的选择
  7. Windows7下安装VC2008绿色版
  8. Oracle笔记----oracle数字类型number自增
  9. rsync - 远程同步工具
  10. decorator and @property