大数据领域常用算法总结

01 概述

    大数据必然涉及海量数据,所谓海量数据,就是数据量太大,要么在短时间内无法计算出结果,要么因为数据太大无法一次性装入内存。

    针对时间,我们可以使用巧妙的算法搭配合适的数据结构,如bitmap/堆/trie树等进行优化。

    针对空间,就一个办法,大而化小,分而治之,常采用hash映射等方法。

02 hash映射

    这里的hash映射是指通过一种哈希算法,将海量数据均匀分布在对应的内存或更小的文件中,这是一种分而治之的实现思想。

    使用Hash映射有个最重要的特点是: Hash值相同的两个串不一定一样,但是两个一样的字符串hash值一定相等(如果不相等会存在严重安全问题,比如两个人的账号信息经过哈希后映射到同一个值)。

    如下所示:

    在使用hash映射的时候,选择合适高效的Hash函数是关键,选择的不好不仅浪费空间,而且效率不高,存在冲突的可能性较大。当出现冲突的时候,还需要借助各种冲突检测方法去解决。

03 bitmap

    用1个(或几个)bit位来标记某个元素对应的value(如果是1bitmap,就只能是元素是否存在;如果是x-bitmap,还可以是元素出现的次数等信息)。使用bit位来存储信息,在需要的存储空间方面可以大大节省。

    应用场景有:

    1、排序(如果是1-bitmap,就只能对无重复的数排序)

    2、判断某个元素是否存在

    例如,某文件中有若干8位数字的电话号码,要求统计一共有多少个不同的电话号码?

    分析:8位最多99 999 999, 如果1Byte(8bit)表示1个号码是否存在,需要99999999Byte=99999999/1024KB=99999999/1024/1024MB≈95MB空间,但是如果采用1bit表示1个号码是否存在,则只需要 95/8=12MB 的空间。这时,数字k(0~99 999 999)与bit位的对应关系是:

04 Trie树

    Trie,又叫前缀树,字典树等等。它有很多变种,如后缀树,Radix Tree(基树,Linux内核采用这种数据结构用以实现快速查找)。

    与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。

    例如,要想实现某个单词的快速查找,可以采用如下Trie树将每个单词存储起来:

    这样存储的好处就在于,要想查找的时候可以根据单词排除大量非关联分支,提高查询速度。

05 数据库索引

    索引使用的数据结构多是B树或B+树。

    B树和B+树广泛应用于文件存储系统和数据库系统中,mysql使用的是B+树,oracle使用的是B树,Mysql也支持多种索引类型,如b-tree 索引,哈希索引,全文索引等。

    一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。

06 倒排索引

    也叫反向索引。是文档检索系统中最常用的数据结构。

    倒排索引的索引表中的每一项都包含一个属性值和具有该属性值的各记录的地址。因为不是由记录来确定属性值,而是由属性来确定记录,因而成为倒排索引(inverted index)。

    倒排列表记录了某个单词位于哪些文档中。在给定的文档语料中,一般会有多个文档包含某单词,每个文档有唯一的编号(DocID),单词在这个文档中出现的次数(TF)及单词在文档中哪些位置出现等信息,与一个文档相关的信息被称做倒排索引项(Posting),包含这个单词的一系列倒排索引项形成了列表结构,这就是某个单词对应的倒排列表。

07 外排序

    外排序即对磁盘文件的排序。如果待处理的数据不能一次装入内存,先读入部分数据排序后输出到临时文件,采用「排序-归并」的策略。在归并阶段将这些临时文件组合为一个大的有序文件,也即排序结果。

    例如,要对900 MB的数据进行排序,但机器上只有100 MB的可用内存时,外归并排序按如下方法操作:

    1、读入100 MB的数据至内存中,用某种常规方式(如快速排序、堆排序、归并排序等方法)在内存中完成排序;

    2、将排序完成的数据写入磁盘;

    3、重复步骤1和2直到所有的数据都存入了不同的100 MB的块(临时文件)中,最终会产生9个临时文件。

    4、读入每个临时文件的前10 MB(100 MB / (9块 + 1))的数据放入内存中的输入缓冲区,最后的10 MB作为输出缓冲区;

    5、执行九路归并算法,将结果输出到输出缓冲区。一旦输出缓冲区满,将缓冲区中的数据写出至目标文件,清空缓冲区。一旦9个输入缓冲区中的一个变空,就从这个缓冲区关联的文件,读入下一个10M数据,除非这个文件已读完。这是“外归并排序”能在主存外完成排序的关键步骤 :因为“归并算法”(merge algorithm)对每一个大块只是顺序地做一轮访问(进行归并),每个大块不用完全载入主存。

