有哪些类似于BloomFilter或者GeoHash这样原理容易理解但设计很巧妙的算法可以推荐
Cardinality Estimation 是大数据计算中很重要的方法, 计算留存和去重常用到https://datasketches.github.io/ 和 hyperloglog 等算法。
【有哪些类似于BloomFilter或者GeoHash这样原理容易理解但设计很巧妙的算法可以推荐】 对于这些算法,如果一上来就读论文, 会比较难,通过这几年的观察, 中文博客是比较好的资料。
解读Cardinality Estimation算法
第一部分:基本概念第二部分:Linear Counting第三部分:LogLog Counting第四部分:HyperLogLog Counting及Adaptive Counting数据流基本问题--基于sketch进行Frequency Estimation
■网友
题主看了BloomFilter的话可以顺便看下Count Min Sketch,用来近似估计一个集合中元素的频率。BloomFilter相比于一般的hash节省空间但可能造成false positive。Count Min Sketch同样节省空间,代价是如果有冲突得到的频率会偏大。GeoHash是一种空间索引的方法,把高维坐标编码到一维,同时保持邻近的坐标在一维依然在邻近的位置,可以看下不同的编码方式比如z-ordering和hillbert curve。其他空间索引的数据结构可以了解下QuadTree和R-Tree,不过现在基本不用它们了。实际应用方面主要关注这些数据结构怎么支持各种空间相关query吧,比如找某个范围内所有对象(range query),某个对象k近邻(nn query)之类。最近正好在看,希望有机会来补充一些自己的理解。
■网友
优秀的算法有很多,不过说回来还是要看应用场景的。比如在一个简单的自然语言分词中,常用的一种算法就是马尔科夫模型。以及计算路径的Viterbi算法。这里马尔科夫模型实际上也是解决很多组合推演的基础算法,实际上这个算法非常巧妙。利用已有事件的概率(需要通过训练获得的初始和状态概率),和隐藏在这个概率下对应的状态关系,还原出另一个状态对应关系矩阵,根据这个矩阵去寻找最优路径。已获得最可能存在的事务关系。算法本身并不复杂,主要依赖的是数据采集和训练的准确性,而且随着时间的推进,还需要不断的更新训练模型才能获得较好的结果。在已知路网的寻路算法中,贪心算法也是比较优秀的一个,主要解决的是对路网的计算量的问题,以"全局最优解必定也是局部最优解"的思想进行递归扩展,极大的减少了运算的数量,快速获得结果。最大期望算法,这个用在大数据归集中非常常见。主要是把很多有着多种元素特性的数据,慢慢归集成几个共有的特性。目前比较流行的广告推荐算法一般建立在Logic Regression算法上,前提是需要有大量的训练。算法如果单独的脱离场景而去学习,可能效果是有限的。首先要了解行业的痛点,在这个痛点上分析存在的优势和劣势,再根据自有的资源进行整合,才能得到最大的效益提升。往往算法解决的两个特点,计算效率和命中。而数据本身和需求是千变万化的,这里推荐可以看看《数学之美》,里面一些在实际运用中的算法讲的非常有趣。
推荐阅读
- 医院|感染艾滋病毒初期有哪些征兆?可以自行检查吗?共用马桶会传染吗
- 玩游戏花钱最多的有哪些游戏,哪些人
- 旅行|需要准备哪些物品?全面冬季出游清单,建议收藏带宝宝出门旅行
- 红米手机通过QQ空间的成功营销,给涉足社会化营销的企业有哪些启示
- 互联网在线音乐行业有哪些可能的盈利模式
- 直播会成为品牌传播的另一个途径么有哪些可行的方法感觉有戏又没头绪好捉急。
- 侧重业务逻辑的产品需求规格说明书,需要有哪些要点
- 大学|上海大学第8,前10名有哪些高校?上海市30所大学排名
- 学图像处理有哪些不错的书推荐
- 新浪微博创新基金投资了哪些团队
