算法
文章平均质量分 63
阿童木-atom
行到水穷处,坐看云起时!
鄙人学富五车、才高八斗。技术能力称雄天下,敢领风骚数五百年。java、scala、python、C/C++、php登峰造极,精通Spring、mybatis、hibernate、struts2各种框架及具备各种大型系统架构能力,深耕搜索、推荐、数据挖掘、机器学习、深度学习、人工智能等领域,通读lucene、solr、elaticsearch、sphinx、mahout、tensorfolw等开源项目源码,精通hadoop、hbase、hive、spark、kafka、rabbit、activeMQ等大数据处理工具的应用。
展开
-
冒泡排序算法详解及优化
排序原理:比较两个相邻的元素,将值大的元素交换至右端,小的元素向上冒泡,这也是冒泡算法名称的由来。排序流程如下:1)对数组中的各数据,依次比较相邻的两个元素大小,即第0和第1个比较,第1个和第2个比较...第n-2个和和第n-1个比较,每次比较中如果前面的大于后面的就交换,这样第一轮即n次比较后,最大的元素排在的最后。2)再用同样的方法把第0到n-2的元素重复上述过原创 2017-09-29 10:49:12 · 15616 阅读 · 0 评论 -
深度学习第四讲之特征缩放
转载请注明出处什么是特征缩放 特征缩放其实就是标准化数据特征的范围。 为什么要进行特征缩放 特征缩放可以使得ML方法工作的更好,比如在k-nn的算法中,分类器主要是计算两点之间的欧几里得距离,如果一个feature比其他另外一个feature大超过一个数量级的情况下,那么两者之间的距离就会更大的偏向于这个feature。因此,我们必须对每个feature都进行归一化,...原创 2018-04-27 15:36:18 · 17102 阅读 · 0 评论 -
深度学习第五讲之池化层(Pooling layer)
转载请注明出处 在卷积神经网络中,卷积层之间往往会加上一个池化层。池化层可以非常有效地缩小参数矩阵的尺寸,从而减少最后全连层中的参数数量。使用池化层即可以加快计算速度也有防止过拟合的作用。 在图像识别领域,有时图像太大,我们需要减少训练参数的数量,它被要求在随后的卷积层之间周期性地引进池化层。池化的唯一目的是减少图像的空间大小。池化在每一个纵深维度上独自完成,因此图像的纵深保持不变。池...原创 2018-04-27 15:56:39 · 42526 阅读 · 1 评论 -
深度学习第六讲之批标准化(Batch Normalization)
转载请注明出处batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理在一定范围内,一般来说Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。盲目增大 Batch_Size 有何好处与坏处...原创 2018-04-27 16:31:00 · 16489 阅读 · 0 评论 -
hanlp关键词提取算法TextRank
TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。这是一个“先有鸡还是先有蛋”的悖论,PageRank采用矩阵迭代收敛的方式解决了这个悖论。引用自http://www.hankcs.com/nlp/textrank-algorithm-to-ex...原创 2018-05-24 15:44:05 · 22747 阅读 · 0 评论 -
tensorflow滑动平均模型ExponentialMovingAverage的使用
滑动平均模型可以在一定程度上提高最终模型在测试集或实际预测数据的准确性。神经网络中每层的参数矩阵W都建一个对应的影子变shade_w量,一般情况下每一批数据更新一次W,shade_w也会随着更新但更新的幅度小有W。影子变量更新值由下面的公式决定: shadow_w = decay * shadow_w + (1-decay) * w shadow_w的初始值就是w的初始值,decay...原创 2018-06-06 12:16:41 · 15872 阅读 · 0 评论 -
为什么损失函数多用交叉熵entropy来计算
我们知道对于回归问题一般采用均方差来计算损失,这是因为回归输出的是一个实数,这样来计算一个batch中预测值与实际的均方差是自然而然的选择的,而且导数非常简单(神经网络参数的更新依据就是梯度也就是偏导),这里不再推导均方差的偏导。 但对于分类问题,输出的是一个n维的向量,向量的每个值是对应分类的概率,概率最大的就是预测的分类结果。样本的标签值也是一个概率分布,表情衡量两个概率分布之间的距...原创 2018-06-13 16:35:25 · 17126 阅读 · 0 评论 -
神经网络二之神经网络反向传播原理与python编程实现
误差 样本数据的真实值与神经网络的输出值之间的差值称为误差,当然一般不会直接使用直接的差值,常用的有回归算法的均方差、分类的交叉熵,这方面不影响我们来讨论神经网络的反向传播原理与过程,所以不做过多讨论。梯度下降 目前的神经网络层数可达百层以上,激活函数又是非线性的,很难用一个数学表达式来表达整个神经网络的输出,即使能够找一个数学表达式也是非常复杂,如果能够找到一个数学表达式我们...原创 2018-06-07 11:00:35 · 21795 阅读 · 1 评论 -
神经网络三之权重参数的初始化技巧
神经网络的结构是开发都自己定义的,主要包括神经网络的层数、每层的结点数、层与层之间的连接方式,神经网络的训练过程就是学习参数的过程,而刚开始训练时参数矩阵都是通过一定的方式生产的。下面分别介始常用的参数矩阵的生产方式基本原则 一般情况下较大的初始权重经过前向传播过程,到输出层的的输出信号也是较大的对一些激活函数如sigmod会过快的导致网络饱和,就会导致学习权重的能力下降,所以一...原创 2018-06-14 15:32:06 · 16589 阅读 · 0 评论 -
论世界杯中的团队意识的重要性
俄罗斯世界杯已进入1/4决赛阶段,四强尘埃落定,然而本届世界杯却被一些球迷(鄙人认为是伪球迷)称为是史上“最弱四强”,4支球队总共只拿过2次世界杯冠军。当初的夺冠热门德国、阿根廷、巴西、西班牙相继出局,意大利小组都没能出线!那么本届世届杯四强真的是“史上最弱吗,其实恰恰相反,本届四强是理所当然,史上“最强球队”,足球一团体运动,在团队意识面前个人能力何足挂齿!下面鄙人来分析下他们出局的根本原因...原创 2018-07-09 10:54:35 · 16246 阅读 · 0 评论 -
hanlp源码解析word2vec词向量算法
one-hot表示法 词向量就是把一个词用向量的形式表示,以前的经典表示法是one-hot,这种表示法向量的维度是词汇量的大小。它的处理方式简单粗暴,一般就是统计词库包含的所有V个词,然后将这V个词固定好顺序,然后每个词就可以用一个V维的稀疏向量来表示,向量中只有在该词出现的位置的元素才为1,其它元素全为0。比如下面这几个词,第一个元素为1的表示中国,第六个元素为1的表示美国,第五个元素为1...原创 2019-01-29 15:21:49 · 18168 阅读 · 3 评论 -
离职原因之3B分类问题
当我们准备离职时,几乎没人都会被问到离职的原因。我们把整个应聘流程分为三个阶段:第一阶段:电话沟通阶段,我们称为S1第二阶段:现场面试阶段,我们称为S2第三阶段:薪资和入职事宜沟通阶段,我们称为S3 我们可以依据离职原因这个问题,大概推测出您正在应聘的公司的品行(物以类聚,人以群分!我们推断的是问这个问题的人的品行,进而可以推断整个公司的品行!),我们可以进一步把公司归为三类:垃...原创 2019-05-31 09:32:58 · 16217 阅读 · 2 评论 -
深度学习第三讲之防止过拟合提高模型泛化能力
转载请注明出处 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程,网络在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不work。常见的防止模型过似合的方法有DropOut和正则化,两者中最常用的是后者,te...原创 2018-04-27 15:15:11 · 25936 阅读 · 0 评论 -
深入理解查准率与查全率
欢迎关注鄙人公众号,技术干货随时看!查准率与查全率(召回率)是在信息检索与机器学习领域常用的衡量指标,书籍或网络上有非常多的定义,敝人在重温周志华先生《机器学习》一书时,发现书中的定义是非常科学的,而且把这两个指标根据混淆矩阵进行了数学化!在信息检索领域的定义:检索出的n个文档中正确结果(m个结果是正确的)的比率即是查准率,即p=n/m;假设在所有的数据中正确结果有n个,一次检索...原创 2018-03-22 12:59:27 · 21643 阅读 · 2 评论 -
选择排序算法
选择排序和冒泡排序一样都是通过选择和交换元素实现的。原理如下1)首先从原始n数据中选择最小的1个数据,将其第0个元素交换,选出最小的数据就是假设第0个元素是最小的,然后依次和剩余的元素比较,就可以找出最小的!2)接着从剩下的n-1个元素中选出最小的和第1个元(java下标从0开始)交换3)重复上述步骤!为了更好的理解下面通过一个实际例子来一步步的执行排序算法举例说明:要原创 2017-09-29 11:32:16 · 297 阅读 · 0 评论 -
插入排序算法
插入排序算法通过比较和插入来实现排序,具体如下:1)假设第0个元素是排序好的,第1个元素与之经较,如果小于第0个,最把第0个元素后移一个,把第1个元素插入到第0个位置2)接着,第2个元素,与前两个元素比较,把第3个插入到合适的位置3)重复上述过程,直接最后一个元素插入到合适的位置,结束!为了更好的理解下面通过一个实际例子来一步步的执行排序算法举例说明:要原创 2017-09-29 13:09:33 · 256 阅读 · 0 评论 -
高性能搜索引擎sphinx源码解析之搜索过程和评分公式
技术交流qq群: 659201069**鄙人的新书《elasticsearch7完全开发指南》,欢迎订阅!**-----https://wenku.baidu.com/view/8ff2ce94591b6bd97f192279168884868762b8e7《kibana权威指南》----https://wenku.baidu.com/view/24cfee1ce43a...原创 2017-10-18 16:36:02 · 22205 阅读 · 0 评论 -
堆排序算法java实现
概述堆本质是完全二叉树的,只是在对二完全二叉树做了以下几个方面的限定:1、大根堆:根结点大于等于其子结点的数据,左右子树大小没有限定,这样以来最大数据就是root结点2、小根堆:根结点小于等于其子结点的数据,左右子树大小没有限定,这样以来最小的结点是root结点3、堆排序的过程就是,取出根结点,重新构造堆(因为堆结构已破坏),取出根结点。。。。4、对于任结点i 其中i[0,n-原创 2017-10-10 15:51:10 · 370 阅读 · 0 评论 -
hanlp源码解析之中文分词算法
欢迎关注鄙人公众号,技术干货随时看!技术交流qq群: 659201069词图词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。需要稀疏2维矩阵模型,以一个词的起始位置作为行,终止位置作为列,可以得到一个二维矩阵。例如:“他说的确实在理”这...原创 2017-10-10 16:38:53 · 20336 阅读 · 0 评论 -
k-means聚类算法hadoop实现源码
本篇文章只讲可用的hadoop实现算法的源码,可直接拷贝用于工程中!/** * 质点特征模型,可根据自己的业务需求进行修改 * * @author jianting.zhao */public class ParticleModel { //特征x public double x; //特征y public double y; public原创 2017-10-11 09:35:46 · 16980 阅读 · 1 评论 -
hanlp源码解读之字符正规化CharTable
概述:字符正规化是指在分词之前把繁体转成简体、大写转成小写等,在自然语言处理中这是必不可以的一个步骤!在hanlp中的实现方法是基于词典的,也就是正规则字符对照表。就是“data/dictionary/other/CharTable.txt” 这个词典,打开后是下面这个样子的!«=《 「=“」=”『=‘』=’【=《〗="〝="〞="と=之ふ=子ル=儿ㄖ=日丟=丢原创 2017-10-12 09:28:23 · 16226 阅读 · 0 评论 -
红黑树java原理及实现源码
红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。红黑树的特性:转载 2017-10-12 14:52:17 · 16284 阅读 · 0 评论 -
频繁项集实际应用之分类到分类的交叉推荐
欢迎关注鄙人公众号,技术干货随时看!首先介绍下频繁项集的相关知识!其实频繁项集是针对购物车提出来的,也就是在购物车中频繁出现的物品的集合。2.相关概念:关联规则的支持度:Support(A,B)=包含A和B的事务数/事务总数关联规则的置信度:Confidence(A,B)= 包含A和B的事务数/包含A事务数频繁项集:项集的频率大于等于最小支持度。强相关规则:同时满足...原创 2017-10-12 16:49:47 · 16035 阅读 · 0 评论 -
图解---图和动态规划算法
动态规划是一种算法设计思想或者说是一种编程思维,并非想快速排序、二分查找、选择排序这种具体的算法。一般应用于图论中,用来寻找“最短路径”。图模拟的是实体间的关系或连接,如网页链接、人们的社交关系,如下的图表示张三的人际交际图: 图由节点和边组成,一个节点可能与多个节点直接相连,这些节点称为邻居节点,张三李四的前驱节点,李四是张三的后继节点。在上面的人际关系图中李四、王五是张三的邻居(朋友...原创 2019-08-09 15:05:53 · 38389 阅读 · 1 评论