算法
文章平均质量分 89
Android路上的人
开源社区爱好者, Apache Hadoop PMC & Apache Ozone PMC, 专注于分布式存储领域, 大数据方面的研究
展开
-
一个SkipList简单跳表的实现
文章目录前言SkipList样例结构SkipList样例代码简单实现前言上一篇文章笔者写了关于HDFS使用SkipList跳表的结构来加速Snapshot的diff比较过程,然后加速HDFS大Snapshot删除的过程(此部分文章可阅读上篇博文:聊聊HDFS删除Snapshot行为导致的NameNode crash)。本文笔者想继续聊聊这个跳表结构,简单说就是构造多链表层级结构,利用(数据存...原创 2020-04-04 11:44:15 · 577 阅读 · 0 评论 -
ACO蚁群算法解决TSP旅行商问题
前言蚁群算法也是一种利用了大自然规律的启发式算法,与之前学习过的GA遗传算法类似,遗传算法是用了生物进行理论,把更具适应性的基因传给下一代,最后就能得到一个最优解,常常用来寻找问题的最优解。当然,本篇文章不会主讲GA算法的,想要了解的同学可以查看,我的遗传算法学习和遗传算法在走迷宫中的应用。话题重新回到蚁群算法,蚁群算法是一个利用了蚂蚁寻找食物的原理。不知道小时候有没有发现,当一个蚂蚁发现了地原创 2015-04-30 15:31:45 · 15328 阅读 · 3 评论 -
从Apriori到MS-Apriori算法
前言最近的几个月一直在研究和学习各种经典的DM,机器学习的相关算法,收获还是挺多的,另外还整了一个DM算法库,集成了很多数据挖掘算法,放在了我的github上,博友的热度超出我的想象,有很多人给我点了star,在此感谢各大博友们,我将会继续更新我的DM算法库。也许这些算法还不能直接拿来用,但是可以给你提供思路,或变变数据的输入格式就能用了。好,扯得有点远了,现在说正题,本篇文章重新回到讲述Ap原创 2015-04-16 22:42:53 · 4705 阅读 · 0 评论 -
海量数据处理算法之Bloom Filter
算法介绍Bloom Filter的中文名称叫做布隆过滤器,因为他最早的提出者叫做布隆(Bloom),因而而得此名。布隆过滤器简单的说就是为了检索一个元素是否存在于某个集合当中,以此实现数据的过滤。也许你会想,这还不简单,判断元素是否存在某集合中,遍历集合,一个个去比较不就能得出结果,当然这没有任何的问题,但是当你面对的是海量数据的时候,在空间和时间上的代价是非常恐怖的,显然需要更好的办法来原创 2015-04-06 20:53:33 · 3478 阅读 · 0 评论 -
多维空间分割树--KD树
算法介绍KD树的全称为k-Dimension Tree的简称,是一种分割K维空间的数据结构,主要应用于关键信息的搜索。为什么说是K维的呢,因为这时候的空间不仅仅是2维度的,他可能是3维,4维度的或者是更多。我们举个例子,如果是二维的空间,对于其中的空间进行分割的就是一条条的分割线,比如说下面这个样子。如果是3维的呢,那么分割的媒介就是一个平面了,下面是3维空间的分割这就原创 2015-04-10 21:39:58 · 7683 阅读 · 1 评论 -
倒排索引构建算法BSBI和SPIMI
参考文献:http://www.cnblogs.com/fly1988happy/archive/2012/04/01/2429000.htmlhttp://blog.csdn.net/v_july_v/article/details/7109500我的数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm我的算法库:h原创 2015-04-05 18:50:10 · 6474 阅读 · 0 评论 -
Chameleon两阶段聚类算法
参考文献:http://www.cnblogs.com/zhangchaoyang/articles/2182752.html(用了很多的图和思想)博客园(华夏35度) 作者:Orisun数据挖掘算法-Chameleon算法.百度文库我的算法库:https://github.com/linyiqun/lyq-algorithms-lib(里面可能有你正想要的算法)算法介绍本篇文原创 2015-03-23 20:43:37 · 14611 阅读 · 4 评论 -
Tarjan算法--有向图强连通分量算法
参考链接:https://www.byvoid.com/blog/scc-tarjan/我的算法库:https://github.com/linyiqun/lyq-algorithms-lib算法介绍正如标题所介绍的那样,Tarjan算法的目标就是找出图中的连通图的,其实前提条件是这样的,在一个有向图中,有时必然会出现节点成环的情况,而在图内部的这些形成环的节点所构成的图就是我们所要找原创 2015-03-14 10:39:29 · 3299 阅读 · 0 评论 -
随机森林和GBDT的学习
参考文献:http://www.zilhua.com/629.htmlhttp://www.tuicool.com/articles/JvMJvehttp://blog.sina.com.cn/s/blog_573085f70101ivj5.html我的数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm我的算法库:https原创 2015-03-30 20:28:53 · 8038 阅读 · 3 评论 -
Trie树算法
算法介绍第一眼看到Trie树算法,首先明白的就是他一定是用树形结构实现的算法。后来实现完整个算法才知道其实他也是压缩树,类似于哈弗曼编码和CF-Tree,因为树中保留了公共的前缀,减少了不必要的重复存储空间。所以查询效率会高很多,如果你明白哈弗曼编码的实现过程,这个自然也是一样的道理。那Trie树与Huffman编码树有什么区别呢,Huffman是0或1的编码,而Trie则是文本查找树,节点上原创 2015-03-11 22:16:05 · 3356 阅读 · 0 评论 -
遗传算法在走迷宫游戏中的应用
前言遗传(GA)算法是一个非常有意思的算法,因为他利用了生物进化理论的知识进行问题的求解。算法的核心就是把拥有更好环境适应度的基因遗传给下一代,这就是其中的关键的选择操作,遗传算法整体的阶段分为选择,交叉和变异操作,选择操作和变异操作在其中又是比较重要的步骤。本篇文章不会讲述GA算法的具体细节,之前我曾经写过一篇专门的文章介绍过此算法,链接:http://blog.csdn.net/andro原创 2015-03-26 21:56:15 · 6192 阅读 · 11 评论 -
腾讯新闻评论数据爬取
前言鉴于最近在做观点挖掘的相关工作,观点的数据源是网络评论数据,于是第一个想到的就是新闻观点数据,一个热门的新闻可能一晚上就会有上万条评论,所以如何分析并利用好这些评论信息,将会是一件非常有意思的事情,观点挖掘是我研究的目的,当然要想很好解决这个问题,所以我自然要解决数据源的问题,于是乎,我就想到了去爬取腾讯新闻的评论数据。下面我会介绍一下这个过程,这个过程还是非常有意思的哦。为什么爬的是原创 2015-05-17 22:28:00 · 6872 阅读 · 1 评论 -
网络新闻评论观点挖掘系统实现
前言网络新闻观点挖掘系统事实上本质是属于文本数据挖掘范畴的,对于文本挖掘的方式,在早期主要是基于Web文本挖掘领域的。当然这个挖掘的尺度是可以控制的,粗粒度的挖掘相对于细粒度的挖掘要简单不少,粗粒度挖掘可以快速的多数网民们对某新闻的观点倾向,这也是我毕设作品所需要达到的目标。系统设计目标平时做了许多挖掘算法的研究,一直懒得去做一些能智能分析化的工具,恰好这次可以利用毕业设计的机会,做一原创 2015-05-31 21:06:31 · 4965 阅读 · 3 评论 -
排序算法,堆算法实现TopK
TopK问题TopK问题是一个经典的算法问题,TopK可以拆分为2个词Top, K意思就是选出其中最Top的K个变量,Top的意思可以是值最大,也可以是其他的一些衡量条件。也许你会想,这不是很简单吗,比如选一组数字中最大的一组数字,做个冒泡排序,输出前K个就OK了啊,当然没有说错,但是前提条件错了,数据量是非常庞大的时候,也许就没有这么简单了,有的时候,对于单个变量的计数统计,就有可能遇到问题原创 2015-06-23 20:49:17 · 4656 阅读 · 0 评论 -
聊聊Raft一致性协议以及Apache Ratis
文章目录前言分布式系统中的经典问题:Consensus问题Raft算法原理前言在分布式系统中,有一类经典的问题经常会被提起:一致性问题。在单机环境中,这看起来根本不是一个问题。但是在多机,多服务,不同网络环境下时,一致性问题就是一个典型的问题了。在分布式系统中,当我们提到一致性问题时,我们立马想到的是Paxos协议。而对此协议的一个开源的实现框架是目前被广泛使用的组件Zookeeper。但是...原创 2019-02-04 20:08:30 · 4928 阅读 · 0 评论 -
ListenableFuture的状态同步和原子更新
文章目录前言ListenableFuture的监听添加ListenableFuture内的状态同步控制ListenableFuture内的Sync同步其它状态原子更新方法引用前言在Java8里的Future类实现中,引入了一种新的Future类:CompletableFuture。此类相比较于原来的Future类来说,最大的一点不同在于它可以完全异步执行结果回调。而在老Future模式下,用...原创 2019-01-27 22:03:34 · 1110 阅读 · 0 评论 -
循环冗余校验(CRC)的简单应用实践
前言一般来说,数据信息在传输过程中有时会受到外界有意或无意的干扰行为,出现数据的篡改和破坏现象,造成数据接收端的不一致行为。于是乎,在信息领域有了数据校验的概念,今天本文主要来简单聊聊其中的经典使用算法CRC(循环冗余校验)以及其在Ozone中的应用实践。CRC和Checksum的关系往往我们在谈论CRC的时候,马上会联想到Checksum这个词,二者是等同的意思吗?实则还是有区别的。...原创 2018-12-03 23:10:02 · 4610 阅读 · 0 评论 -
一致性哈希环的理论实现
前言最近阅读社区代码时,发现了一段富有创造性的程序算法–一致性哈希环。也就是一致性哈希算法的具体实现,由一位微软工程师在提交社区代码时,笔者review到的,感觉代码实现严谨简洁,并且把一致性哈希环的特点全考虑到了,是一段很不错的算法程序。本文简单对其进行分析,解释。一致性哈希算法这里就不多介绍了,可点击笔者之前写过的文章一致性哈希算法。一致性哈希算法在分布式系统中有很多的应用场景,主要是...原创 2018-03-11 22:48:53 · 1489 阅读 · 1 评论 -
维特比算法在隐马尔可夫模型中的应用
前言文章标题的两个概念也许对于许多同学们来说都相对比较陌生,都比较偏向于于理论方面的知识,但是这个算法非常的强大,在很多方面都会存在他的影子。2个概念,1个维特比算法,1个隐马尔可夫模型。你很难想象,输入法的设计也会用到其中的一些知识。HMM-隐马尔可夫模型隐马尔可夫模型如果真的要展开来讲,那短短的一篇文章当然无法阐述的清,所以我会以最简单的方式解释。隐马尔可夫模型简称HMM,根据百度百科中的描述原创 2015-08-03 23:09:39 · 3894 阅读 · 0 评论 -
一致性哈希算法
前言很多人估计都听过哈希,顾名思义,一般程序的直接反映就是做映射的嘛,哈希算法,当然这不是今天本文所讲的重点,今天主要所讲的是另外一个名词,一致性哈希算法,光从字面上的意思想,这一定是对于原有算法的一个改进了。Hash我们先从最简单的hash方法开始说起,哈希方法可以有很多种类型,字符串哈希,数值类型的哈希,实体类的哈希,其实这些都可以统称为对象的哈希,用一个方法就可以表示就是hashcode()原创 2015-07-20 21:00:47 · 2562 阅读 · 1 评论 -
Simhash相似哈希算法
前言最近在阅读吴军博士的>这门书,得到了很多的启发和思考,里面提到了一个概念---信息指纹。一般正常人提到这个概念,第一个想到的词应该是哈希映射算法,将任何对象都映射成一个独立的变量,一般这个变量是一个独有的数字,当然也不排除哈希碰撞的可能行。论单个对象,用哈希算法做一次映射,比较对象是否一致,这固然是可以的,但是如果想用哈希算法做一些文章之间的相似度计算的时候,可能传统的哈希算法就不见得是最佳的原创 2015-07-29 22:26:06 · 7368 阅读 · 4 评论 -
余弦定理实现新闻自动分类算法
前言余弦定理,这个在初中课本中就出现过的公式,恐怕没有人不知道的吧。但是另外一个概念,可能不是很多的人会听说过,他叫空间向量,一般用e表示,高中课本中有专门讲过这个东西,有了余弦定理和向量空间,我们就可以做许多有意思的事情了,利用余弦定理计算文本相似度的算法就是其中一个很典型的例子。当然这个话题太老,说的人太多,没有什么新意,恰巧周末阅读了吴军博士的>这门书,书中讲到了利用余弦定理实现新闻分类,于原创 2015-07-27 21:53:33 · 6561 阅读 · 0 评论 -
再学贝叶斯网络--TAN树型朴素贝叶斯算法
前言在前面的时间里已经学习过了NB朴素贝叶斯算法, 又刚刚初步的学习了贝叶斯网络的一些基本概念和常用的计算方法。于是就有了上篇初识贝叶斯网络的文章,由于本人最近一直在研究学习>,也接触到了许多与贝叶斯网络相关的知识,可以说朴素贝叶斯算法这些只是我们所了解贝叶斯知识的很小的一部分。今天我要总结的学习成果就是基于NB算法的,叫做Tree Augmented Naive Bays,中文意思就是树型朴素贝原创 2015-07-05 15:18:09 · 10566 阅读 · 1 评论 -
初识贝叶斯网络
前言一看到贝叶斯网络,马上让人联想到的是5个字,朴素贝叶斯,在所难免,NaiveByes的知名度确实会被贝叶斯网络算法更高一点。其实不管是朴素贝叶斯算法,还是今天我打算讲述的贝叶斯网络算法也罢,归根结底来说都是贝叶斯系列分类算法,他的核心思想就是基于概率学的知识进行分类判断,至于分类得到底准不准,大家尽可以自己用数据集去测试测试。OK,下面进入正题--贝叶斯网络算法。朴素贝叶斯一般我在原创 2015-06-29 16:38:45 · 7511 阅读 · 1 评论 -
LCA最近公共祖先算法
参考链接:http://dongxicheng.org/structure/union-find-set/ 作者Dong算法介绍LCA(Least Common Ancestors)问题的定义是这样的,给定2个点,求出离他们最近的也也就是深度最深(或者说是离树根最远的)的公共祖先。这个问题如果细细去想,也不算法是特别难的一个问题,最简单的办法就是,依次从2个点开始,往父亲节点上去寻找,如原创 2015-03-06 10:01:38 · 2739 阅读 · 0 评论 -
dbscan基于密度的空间聚类算法
参考文献:百度百科 http://baike.baidu.com算法介绍说到聚类算法,大家如果有看过我写的一些关于机器学习的算法文章,一定都这类算法不会陌生,之前将的是划分算法(K均值算法)和层次聚类算法(BIRCH算法),各有优缺点和好坏。本文所述的算法是另外一类的聚类算法,他能够克服BIRCH算法对于形状的限制,因为BIRCH算法偏向于聚簇球形的聚类形成,而dbscan采用的是基于空间原创 2015-03-16 20:24:44 · 7653 阅读 · 1 评论 -
BIRCH算法---使用聚类特征树的多阶段算法
更多数据挖掘代码:https://github.com/linyiqun/DataMiningAlgorithm介绍BIRCH算法本身上属于一种聚类算法,不过他克服了一些K-Means算法的缺点,比如说这个k的确定,因为这个算法事先本身就没有设定有多少个聚类。他是通过CF-Tree,(ClusterFeature-Tree)聚类特征树实现的。BIRCH的一个重要考虑是最小化I/O,通过扫描原创 2015-02-05 18:58:27 · 12383 阅读 · 1 评论 -
朴素贝叶斯分类算法
参考资料地址: http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html我的数据挖掘算法实现源码地址:https://github.com/linyiqun/DataMiningAlgorithm介绍要介绍朴素贝叶斯算法(Naive Bayes),那就得先介绍贝叶斯分类算法,贝叶斯分原创 2015-01-13 18:40:00 · 20988 阅读 · 9 评论 -
决策分类树算法之ID3,C4.5算法系列
一、引言在最开始的时候,我本来准备学习的是C4.5算法,后来发现C4.5算法的核心还是ID3算法,所以又辗转回到学习ID3算法了,因为C4.5是他的一个改进。至于是什么改进,在后面的描述中我会提到。二、ID3算法ID3算法是一种分类决策树算法。他通过一系列的规则,将数据最后分类成决策树的形式。分类的根据是用到了熵这个概念。熵在物理这门学科中就已经出现过,表示是一个物质的稳定度,在这里就原创 2015-01-04 18:19:14 · 34070 阅读 · 16 评论 -
K-最近邻算法
介绍KNN算法全名为k-Nearest Neighbor,就是K最近邻的意思。KNN也是一种分类算法。但是与之前说的决策树分类算法相比,这个算法算是最简单的一个了。算法的主要过程为:1、给定一个训练集数据,每个训练集数据都是已经分好类的。2、设定一个初始的测试数据a,计算a到训练集所有数据的欧几里得距离,并排序。3、选出训练集中离a距离最近的K个训练集数据。4、比较k个训练集数原创 2015-01-11 18:38:32 · 16611 阅读 · 3 评论 -
CART分类回归树算法
CART分类回归树算法与上次文章中提到的ID3算法和C4.5算法类似,CART算法也是一种决策树分类算法。CART分类回归树算法的本质也是对数据进行分类的,最终数据的表现形式也是以树形的模式展现的,与ID3,C4.5算法不同的是,他的分类标准所采用的算法不同了。下面列出了其中的一些不同之处:1、CART最后形成的树是一个二叉树,每个节点会分成2个节点,左孩子节点和右孩子节点,而在ID3和C原创 2015-01-09 18:37:27 · 17247 阅读 · 7 评论 -
K-Means聚类算法
更多数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm算法介绍K-Means又名为K均值算法,他是一个聚类算法,这里的K就是聚簇中心的个数,代表数据中存在多少数据簇。K-Means在聚类算法中算是非常简单的一个算法了。有点类似于KNN算法,都用到了距离矢量度量,用欧式距离作为小分类的标准。算法步骤(1)、设定数字k,从n个初原创 2015-02-01 18:26:15 · 8596 阅读 · 0 评论 -
链接挖掘算法之PageRank算法和HITS算法
参考资料:http://blog.csdn.net/hguisu/article/details/7996185更多数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm链接分析在链接分析中有2个经典的算法,1个是PageRank算法,还有1个是HITS算法,说白了,都是做链接分析的。具体是怎么做呢,继续往下看。PageRank原创 2015-01-30 20:16:04 · 14889 阅读 · 4 评论 -
FP-Tree频繁模式树算法
参考资料:http://blog.csdn.net/sealyao/article/details/6460578更多数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm介绍FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模式树算法,他与Apriori算法一样也是用来挖掘频繁项集的,不过不同的是,FP原创 2015-01-28 18:21:46 · 12851 阅读 · 5 评论 -
位示图算法实现大数据的存储
今天在看排序算法的时候,看到了用位示图法实现的,上面说可以大大减少内存的使用,尤其针对大数据的存储,数据量非常大的的时候,他的优点就比较明显了,因为他存储数据值依靠1个位来表示。具体是怎么回事呢,继续往下看。位图法,位图法,当然和位相关,下面我给出一组数组int[]{1, 3, 5,8},也许在普通的我们的编程中,我们肯定是存放在一个32位整形的数组中,1个32位整数,4个字节,4个数字总共16个原创 2014-11-22 21:01:07 · 3990 阅读 · 0 评论 -
高级数据结构研究-B树系列以及红黑树
程序员做的越久,越发觉得基本功显得越来越重要了。基本功不扎实会潜移默化的影响你的程序开发,这不是,上次浏览博客,看到了一篇运用B+树实现数据库索引的功能,当时就不明白了,看似毫无关系的两者,怎么会有联系呢,所以想把大学时学的数据结构拿来看看,这到底怎么回事,当然了,看过了之后,顺便把另一种高级树结构-红黑树也看了一下,红黑树,说起来,容易,实现起来那代码看的人真是眼花。红黑树的插入,删除实现,同学原创 2014-10-04 10:24:32 · 3420 阅读 · 0 评论 -
AdaBoost装袋提升算法
参开资料:http://blog.csdn.net/haidao2009/article/details/7514787更多挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm介绍在介绍AdaBoost算法之前,需要了解一个类似的算法,装袋算法(bagging),bagging是一种提高分类准确率的算法,通过给定组合投票的方式,获得最原创 2015-02-08 09:22:10 · 11130 阅读 · 1 评论 -
EM最大期望算法
参考资料:http://blog.csdn.net/zouxy09/article/details/8537620http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html我的数据挖掘算法代码实现:https://github.com/linyiqun/DataMiningAlgorithm介绍em算法是一种迭代原创 2015-01-20 18:43:37 · 10025 阅读 · 4 评论 -
SVM支持向量机算法
参考资料:http://www.cppblog.com/sunrise/archive/2012/08/06/186474.html http://blog.csdn.net/sunanger_wang/article/details/7887218我的数据挖掘算法代码:https://github.com/linyiqun/DataMining原创 2015-01-16 18:43:17 · 17539 阅读 · 1 评论 -
基于连通图的分裂聚类算法
参考文献:基于连通图动态分裂的聚类算法.作者:邓健爽 郑启伦 彭宏 邓维维(华南理工大学计算机科学与工程学院,广东广州510640)我的算法库:https://github.com/linyiqun/lyq-algorithms-lib 算法介绍从文章的标题可以看出,今天我所介绍的算法又是一个聚类算法,不过他比较特殊,用到了图方面的知识,而且是一种动态的算法,与BIRCH算法一样,他也原创 2015-03-19 20:22:51 · 5990 阅读 · 0 评论