本节书摘来华章计算机《大数据算法》一书中的第1章 ,第1.3节,王宏志 编著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 大数据算法设计与分析

本节对大数据算法设计与分析进行概述,蜻蜓点水地罗列一些技术,具体的技术将在后面的章节详细讲授。

1.3.1 大数据算法设计技术

1.精确算法设计方法
精确算法设计技术就是传统算法设计与分析课里讲授的算法,例如贪心法、分治法、动态规划、搜索、剪枝。这些算法设计方法也是大数据算法设计中所必需的,在本书中会经常用到这些技术。
2.并行算法
并行算法是一类很重要的大数据算法设计技术。在很多人的理解中,大数据算法就等同于并行算法,但是大数据算法不完全是并行算法。
3.近似算法
近似算法的意思是说,虽然给定计算时间,给定计算资源,对于很大的数据量无法算出精确解,但是可以退而求其次,算不那么精确的解,而且这个解的不精确程度在可以忍受的范围内。这样的设计算法有一套专门的设计技术,就是所谓的近似算法。
4.随机化算法
一种很重要的技术是随机化算法设计技术。在某些情况下,可以通过增加随机化来提高算法的效率和精度。最典型的一个技术就是抽样。虽然无法处理整个数据集合,但是可以从这个集合中抽取一小部分来处理,通过这个抽样我们就能以小见大,这一部分抽样就能够体现整个大数据集合的特征。
5.在线算法/数据流算法
所谓的在线算法或者数据流算法,指的是数据源源不断地到来,根据到来的数据返回相应的部分结果。这类算法的设计思想可以应用于两种情况:一是当数据量非常大仅能扫描一次时,可以把数据看成数据流,把扫描看成数据到来,扫描一次结束;二是数据更新非常快,不能把数据全部存下来再算结果,这时候数据也可以看成一个数据流。
6.外存算法
也有人称外存算法为I/O有效算法或者I/O高效算法。这类算法不再简单地以CPU时间作为算法时间复杂度的衡量标准,而是以I/O次数作为算法时间复杂度的判断标准,在设计算法的时候,也不是简单地以CPU时间为优化目标,而是以I/O次数尽可能少为优化目标。
7.面向新型体系结构的算法
还有一种大数据处理算法是面向特定体系结构设计的,这里的特定体系结构包括多级cache,也包括GPU和FPGA。由于这些新体系结构的特征不同,所需要的算法设计技术也不同。
8.现代优化算
现代优化方法,包括遗传算法、模拟退火、蚁群算法、禁忌搜索等。它们在传统算法设计中的智能优化方面扮演了很重要的角色,在大数据处理算法里也有用武之地,考虑到大数据中数据量大、变化快的特点,在使用这些技术设计大数据算法时需要注意算法的可扩展性。

1.3.2 大数据算法分析技术

和传统算法分析相比,大数据算法分析尤其重要。因为在大数据上进行实验所需要的成本相对“小数据”大得多,因而完成算法计算所需的资源(时间和空间)或者某种性质(如精度)难以通过实验来得到,而必须通过理论分析来求得。当设计完一个大数据算法后,可以通过算法分析来求得所需资源(例如时间、空间或磁盘I/O)或某种性质(例如算法得到的解和精确解比例)与输入规模之间的关系,这样就可以基于算法在小规模数据上的实验结果来推演出算法在大规模数据上需要的计算资源或者某种性质所能够达到的程度,从而判定算法是否可行。对于大数据算法,主要分析如下因素:
1.时间和空间复杂度
和传统算法分析类似,大数据算法同样需要进行时间和空间复杂度分析。
2. I/O复杂度
有些情况下,大数据无法完全放入内存,必须设计外存算法,这时候需要分析磁盘I/O复杂度,即在算法运行过程中读写磁盘次数。
3.结果质量
由于大数据上的一些计算问题有时在给定的资源约束内无法精确完成,需要退而求其次,设计近似算法,在这种情况下需要分析计算结果的质量和近似比,即最优解和近似解之间的比例;对于在线算法,有时候需要分析竞争比(competitive ratio),即根据当前数据得到解的代价和知道所有数据的情况下得到解的代价相差多少。在后面章节中我们将会看到,在很多情况下,结果质量的分析往往要比结果效率的分析更复杂。
4.通信复杂度
当设计并行算法的时候,涉及多台机器,这些机器之间需要通信,这时需要知道算法运行过程中所需通信量的大小,也就是通信复杂度。
从上述介绍可以看出,大数据算法分析的内容比传统算法要丰富,也涉及更多的算法分析技术。

