July_algorithm 9.海量数据.pdf
《July_algorithm 9.海量数据.pdf》由会员分享,可在线阅读,更多相关《July_algorithm 9.海量数据.pdf(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、海量数据处理七月算法邹博2015年11月14日10月算法在线班2/71倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件称为倒排索引文件,简称倒排文件(inverted file)。10月算法在线班3/71倒排列表 倒排列表记录了某个单词位于哪些文档中。一般在文档集合里会有很多文档包含某个单词,每个文档会记录文档编号(DocID),单词在这个文档中出现的次数(TF)及单词在文档中哪些位置出现过等
2、信息,这样与一个文档相关的信息被称做倒排索引项(Posting),包含这个单词的一系列倒排索引项形成了列表结构,这就是某个单词对应的倒排列表。10月算法在线班4/71倒排列表10月算法在线班5/71倒排索引10月算法在线班6/71更新策略完全重建策略:当新增文档到达一定数量,将新增文档和原先的老文档整合,然后利用静态索引创建方法对所有文档重建索引,新索引建立完成后老索引会被遗弃。此法代价高,但是主流商业搜索引擎一般是采用此方式来维护索引的更新。再合并策略:当新增文档进入系统,解析文档,之后更新内存中维护的临时索引,文档中出现的每个单词,在其倒排表列表末尾追加倒排表列表项;一旦临时索引将指定内存
3、消耗光,即进行一次索引合并,这里需要倒排文件里的倒排列表存放顺序已经按照索引单词字典顺序由低到高排序,这样直接顺序扫描合并即可。其缺点是:因为要生成新的倒排索引文件,所以对老索引中的很多单词,尽管其在倒排列表并未发生任何变化,也需要将其从老索引中取出来并写入新索引中,这样对磁盘消耗是没必要的。原地更新策略:试图改进再合并策略,在原地合并倒排表,这需要提前分配一定的空间给未来插入,如果提前分配的空间不够了需要迁移。实际显示,其索引更新的效率比再合并策略要低。混合策略:出发点是能够结合不同索引更新策略的长处,将不同索引更新策略混合,以形成更高效的方法。10月算法在线班7/71simHash算法 问
4、题的起源:设计比较两篇文章相似度的算法。simHash算法分为5个步骤:分词 Hash 加权 合并 降维10月算法在线班8/71simHash的具体算法分词对待考察文档进行分词,把得到的分词称为特征,然后为每一个特征设置N等级别的权重。如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4)博客(5)结构(3)之(1)法(2)算法(3)之(1)道(2)的(1)作者(5)July(5),权重代表了这个特征在整条语句中的重要程度。hash通过hash函数计算各个特征的ha
5、sh值,hash值为二进制数组成的n位签名。Hash(CSDN)=100101,Hash(博客)=101011。加权W=Hash*weight。W(CSDN)=100101*4=4-4-44-44,W(博客)=101011*5=5-55-555。合并将上述各个特征的加权结果累加,变成一个序列串。如:“4+5,-4+-5,-4+5,4+-5,-4+5,4+5”,得到“9,-9,1,-1,1”。降维对于n位签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海明距离来判断它们的相似度。例如把上面计算出来的“9,-9,1,-1,1,
6、9”降维,得到“101011”,从而形成它们的simhash签名。10月算法在线班9/71分词的权值计算词频-逆文档频率TF-IDF(term frequencyinverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降:Weight=TF*IDF。如果某个分词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类
7、。事实上,该技术在自然语言处理用途广泛,可以配合其它方法一起使用,如余弦距离(反比于相似度)、LDA主题模型等,用于聚类、标签传递算法等后续分析中。10月算法在线班10/7110月算法在线班11/71simHash的应用 每篇文档得到simHash签名值后,接着计算两个签名的海明距离即可。根据经验值,对64位的SimHash值,海明距离在3以内的可认为相似度比较高。海明距离的求法:两个二进制数异或值中1的个数 即:两个二进制数位数不同的个数。10月算法在线班12/71对simHash的分块处理 如何将其扩展到海量数据呢?譬如如何在海量的样本库中查询与其海明距离在3以内的记录呢?一种方案是查找待
8、查询文本的64位simhashcode的所有3位以内变化的组合 大约43744个。10月算法在线班13/71倒排索引的应用:对simHash的分块处理 把64位的二进制simHash签名均分成4块,每块16位。根据抽屉原理,如果两个签名的海明距离在3以内,它们必有一块完全相同。然后把分成的4块中的每一个块分别作为前16位来进行查找,建立倒排索引。10月算法在线班14/71附:抽屉原理的应用 定义:二维坐标系oXY中,坐标(x,y)都是整数的点叫做“格点”。试证明:任取平面上5个格点,它们的连接线段的中点至少有1个是格点。10月算法在线班15/7110月算法在线班16/71对simHash进一步
9、的思考 完全丢掉了位置信息和语义信息 考虑使用WordNet影响Hash值?考虑使用主题模型、标签传递等非确定性机器学习方法分析语义。10月算法在线班17/71倒排索引在实践中的另外一个应用 跳跃链表、跳跃表、跳表;GIS中的POI(Point of Interest)查询 部分匹配:七月算法在线学院,简称七月算法 跳跃匹配:中国科学院、中科院10月算法在线班18/71POI信息点搜索总框架10月算法在线班19/71建立查找树10月算法在线班20/71建立查找树10月算法在线班21/71处理Hash冲突10月算法在线班22/71Hash查找10月算法在线班23/71该复合结构可用性分析 假定P
10、OI总数为100万,每个POI平均字数为10个,那么,问题总规模为1000万;假定常用汉字为1万个,那么,Hash之后,1万个汉字对应的槽slot平均含有1000个POI信息;log1000=9.9658:即,将1000万次搜索,降到10次搜索。注:以上只是定性考虑,非准确分析10月算法在线班24/71Bloom Filter 布隆过滤器(Bloom Filter)是由Burton Howard Bloom于1970年提出的,它是一种空间高效(space efficient)的概率型数据结构,用于判断一个元素是否在集合中。在垃圾邮件过滤的黑白名单、爬虫(Crawler)的网址判重等问题中经常被
11、用到。哈希表也能用于判断元素是否在集合中,但是Bloom Filter只需要哈希表的1/8或1/4的空间复杂度就能完成同样的问题。Bloom Filter可以插入元素,但不可以删除已有元素。集合中的元素越多,误报率(false positive rate)越大,但是不会漏报(false negative)。10月算法在线班25/71Bloom Filter 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比对来判定是否在集合内:链表、树等数据结构都是这种思路。但是随着集合中元素数目的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn)。可
12、以利用Bitmap:只要检查相应点是不是1就知道可以集合中有没有某个数。这就是Bloom Filter的基本思想。10月算法在线班26/71Bloom Filter算法描述一个空的Bloom Filter是一个有m位的位向量B,每一个bit位都初始化为0。同时,定义k个不同的Hash函数,每个Hash函数都将元素映射到m个不同位置中的一个。记:n为元素数,m为位向量B的长度(位:槽slot),k为Hash函数的个数。增加元素x计算k个Hash(x)的值(h1,h2hk),将位向量B的相应槽Bh1,h2hk都设置为1;查询元素x即判断x是否在集合中,计算k个Hash(x)的值(h1,h2hk)。
13、若Bh1,h2hk全为1,则x在集合中;若其中任一位不为1,则x不在集合中;删除元素x不允许删除!因为删除会把相应的k个槽置为0,而其中很有可能有其他元素对应的位。10月算法在线班27/71Bloom Filter 插入查找数据 插入x,y,z 判断w是否在该数据集中10月算法在线班28/71BloomFilter的特点 不存在漏报:某个元素在某个集合中,肯定能报出来;可能存在误报:某个元素不在某个集合中,可能也被认为存在:false positive;确定某个元素是否在某个集合中的代价和总的元素数目无关 查询时间复杂度:O(1)10月算法在线班29/71Bloom Filter参数的确定 单
14、个元素某次没有被置位为1的概率为:k个Hash函数中没有一个对其置位的概率为:如果插入n个元素,仍未将其置位的概率为:因此,此位被置位的概率为:m11km11knm11knm11110月算法在线班30/71Bloom Filter参数的确定 查询中,若某个待查元素对应的k位都被置位,则算法会判定该元素在集合中。因此,该元素被误判的概率(上限)为:考虑到:从而:kknmkq111mknmknmmknmknemmm111111 kmknekP110月算法在线班31/71Bloom Filter参数的确定 P(k)为幂指函数,取对数后求导:kkkkkkebkmknbbbkbkPkPbkkPbekPm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- July_algorithm 9.海量数据 海量 数据
限制150内