08 simhash算法

    假设存在这样的应用场景:快速比较两种论文的相似程度,该如何设计算法?

    simhash算法分为5个步骤:

    1、分词:对待考察文档进行分词,把得到的分词称为特征,然后为每一个特征设置N等级别的权重。如给定一段语句:“云计算通俗讲义的作者程序员姜戈”,分词后为:“云计算 通俗 讲义 的 作者 程序员 姜戈”,然后为每个特征向量赋予权值:云计算(5)通俗(2)讲义(2)的(1)作者(4)程序员(5)姜戈(5),权重代表了这个特征在整条语句中的重要程度。

    2、hash:通过hash算法计算各个特征向量的hash值,hash值为二进制数组成的n位签名。

    3、加权:W=hash*weight,W(云计算)=101011*5=5-55-555,W(作者)=100101*4=4-4-44-44。

    4、合并:将上述每个特征的加权结果累加,变成一个序列串。如“5+4,-5+-4,5-4,-5+4,5-4,5+4”,得到“9,-9,1,-1,1”。

    5、降维:对于n位签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海明距离来判断它们的相似度。例如把上面计算出来的“9,-9,1,-1,1,9”降维,得到“101011”,从而形成它们的simhash签名。

09 跳跃链表

    跳跃链表对有序的链表附加辅助结构,在链表中的查找可以快速的跳过部分结点(因此得名)。跳跃链表是一种随机化数据结构,基于并联的链表,其效率与RBTree相当。具有简单、高效、动态的特点。查找、增加、删除的期望时间都是O(logN)。

    跳跃列表是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在层i中的元素按某个固定的概率p出现在层i+1中。平均起来,每个元素都在1/(1-p)个列表中出现。

    如果需要查找元素5,只需要遍历1->1->3-三个节点即可,如果需要查找元素13,则只需要遍历1->7->10->13四个节点即可。

    跳跃链表在并行计算中非常有用,数据插入可以在跳表的不同部分并行进行,而不用全局的数据结构重新平衡。

10 MD5算法

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

