![](https://img-blog.csdnimg.cn/20190829102439737.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法 Algorithm
文章平均质量分 95
是杰夫呀
记录学习的点点滴滴。
展开
-
Python 实现求众数的三种方法
给定一个长度为 n 的数组,返回众数。众数:是指数组中出现次数超过 n/2 次的元素。假设数组非空,众数一定存在。Example 1:Input: [3,2,3]Output: 3Example 2:Input: [2,2,1,1,1,2,2]Output: 21:字典,累记数组中出现的各元素的次数,一旦发现超过 n/2 次的元素就返回该元素def majorityElement(self, nums): """ :type num...原创 2020-07-20 14:34:51 · 13686 阅读 · 9 评论 -
唯一ID生成算法剖析
引在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识;商品需要唯一标识;消息需要唯一标识;事件需要唯一标识…等等,都需要全局唯一ID,尤其是分布式场景下。唯一ID有哪些特性或者说要求呢?按照我的分析有以下特性: 唯一性:生成的ID全局唯一,在特定范围内冲突概率极小 有序性:生成的ID按某种规则有序,便于数据库插入及排序 可用性:可保证高并发下的可用性 自主性:分布式环境下不依赖中心认证即可自行生成ID 安全性:不暴露系统和业务的信息.原创 2020-07-17 11:27:29 · 651 阅读 · 0 评论 -
生成模型与判别模型
从概率分布的角度考虑,对于一堆样本数据,每个均有特征对应分类标记 。生成模型:学习得到联合概率分布 P(x,y),即特征 x 和标记 y 共同出现的概率,然后求条件概率分布。能够学习到数据生成的机制。判别模型:学习得到条件概率分布 P(y|x),即在特征 x 出现的情况下标记 y 出现的概率。数据要求:生成模型需要的数据量比较大,能够较好地估计概率密度;而判别模型对数据样本量的要求没有那么多。两者的优缺点如下图,摘自知乎生成模型:以统计学和 Bayes 作为理论基...原创 2020-07-13 10:44:32 · 256 阅读 · 0 评论 -
机器学习中距离和相似性度量方法
在机器学习和数据挖掘中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如 K 最近邻(KNN)和 K 均值(K-Means)等等。根据数据特性的不同,可以采用不同的度量方法。一般而言,定义一个距离函数 d(x,y), 需要满足下面几个准则:d(x,x) = 0 ...原创 2019-11-24 15:39:16 · 1645 阅读 · 0 评论 -
既然神经网络可以解决分类问题,那SVM、决策树这些算法还有什么意义呢?
先说结论:没有一个模型是万能的,需要根据数据选择适合的模型。在机器学习中,数据大概可以分成四大类:图像 (Image),序列(Sequence),图(Graph) 和表格(Tabular) 数据。其中,前3类数据有比较明显的模式,比如图像和图的空间局部性,序列的上下文关系和时序依赖等。而表格数据常见于各种工业界的任务,如广告点击率预测,推荐系统等。在表格数据中,每个特征表示一个属性,如性别...原创 2019-10-23 10:07:36 · 2193 阅读 · 0 评论 -
五大常用算法 | 分支限界法
一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。(1)分支搜索算法 所谓“分支”就是采用广度优先的策略,依次搜索...原创 2019-10-09 19:42:26 · 384 阅读 · 0 评论 -
五大常用算法 | 回溯法
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的...原创 2019-10-09 19:40:06 · 376 阅读 · 0 评论 -
五大常用算法 | 动态规划算法
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通...原创 2019-10-09 12:32:57 · 549 阅读 · 0 评论 -
五大常用算法 | 分治算法
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其...原创 2019-10-08 18:47:17 · 188 阅读 · 0 评论 -
信息熵的取值范围计算证明过程
最大值(方法1,拉格朗日函数):最大值(方法2,从二分开始计算导数):最小值原创 2019-10-03 14:15:24 · 9993 阅读 · 1 评论 -
五大常用算法 | 贪心算法
贪心算法一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。...原创 2019-09-23 20:50:10 · 1213 阅读 · 0 评论 -
模型融合在kaggle比赛中的几种常见应用
目录1.群众的力量是伟大的 — 集体智慧1)Voting投票器2)Averaging3)Bagging3)随机森林(Random forest)2.站在巨人的肩膀上 — 层叠式递进1)Blending2)Stacking3.一万个小时定律 — 熟能生巧Boosting总结近年来,随着人工智能、机器学习的快速发展,大数据类的机器学习竞赛越来越多...原创 2019-08-05 16:39:41 · 2480 阅读 · 0 评论 -
算法中如何选择合适的「回归损失函数」
机器学习中的所有算法都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型预测期望结果表现的指标。寻找函数最小值的最常用方法是“梯度下降”。把损失函数想象成起伏的山脉,梯度下降就像从山顶滑下,目的是到达山脉的最低点。没有一个损失函数可以适用于所有类型的数据。损失函数的选择取决于许多因素,包括是否有离群点,机器学习算法的选择,运行梯度...原创 2019-08-11 00:07:11 · 1973 阅读 · 0 评论 -
深度学习黑盒的解释性的理论工具
深度学习是目前人工智能最受关注的领域,也是这一轮人工智能兴起的原因。与此同时,这一技术具有不可解释等特性也使得一些观点认为深度学习已经面临瓶颈。7 月 25 日,美国四大国家学院 (国家科学院、国家医学院、国家工程院、国家艺术与科学学院) 院士,美国 “脑计划” 项目领军人物的特伦斯 · 谢诺夫斯基在接受经济观察网采访时表示目前美国数学界已经有了相应的理论工具用来实现深度学习黑盒的可解释性,尽...原创 2019-08-12 00:08:32 · 3057 阅读 · 0 评论 -
机器学习中如何对模型进行选择、评估、优化
目录1 概念介绍1.1 过拟合和欠拟合1.2 偏差和方差1.3 查准率和查全率2 模型选择3 模型评估3.1 拟合状态与样本规模3.2 拟合状态与正则化项3.3 拟合状态和模型复杂性4 模型优化对于一个模型而言,我们也有很多模型参数需要人工选择,本文将对模型的评估选择和优化进行详细介绍。1 概念介绍1.1 过拟合和欠拟合在机器学习中,我们...原创 2019-08-16 13:00:55 · 4483 阅读 · 0 评论 -
二叉查找树快速理解的4张图
二叉查找树(Binary Search Tree),也称二叉搜索树,是指一棵空树或者具有下列性质的二叉树: 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点。 二叉查找树相比于其他数据结构的优势在于查找、插入...原创 2019-08-17 23:05:48 · 779 阅读 · 1 评论 -
算法工程师必备的面试技能雷达图
虽然每个一个岗位都有JD,但抛开具体的岗位要求,从稍高的角度角度看待这个问题,一名算法工程师的技术素质基本可以拆解成下面四个方面:知识、工具、逻辑、业务。当然广义来讲,这四项素质也适用于所有IT工程师。我非常喜欢用雷达图来表示一个人的能力范围,可能小时候看圣斗士看多了,当时研究官方出的黄金圣斗士能力雷达图研究了半天,现在也没好到哪去,只不过变成了喜欢研究候选人的能力雷达图了。。下面画出了大数据...原创 2019-09-09 22:23:46 · 1232 阅读 · 0 评论 -
bagging减少方差variance,boosting减少偏差bias
1variance和bias准:bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。要想在bias上表现好,low bias,就得复杂化模型,增加模型的参数,但这样容易过拟合 (overfitting),过拟合对应上图是high variance,点很分散。low bias对应就是点都打在靶心附近,所以瞄的是准的,但手不一定稳。...原创 2019-09-17 15:30:43 · 2286 阅读 · 5 评论 -
Parameter Server 分布式机器学习训练原理 一文读懂
上篇文章对 Spark MLlib 的并行训练方法做了详细的介绍(https://blog.csdn.net/sinat_26811377/article/details/100763590),如文章所说,Spark 采取了简单直观的数据并行的方法解决模型并行训练的问题,但由于Spark 的并行梯度下降方法是同步阻断式的,且模型参数需通过全局广播的形式发送到各节点,因此 Spark 的并行梯度下...原创 2019-09-17 16:07:04 · 1581 阅读 · 0 评论 -
稳定排序与不稳定排序方法的分类和总结
排序算法的稳定性是指排序前 2 个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。简单来说就是,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果...原创 2019-09-21 14:27:59 · 7879 阅读 · 1 评论 -
判断一个数是否为质数(素数)的4种方法
目录1.什么是质数?2.如何判断是否为质数?方法1方法2方法3方法41.什么是质数?首先来看质数的概念:质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。(也可定义为只有1与该数本身两个正因数的数)图1 数字12不是质数,而数字11是质数如上图所示,数字12可以将每4个分成一组,...原创 2019-07-20 15:38:30 · 178994 阅读 · 34 评论