基于搜索的贝叶斯网络结构学习算法-K2

2018-04-0519:34:18 ItsBlue 阅读数3172更多分类专栏: 贝叶斯网络 网络结构学习 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u012558945/article/details/79828434部分内容取自:[CooperandHerskovits,1991]Cooper,G.andHerskovits,E.(January,1991).ABayesianmethodfor theinductionofprobabilisticnetworksfromdata.TechnicalReportSMI-91-1,SectiononMedicalInformatics,StanfordUniversity.一算法简介基于搜索的贝叶斯网络结构学习算法核心主要包含两块:一是确定评分函数,用以评价网络结构的好坏。二是确定搜索策略以找到最好的结果。二评分函数对网络结构的学习其实可以归...

采样方法(二)MCMC相关算法介绍及代码实现

2017-12-3015:32:14 Dark_Scope 阅读数10509更多分类专栏: 机器学习 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/Dark_Scope/article/details/78937731书接前文,在采样方法(一)中我们讲到了拒绝采样、重要性采样一系列的蒙特卡洛采样方法,但这些方法在高维空间时都会遇到一些问题,因为很难找到非常合适的可采样Q分布,同时保证采样效率以及精准度。本文将会介绍采样方法中最重要的一族算法,MCMC(MarkovChainMonteCarlo),在之前我们的蒙特卡洛模拟都是按照如下公式进行的:E[f(x)]≈1m∑mi=1f(xi).  xi∼p.iid{E}[f(x)]approxfrac{1}{m}sum_{i=1}^m{f(x_i)}.x_isimp.iidE[f(x)]≈m1​i=1∑m​f(x...

SWATS算法剖析(自动切换adam与sgd)

战歌指挥官搬砖、码砖、代查水表....27人赞同了该文章SWATS是ICLR在2018的高分论文,提出的一种自动由Adam切换为SGD而实现更好的泛化性能的方法。论文名为ImprovingGeneralizationPerformancebySwitchingfromAdamtoSGD,下载地址为:https://arxiv.org/abs/1712.07628。作者指出,基于历史梯度平方的滑动平均值的如adam等算法并不能收敛到最优解,因此在泛化误差上可能要比SGD等方法差,因此提出了一种转换机制,试图让算法自动在经过一定轮次的adam学习后,转而由SGD去执行接下来的操作。算法本身思想很简单,就是采用adam这种无需操心learningrate的方法,在开始阶段进行梯度下降,但是在学习到一定阶段后,由SGD接管。这里前面的部分与常规的adam实现区别不大,重要的是在切换到sgd后,这个更新的learningrate如何计算。整个算法步骤流程如下:  熟悉adam的应该能熟悉蓝色的部分,这个就是adam的原生实现过程。作者比较trick的地方就是14行到24行这一...

梯度下降优化算法综述

2017年04月14日17:28:56 zhiyong_will 阅读数24246 文章标签: 优化 更多分类专栏: OptimizationAlgorithm 本文翻译自SebastianRuder的“Anoverviewofgradientdescentoptimizationalgoritms”,作者首先在其博客中发表了这篇文章,其博客地址为:Anoverviewofgradientdescentoptimizationalgoritms,之后,作者将其整理完放在了arxiv中,其地址为:Anoverviewofgradientdescentoptimizationalgoritms,在翻译的过程中以作者发布在Arxiv的论文为主,参考其在博客中的内容。 本文的翻译已经获得作者的同意。 虽然梯度下降优化算法越来越受欢迎,但通常作为黑盒优化器使用,因此很难对其优点和缺点的进行实际的解释。本文旨在让读者对不同的算法有直观的认识,以帮助读者使用这些算法。在本综述中,我们介绍...

推荐算法基础--相似度计算方法汇总

2017年09月04日15:21:57 Yoangh 阅读数25186更多分类专栏: 推荐算法 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/y990041769/article/details/77837915推荐系统中相似度计算可以说是基础中的基础了,因为基本所有的推荐算法都是在计算相似度,用户相似度或者物品相似度,这里罗列一下各种相似度计算方法和适用点余弦相似度  similarity=cos(θ)=A⋅B∥A∥∥B∥=∑i=1nAi×Bi∑i=1n(Ai)2−−−−−−−√×∑i=1n(Bi)2−−−−−−−√similarity=co...

程序员那些必须掌握的排序算法

2019年08月17日16:03:39 #Temptation 阅读数38529 文章标签: 排序算法 更多分类专栏: 算法 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_42453117/article/details/99680831现在的IT行业并不像以前那么好混了,从业人员过多,导致初级程序员过剩,这也间接导致了公司的招聘门槛越来越高,要求程序员掌握的知识也越来越多。算法也是一个争论了很久的话题,程序员到底该不该掌握算法?不同的人有不同的答案,而事实上,很多公司都对算法有一定的要求,有些公司直接在面试的时候便会要求面试者手写算法题。这就对程序员的技术要求产生了很大的考验,所以面对如今的大环境,我们必须掌握算法,才能在今后的工作中占据一席之地。那么接下来,我就简单介绍一下几个排序算法,希望对你们有所帮助。1.冒泡排序冒泡排序(BubbleSort),是一种较简单的排序算法。它重复...

机器学习算法GBDT的面试要点总结-上篇

 1.简介    gbdt全称梯度提升决策树,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,gbdt在各种竞赛是大放异彩。原因大概有几个,一是效果确实挺不错。二是即可以用于分类也可以用于回归。三是可以筛选特征。这三点实在是太吸引人了,导致在面试的时候大家也非常喜欢问这个算法。 gbdt的面试考核点,大致有下面几个:gbdt的算法的流程?gbdt如何选择特征?gbdt如何构建特征?gbdt如何用于分类?gbdt通过什么方式减少误差?gbdt的效果相比于传统的LR,SVM效果为什么好一些?gbdt如何加速训练?gbdt的参数有哪些,如何调参?gbdt实战当中遇到的一些问题?gbdt的优缺点?2.正式介绍   首先gbdt是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法。 gbdt的训练过程     我们通过一张图片,图片来源来说明gbdt的...

一致性hash算法及java实现

2018年03月28日14:11:38 青鱼入云 阅读数2372更多分类专栏: java 算法 算法 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u011305680/article/details/79721030一致性hash算法是分布式中一个常用且好用的分片算法、或者数据库分库分表算法。现在的互联网服务架构中,为避免单点故障、提升处理效率、横向扩展等原因,分布式系统已经成为了居家旅行必备的部署模式,所以也产出了几种数据分片的方法: 1.取模,2.划段,3.一致性hash 前两种有很大的一个问题就是需要固定的节点数,即节点数不能变,不能某一个节点挂了或者实时增加一个节点,变了分片规则就需要改变,需要迁移的数据也多。 那么一致性hash是怎么解决这个问题的呢? 一致性hash:对节点和数据,都做一次hash运算,然后比较节点和数据的hash值,数据值和节点最...

一致性算法—Paxos、Raft、ZAB

2019年04月21日20:35:09 bulingma 阅读数64更多分类专栏: 分布式概念 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/bulingma/article/details/894388511、分布式系统对faulttolerence的一般解决方案是statemachinereplication(状态机复制)。2、分布式一致性算法的一种更准确的说法应该是:statemachinereplication的共识(consensus)算法。3、pasox其实是一个共识算法。系统的最终一致性,不仅需要达成共识,还会取决于client的行为。4、分布式系统中有多个节点就会存在节点间通信的问题,存在着两种节点通讯模型:共享内存(Sharedmemory)、消息传递(Messagespassing),以下谈到的算法都是基于消息传递的通讯模型的。它的假设前提是,在分布式系统中进程之间的通信会出现丢失、延迟、重复等现象,...

LinkedList实现基于LRU算法的缓存

 2015年08月07日18:18:45 秦江波 阅读数2068 文章标签: java算法linkedlist缓存LRU更多分类专栏: Java 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u011763190/article/details/47343153学过操作系统的人都知道LRU页面切换算法,其实这个算法不仅仅只是能在页面切换中应用到,在缓存中也有很实际的应用。最典型的实现方式是采用LinkedHashMap来实现这个缓存,大家可以在Java源码里面看到这个类的作者关于这个的描述,不过全是英文,但是却明确提到过。下面废话不多说,直接展示我自己关于这个算法实现的代码吧,亲测通过:核心算法代码: packagehk.inso.www.cache;importjava.util.Hashtable;importjava.util.LinkedList;/***Createdby...

Java数据结构之LinkedList、ArrayList的效率分析

前言:   在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实测一下。先了解一下List    List列表类,顺序存储任何对象(顺序不变),可重复。 List是继承于Collection的接口,不能实例化。实例化可以用:ArrayList(实现动态数组),查询快(随意访问或顺序访问),增删慢。整体清空快,线程不同步(非线程安全)。数组长度是可变的百分之五十延长LinkedList实现链表),查询慢,增删快。Vector(实现动态数组),都慢,被ArrayList替代。长度任意延长。线程安全(同步的类,函数都是synchronized)Stack(实现堆栈)继承于Vector,先进后出。  List基本操作插入:add()查找:get()删除:remove(intindex)修改:set()清空表:clear()遍历:用Iterator迭代器遍历...

LeetCode All in One 题目讲解汇总(持续更新中...)

  终于将LeetCode的大部分题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 对应的 Github项目的同步地址如下,欢迎大家关注点赞❤️https://github.com/grandyang/leetcode如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊(如果不方便注册博客园的话,可以下载下文提到的APP,在Feedback中给博主发邮件交流哈),同时也请大家踊跃地,大量地,盲目地提供各个题目的followup一起讨论哈,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来~博主制作了一款iOS的应用"LeetcodeMeetMe",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能看啊,相当方便,而且无网状态下也能看哦~目前只支持iPhone和iPad,直接在AppStore搜"LeetcodeMeetMe"就可以找到,关于本app有任何的fe...

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

2018年06月02日00:54:51 chenhuyang 阅读数51895 版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639一、LVS简介    LVS(LinuxVirtualServer)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,...

Java高级程序员(5年左右)面试的题目集

2017年06月23日11:27:51 fangqun663775 阅读数48289更多分类专栏: java面试常见题  时隔两年,再一次的面临离职找工作,这一次换工作有些许的不舍,也有些许的无奈。个人所在的技术团队不错,两年时间成长了很多,也很不舍这个团队。但是,由于公司的某些原因和对于自身未来发展的综合考虑,又不得不得离去,去寻找更合适的地方成长和发展。相比于两年前,现在找工作没有那么的着急,也没有那么的迫切,也没有特别想去的公司,反正去大厂互联网公司基本都是加班加点的。也许,这是工作三年的我即将面临的一个坎吧。对于未来的选择和考虑,对于未来的恐惧吧。也许我是杞人忧天,也许是上天注定我将去某一家公司,不管怎样,坚持做最好的自己!不停进步,不停成长!    下面将最近面试遇到的一些题目进行汇总如下,希望对现在正在找工作的同学和现在面临毕业找工作的同学有所帮助。单例模式:懒汉式、饿汉式、双重校验锁、静态加载,内部类加载、枚举类加载。保证一个类仅有一个实例,并提供一个访问它的全局访问点。代理模式:动...

图解排序算法(二)之希尔排序

   希尔排序是希尔(DonaldShell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。  希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。  简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为1。希尔排序通过这种策略使得整个数组在初始阶段达到从宏观上看基本有序,小的基本在前,大的基本在后。然后缩小增量,到增量为1时,其实多数情况下只需微调即可,不会涉及过多的数据移动。  我们来看下希尔...
代码星球 代码星球·2020-04-03
首页上一页...127128129130131...下一页尾页