11 MapReduce

    MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。

    举例:我们需要查找近10年内数据库相关论文,出现最多的几个单词,以便了解该方向发展态势。

    如果逐个查找那么费时费力,我们可以把论文集分成N份,分别放到N台机器上,一台机器跑一个作业,这样就可以并发执行任务。这个方法虽然速度快,但是有部署成本,我们需要把论文集分成不重复的N份,然后将查找程序拷贝到N台机器,而且还需要最后把N个运行结果整合起来。这种方法比较复杂,人工操作比较麻烦,MapReduce就是帮助我们解决这样拆分合并的问题,解放程序员的双手。

    Map函数和Reduce函数是交给用户实现的,这两个函数定义了任务本身。

    Map函数:接受一个键值对,产生一组中间键值对,Map操作是可以并发执行的。Reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。

    MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。

 

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据常用算法全文共2页,当前为第1页。大数据常用算法全文共2页,当前为第1页。大数据常用算法(分类、回归分析、聚类、关联规则) 大数据常用算法全文共2页,当前为第1页。 大数据常用算法全文共2页,当前为第1页。 在大数据时代,数据挖掘是最关键的工作。大数据的挖掘是从海量、不完全的、有噪声的、模糊的、随机的大型数据库中发现隐含在其中有价值的、潜在有用的信息和知识的过程,也是一种决策支持过程。其主要基于人工智能,机器学习,模式学习,统计学等。通过对大数据高度自动化地分析,做出归纳性的推理,从中挖掘出潜在的模式,可以帮助企业、商家、用户调整市场政策、减少风险、理性面对市场,并做出正确的决策。目前,在很多领域尤其是在商业领域如银行、电信、电商等,数据挖掘可以解决很多问题,包括市场营销策略制定、背景分析、企业管理危机等。大数据的挖掘常用的方法有分类、回归分析、聚类、关联规则、神经网络方法、Web 数据挖掘等。这些方法从不同的角度对数据进行挖掘。 (1)分类。分类是找出数据库中的一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到摸个给定的类别中。可以应用到涉及到应用分类、趋势预测中,如淘宝商铺将用户在一段时间内的购买情况划分成不同的类,根据情况向用户推荐关联类的商品,从而增加商铺的销售量。 (2)回归分析。回归分析反映了数据库中数据的属性值的特性,通过函数表达数据映射的关系来发现属性值之间的依赖关系。它可以应用到对数据序列的预测及相关关系的研究中去。在市场营销中,回归分析可以被应用到各个方面。如通过对本季度销售的回归分析,对下一季度的销售趋势作出预测并做出针对性的营销改变。 (3)聚类。聚类类似于分类,但与分类的目的不同,是针对数据的相似性和差异性将一组数据分为几个类别。属于同一类别的数据间的相似性很大,但不同类别之间数据的相似性很小,跨类的数据关联性很低。 (4)关联规则。关联规则是隐藏在数据项之间的关联或相互关系,即可以根据一个数据项的出现推导出其他数据项的出现。关联规则的挖掘过程主 包括两个阶段:第一阶段为从海量原始数据中找出所有的高频项目组;第二极端为从这些高频项目组产生关联规则。关联规则挖掘技术已经被广泛应用于金融行业企业中用以预测客户的需求,各银行在自己的ATM 机上通过捆绑客户可能感兴趣的信息供用户了解并获取相应信息来改善自身的营销。 (5)神经网络方法。神经网络作为一种先进的人工智能技术,因其自身自行处理、分布存储和高度容错等特性非常适合处理非线性的以及那些以模糊、不完整、不严密的知识或数据为特征的处理问题,它的这一特点十分适合解决数据挖掘的问题。典型的神经网络模型主要分为三大类:第一类是以用于分类预测和模式识别的前馈式神经网络模型,其主要代表为函数型网络、感知机;第二类是用于联想记忆和优化算法的反馈式神经网络模型,以Hopfield 的离散模型和连续模型为代表。第三类是用于聚类的自组织映射方法,以ART 模型为代表。虽然神经网络有多种模型及算法,但在特定领域的数据挖掘中使用何种模型及算法并没有统一的规则,而且人们很难理解网络的学习及决策过程。 (6)Web数据挖掘。Web数据挖掘是一项综合性技术,指Web 从文档结构和使用的集合C 中发现隐含的模式P,如果将C看做是输入,P 看做是输出,那么Web 挖掘过程就可以看做是从输入到输出的一个映射过程。 当前越来越多的Web 数据都是以数据流的形式出现的,因此对Web 数据流挖掘就具有很重要的意义。目前常用的Web数据挖掘算法有:PageRank算法,HITS算法以及LOGSOM 算法。这三种算法提到的用户都大数据常用算法全文共2页,当前为第2页。大数据常用算法全文共2页,当前为第2页。是笼统的用户,并没有区分用户的个体。目前Web 数据挖掘面临着一些问题,包括:用户的分类问题、网站内容时效性问题,用户在页面停留时间问题,页面的链入与链出数问题等。在Web 技术高速发展的今天,这些问题仍旧值得研究并加以解决。 大数据常用算法全文共2页,当前为第2页。 大数据常用算法全文共2页,当前为第2页。 大数据常用算法
大数据logistic回归算法是一种常用的机器学习算法,用于解决二分类问题。它利用大量的数据样本,在线性回归模型的基础上引入了sigmoid函数,将线性回归的输出值转化为概率值。 这个算法的核心思想是通过对已知数据进行建模,寻找最佳系数,以最大化模型概率与实际结果的吻合程度。算法将输入数据进行线性组合,计算出一个概率值,用来描述该样本属于某一类的可能性。概率值越接近1,表示属于正例的可能性越大;概率值越接近0,表示属于负例的可能性越大。 具体而言,大数据logistic回归算法的定义包括以下几个关键步骤: 1. 设定一个线性回归模型,其中包括一个或多个特征变量和一个待估计的目标变量。 2. 对线性回归模型的输出进行映射,使用sigmoid函数将连续的输出变换为0到1之间的概率值。 3. 使用最大似然估计法或梯度下降等方法,通过训练数据集拟合模型的参数,找到使预测值与实际值最接近的系数。 4. 利用训练好的模型参数对新样本进行预测,计算其概率值,并根据设定的阈值划分为正例或负例。 大数据logistic回归算法在大规模数据集上的应用具有很大优势,它能够处理高维度的特征变量,并且计算效率较高。同时,由于引入了概率值,也可以为分类结果提供相应的概率解释。因此,在实际应用中,大数据logistic回归算法被广泛应用于生物医学、金融、营销等领域的分类问题中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值