《大数据算法》一1.3 大数据算法设计与分析相关推荐

  1. 近期活动盘点:心电数据标注系统和深度学习诊断算法研究、2019年第六届清华大学大数据社会科学讲习班...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 第四期医工结合研讨会:心电数据标注系统和深度学习诊断算法研究 2019年7月11日 7月11日,"医工结合系列研讨会第四期会议: ...

  2. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...

    DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!--和一个句子的分词算法CRF没有区别! 注:传统DDos检测直接基于IP数据发送流量来识别 ...

  3. 数据科学家常用的十大机器学习算法,都在这了!

    导语:本文列出了数据科学家使用的十大机器学习算法,并且介绍了这十大算法的特点,供各位机器学习的新人们更好地理解和应用. 文/James Le 译/ 之肴 编辑/ 消失的牛角包 在机器学习领域,有种说法 ...

  4. 大数据算法:对5亿数据进行排序

    0.前言: 在大数据研究的路上,我们总要对一些很大的数据进行各种各样的操作.比如说对数据排序,比如说对数据统计,比如说对数据计算.而在大量的数据面前,我们总是束手无策,因为我们无法在限定时间的情况下, ...

  5. 博主新书:《大数据日知录:架构与算法》目录

    <大数据日知录:架构与算法>目录 4目录编辑 第0 章 当谈论大数据时我们在谈什么................ 1 0.1 大数据是什么........................ ...

  6. 《大数据日知录:架构与算法》前言

       <大数据日知录:架构与算法>前言 像移动互联网.O2O.可穿戴设备等概念一样,"大数据"从甫一提出到飓风般席卷并风靡全球,从最初的技术名词到形成渗透各行各业的社会 ...

  7. 大数据量的存储分表常见算法

    当一个应用的数据量大的时候,我们用单表和单库来存储会严重影响操作速度,如mysql的myisam存储,我们经过测试,200w以下 的时 候,mysql的访问速度都很快,但是如果超过200w以上的数据, ...

  8. C语言:使用冒泡算法将数组中的数据从大到小进行排序

    /*使用冒泡算法将数组中的数据从大到小进行排序*/ #include<stdio.h> #define N 5 int main() {int a[N];int i,j,t;printf( ...

  9. 孤立森林:大数据背景下的最佳异常检测算法之一

    孤立森林或"iForest"是一个非常漂亮和优雅简单的算法,可以用很少的参数来识别异常.原始的论文对广大的读者来说是容易理解的,并且包含了很少的数学知识.在这篇文章中,我将解释为什 ...

  10. 【大数据实战项目八】使用机器学习算法进行预测分析并进行网上部署

    使用机器学习算法进行预测分析并进行网上部署 9 使用机器学习算法进行预测分析 9.1 数据探索式分析 9.1.1 环境配置与数据读入 9.1.2 探究延误航班有多少数据量 9.1.3 探究出发延期到达 ...

最新文章

  1. 算法--------字母异位词分组 (Java 版本)
  2. ntu part-time phd 信息整理
  3. c语言控制台数字键打地鼠,自己用C写的一个简单的打地鼠游戏代码出了个问题(鼠标和循环不能...
  4. 中国电信发布转型升级战略:构建一横四纵生态圈
  5. sublime运行前自动保存代码(转)
  6. jquery级试题_jQuery经典面试题及答案精选
  7. opencv 编译报错(CMake Error: The following variables are used in this project, but they are set to not )
  8. 【运维安全】-HTTP协议
  9. bzoj1833: [ZJOI2010]count 数字计数(数位dp)
  10. Linux下用ffmpeg轉PSP影片 (MP4/AVC格式)
  11. jQuery橙色的网页右侧悬浮在线客服代码
  12. 浏览器开启WebGL
  13. android 界面置顶,Android实现界面滚动时顶部部分内容置顶(附源码)
  14. 统信UOS桌面操作系统安装教程
  15. 虚拟主播?这个项目,我能玩一年!
  16. 定制Android模拟器skin
  17. 银屑病与大肠相关机制(调研手稿五)
  18. excel中怎么拆分表格
  19. 计算机基础---学习笔记
  20. git的安装与配置教程-超详细版

热门文章

  1. html5是什么意思,HTML5是什么 HTML5是什么意思 HTML5简介
  2. mysql: navicat for mysql 执行快捷键
  3. 天圆地方放样软件,solidworks如何做天圆地方钣金放样? _ 设计学院_设计软件教程自学网...
  4. Android 标题栏(一)
  5. QT5 安装(Ubuntu20.04) 详细
  6. VS2013+QT5简单使用
  7. 《zw版Halcon与delphi系列原创教程》发布说明
  8. 中兴bsc服务器是什么,中兴ZXG10-BSC (V2)的设计特点
  9. Spice与SpiceyPy介绍
  10. GTK+编程入门(1)—简介与glib库