算法
define_us
互联网编程/架构设计/数学崇拜
展开
-
推荐召回算法之双塔模型
推荐原创 2022-12-15 16:53:21 · 340 阅读 · 0 评论 -
KNN算法
KNN是一种memory-based learning,也叫instance-based learning,属于lazy learning。即它没有明显的前期训练过程,而是程序开始运行时,把数据集加载到内存后,不需要进行训练,就可以开始分类了。 ...原创 2018-04-02 19:40:24 · 220 阅读 · 0 评论 -
决策树
相关概念熵: 熵是表示随机变量不确定性的度量,熵越大,随机变量不确定性也就越大信息增益:信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差信息增益比基尼不纯度。例如 一个随机事件X ,P(X=0) = 0.5 ,P(X=1)=0.5,那么基尼不纯度就为...原创 2018-04-02 20:03:52 · 136 阅读 · 0 评论 -
logistic回归
概述明明叫做回归,却被用在了分类问题上。logistic方法主要应用于研究某些事件发生的概率。 logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释,多类可以使用softmax方法进行处理。实际中最为常用的就是二分类的logistic回归。原理线性回归模型产生的预测值为z=wx+b是一个连续值,如果我们要将它应用于一个而分类问题,需要...原创 2018-04-03 10:42:17 · 147 阅读 · 0 评论 -
朴素贝叶斯(Naive Bayes)
它是机器学习一个特别质朴而深刻的模型:当你要根据多个特征而非一个特征对数据进行分类的时候,我们可以假设这些特征相互独立(或者你先假设相互独立),然后利用条件概率乘法法则得到每一个分类的概率, 然后选择概率最大的那个作为机器的判定。贝叶斯公式如果AB都只有发生不发生两种状态,那么贝叶斯公式如下。其中P(B)表示B事件发生的概率。 如果A,B两个事件独立(两个事件A和B是独立的当且仅当P...原创 2018-04-03 13:46:44 · 145 阅读 · 0 评论 -
Adaboost
概述AdaBoost算法是基于Boosting思想的机器学习算法(GBDT也是基于该思想),其中AdaBoost是Adaptive Boosting的缩写,AdaBoost是一种迭代型的算法,其核心思想是针对同一个训练集训练不同的学习算法,即弱学习算法,然后将这些弱学习算法集合起来,构造一个更强的最终学习算法。 算法的大致过程如下:先通过对N个训练样本的学习得到第一个弱分类器;将分错...原创 2018-04-03 13:56:08 · 152 阅读 · 0 评论 -
蓄水池采样法
转载自https://blog.csdn.net/dm_ustc/article/details/45875971在数据流处理中的一个常见问题就是数据采样问题。我们希望从流中选择一个子集,以便能够对它进行查询并给出统计性上对整个流具有代表性的结果。蓄水池采样具体问题是我们要从数据流中随机抽取k个元素。如果数据流长度m事先已经知道,那这个问题就非常简单,每个元素以k/m的概率选取即可...转载 2018-04-03 14:47:33 · 485 阅读 · 0 评论 -
隐马尔可夫模型
强烈推荐https://www.zhihu.com/question/20962240原创 2018-04-04 10:51:57 · 111 阅读 · 0 评论 -
KMP算法
参考文献:https://blog.csdn.net/starstar1992/article/details/54913261字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置。 KMP算法可以实现复杂度为O(m+n)。一般匹配字符串时,我们从目标字符串str(假设长度为n)的第一个下标选取和ptr长度(长度为m)一样的子字符串进行比较...原创 2018-03-29 09:55:34 · 151 阅读 · 0 评论 -
数据结构之图
存储结构邻接矩阵邻接矩阵适合于点少边多的图,而对于边少的图,可以考虑用邻接表。临接表图的遍历深度优先遍历的方法如下。类似于树的前序遍历。同样可以采用递归实现。a) 假设初始状态是图中所有顶点都未曾访问过,则可从图G中任意一顶点v为初始出发点,首先访问出发点v,并将其标记为已访问过。 b) 然后依次从v出发搜索v的每个邻接点w,若w未曾访问过,则以w作为新的...原创 2018-07-02 16:36:06 · 120 阅读 · 0 评论 -
数据结构之跳表(SkipList)
参考文献https://www.jianshu.com/p/fcd18946994e简单介绍跳表是一种随机化的数据结构跳表具有如下性质:由很多层结构组成每一层都是一个有序的链表最底层(Level 1)的链表包含所有元素如果一个元素出现在 Level i 的链表中,则它在 Level i 之下的链表也都会出现。每个节点包含两个指针,一个指向同一链表中的下一个元素,一个指向下面一...原创 2018-12-06 10:52:57 · 224 阅读 · 0 评论 -
常见数据结构的简单总结
数组直接下标数组 如JAVA中的ArrayListHash值Mod为下标 如JAVA中的HashMap链表单项链表双向链表 如JAVA中LinkedListSkip List 跳跃表,可快速查找词语,在lucene、redis、Hbase等均有实现。相对于TreeMap等结构,特别适合高并发场景(Skip List介绍)栈队列树Ternary Search Tree ...原创 2018-12-06 17:18:38 · 195 阅读 · 0 评论 -
动态规划练习题
题目内容Given exact k steps, how many ways to move a point from start point to destination? Point can move for eight directions(horizontally, vertically, diagonally, anti-diagonally).答案public class Te...原创 2019-01-08 10:11:40 · 227 阅读 · 0 评论 -
伸展树和Treap树
伸展树伸展树(英语:Splay Tree)是一种能够自我平衡的二叉查找树,它能在均摊O(log n)的时间内完成基于伸展(Splay)操作的插入、查找、修改和删除操作。它是由丹尼尔·斯立特(Daniel Sleator)和罗伯特·塔扬在1985年发明的。伸展树假设想要对一个二叉查找树执行一系列的查找操作,为了使整个查找时间更小,被查频率高的那些条目就应当经常处于靠近树根的位置。于是想到设计一个简...原创 2019-01-21 15:24:20 · 381 阅读 · 0 评论 -
各种堆——二叉堆,d堆,左式堆,斜堆,二项队列,斐波那契堆
二叉堆二叉堆就是一个完全二叉树。几乎在所有需要用到优先队列的时候,使用它就完事了。D-堆D堆就是一个完全d叉树。所以,d堆会比二叉堆浅的多。左式堆Clark Allan Crane,1972年发明。叫这个名字地原因就是这个树左边比右边高。零路径长:从节点X到一个没有两个子节点的(有一个子节点或没有子节点)节点的最短距离左式堆首先是一个二叉查找树。附加一个条件要求任一节点的左子节点...原创 2019-01-21 15:51:51 · 1220 阅读 · 1 评论 -
TimingWheel[时间轮]
参考文献https://blog.csdn.net/zhanglh046/article/details/72833172概述在远古时代,我们的定时任务都是使用java.util.Timer来实现的。对于单独的一个Timer,只有一个执行线程。所有任务都保存到一个优先队列里。利用JUC中的线程池实现定时任务或者延迟任务也是基于这个原理。但是时间轮是一个更好的方式原理时间格:环形结构...原创 2019-02-13 17:53:55 · 393 阅读 · 0 评论 -
机器学习历史
概率论时期贝叶斯公式原创 2019-02-26 17:08:07 · 146 阅读 · 0 评论 -
牛顿迭代法
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛。设相邻两个迭代点:x_(k+1), x_{k}, 最优值点 x*,若存在实数 q>0,满足:牛顿迭代法迭代法最常见的应用是求取平方根class Solution { public int mySqrt(int x){ ...原创 2018-03-27 14:50:34 · 365 阅读 · 0 评论 -
统计学
协方差:用于刻画两组样本的相关性。越大相关性越大。PCA:主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。马尔可夫性是指一个随机过程未来发展的概率规律与观察之前的历史无关的性质。马尔可夫性又可简单叙述为状态转移概率的无后效性...原创 2018-03-26 14:27:21 · 304 阅读 · 0 评论 -
KDTree算法
参考文献https://blog.csdn.net/xiongjinshui/article/details/8103557最近临点问题在空间上给出一个点,求解距离该点最近的点。首先通过二叉树搜索(比较待查询节点和分裂节点的分裂维的值,小于等于就进入左子树分支,等于就进入右子树分支直到叶子结点),顺着“搜索路径”很快能找到最近邻的近似点,也就是与待查询点处于同一个子空间的叶子结点...原创 2018-04-08 17:29:39 · 981 阅读 · 0 评论 -
DBSCAN算法
0.概述DBSCAN(density-based spatial clustering of applications with Noise),与划分和层次聚类的方法不同,它将簇定义为密度相连的最大点的集合,能够把具有足够高密度的区域划分为簇,并可以在有噪声的的空间数据中发现任意形状的簇。和KMEANS算法不同,该算法不用提前指定分类的数目。1.相关概念E临域 :给定对象周围半径为E内区域 核心对原创 2016-12-29 12:53:19 · 721 阅读 · 0 评论 -
随机森林参数调整
资料 https://www.zhihu.com/question/38958781/answer/101915539 作者:董老二随机森林先假设我们有N个样本,M个特征,那么在这种情况下我们是如何构建随机森林的:a.构建一棵树,我们利用自助法(bootstrap)从N个样本中选取N个样本,需要注意的是,这N个样本是大概率会有重复的,选取的这N个样本就是根节点待分裂的样本;b.在每个待分裂节原创 2017-10-10 19:40:08 · 5966 阅读 · 1 评论 -
背包问题
基础背包问题有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 基础背包问题的最大特征就是只能选择放和不放,同一个物品只有一件。所以也被称为0/1背包问题完全背包问题有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。将哪些物品装入背包可使这些物品的体积总和不超原创 2017-11-06 21:12:08 · 375 阅读 · 0 评论 -
八大排序算法
插入排序包括直接插入排序和希尔排序直接插入排序将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。希尔排序选择排序包括直接选择排序和堆排序直接选择排序在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。堆排序交换排序包括冒原创 2017-11-06 21:07:51 · 154 阅读 · 0 评论 -
二叉树,B-树,B+树,红黑树,LSM树,AVL树,堆
二叉树的概念在计算机领域,二叉树是每个节点最多有两个子树的结构。通常子树被称为左子树和右子树。二叉树的特例:满二叉树 满二叉树是完全二叉树的特例。所有叶节点必须在同一层上除了叶子节点的所有节点都有两个子节点完全二叉树 完全二叉树可以看成是满二叉树的最后一行右侧部分连续缺失平衡二叉树对于任何一个节点,左树和右树的绝对值差不超过1二叉树遍历以如下例...原创 2016-08-02 20:36:04 · 701 阅读 · 0 评论 -
GBDT
参考https://www.cnblogs.com/DjangoBlog/p/6201663.html https://www.jianshu.com/p/005a4e6ac775GBDT简介决策树分为两大类,回归树和分类树。前者用于预测实数值,如明天的温度、用户的年龄、网页的相关程度;后者用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面。这里要强调的是,前者的...原创 2018-01-23 18:30:34 · 1148 阅读 · 0 评论 -
算法:贪心
贪心算法将问题分解为一个个子问题。贪心算法的最大条件就是每个子问题求出最优解,就一定能得到最终问题的最优解。毫无疑问,最重要的就是如果将问题分解为这样的子问题。背包问题背包问题是典型的动态规划问题!是不能使用贪心算法的!然而我们考虑这样一种背包问题:在选择物品i装入背包时,可以选择物品的一部分,而不一定要全部装入背包。这时便可以使用贪心算法求解了。和生活中的规律一样,我们只需要选取性价...原创 2018-02-09 11:28:37 · 129 阅读 · 0 评论 -
算法概念:P-NP-NPC
P类问题这类问题是最简单的一类问题,即所有这类问题都可以用一个确定性算法在多项式时间内求出解。此类问题的复杂度是此类问题的一个实例的规模n的多项式函数。比如排序问题,求最短路径问题等。 简单来说,P就是能在多项式时间内解决的问题NP(Non-deterministic Polynomial,即多项式复杂程度的非确定性问题)问题有些问题很难找到多项式时间的解法(也许根本就不存在),...原创 2018-02-09 16:47:12 · 984 阅读 · 0 评论 -
随机数算法
如何获取随机数采用线性同余算法获取随机数。a(0)=d称为种子,a(n)=(ba(n-1)+c)mod m b经常取质数,m越大越好。为了避免每次的随机数序列产生的都相同,一般采用当前时间为种子。随机算法的用途随机算法主要被用于快速计算定积分中,同样可以用于计算圆周率。两大赌城算法:下面这两种算法都不是具体算法,而是指出了一些算法的抽象特征。LasVegas算法:不断产生随机数,试图得到正确结果,原创 2018-02-06 10:59:20 · 1984 阅读 · 0 评论 -
算法:堆和优先队列
堆是一个满足一定性质的二叉树。大顶堆的意思是父节点的值总是不小于子节点的值,小顶堆则正好相反。对于任何序列,建堆的时间复杂度为o(n)。堆的底层可以直接使用数组实现。堆的操作堆的插入堆的删除堆只支持删除跟节点的元素。将最后一个跟节点和最后一个元素交换,然后删除最后一个元素,然后数据下沉依次调整。应用:堆排序参考排序应用:优先队列...原创 2018-02-07 16:36:11 · 195 阅读 · 0 评论 -
算法:动态规划
动态规划解决问题的步骤(1)将原问题分解为子问题把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决(数字三角形例)子问题的解一旦求出就会被保存,所以每个子问题只需求 解一次。(2)能用动规解决的问题的特点1) 问题具有最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性...原创 2017-11-07 15:00:46 · 153 阅读 · 1 评论 -
机器学习(1):基本概念
机器学习发展简史神经网络技术起源与上世纪50年代。当时叫做感知机。拥有输入层,输出层和一个隐含层。这种感知机被称为单层感知机1959, 机器学习被定义为不直接编程的情况下赋予计算机学习能力。1974年哈佛大学的Paul Werbos发明BP算法。BP算法正是用来求解这种多层复合函数的所有变量的偏导数的利器。上世纪八十年代人类发明了多层感知机(指包含多个隐含层)。在训练算法上使用BP...原创 2016-07-13 16:40:29 · 504 阅读 · 0 评论 -
卷积神经网络
一个例子的网址 http://scs.ryerson.ca/~aharley/vis/conv/ 输入层 -> 卷积层 ->池化层 ->卷积层 ->池化层 -> 全连接层1 -> 全连接层2 ->输出层卷积层:用它来进行特征提取池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征...原创 2018-03-01 16:38:23 · 175 阅读 · 0 评论 -
两个轨迹相似性的各种方法
针对时间序列轨迹Fréchet distanceFréchet distance就是狗绳距离:主人走路径A,狗走路径B,各自走完这两条路径过程中所需要的最短狗绳长度。 DTW在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。因为语音信号具有相当大的随机性,即使同一个人在不同时刻发同一个音,也不可能具有完全的时间长度。 D...原创 2018-03-30 15:39:46 · 11607 阅读 · 0 评论 -
K-Means聚类算法
参考文献https://blog.csdn.net/u011204487/article/details/59624571K-Means聚类算法步骤优点解决聚类问题的一种经典算法,简单、快速对处理大数据集,该算法保持可伸缩性和高效性当簇接近高斯分布时,它的效果较好。缺点在簇的平均值可被定义的情况下才能使用在 K-means 算法中 K 是事先给定的,这个...转载 2018-03-30 15:45:35 · 178 阅读 · 0 评论 -
分治算法
归并排序分解:将要排序的n个元素的序列分解成两个具有n/2个元素的子序列; 解决:使用归并排序分别递归地排序两个子序列; 合并:合并两个已排序的子序列,产生原问题的解。无序数组的中位数(TopK)任意挑一个元素,以该元素为支点,将数组分成两部分,左部分是小于等于支点的,右部分是大于支点的。如果你的运气爆棚,左部分正好是(n-1)/2个元素,那么支点的那个数就是中位数。否则的...原创 2018-04-08 10:21:47 · 125 阅读 · 0 评论 -
轨迹相似度度量
0.轨迹相似度问题有四种方法可以度量轨迹相似度: (1)LCSS,longest comon subsequence (2)Frechet distance (3)DTW,dynamic time warping (4)edit distance 轨迹TA,包含若干个(t,a)点。其中,a为位置点,t为时间戳。 1.Frechet distance有一个简单的理解。人牵着一条狗,人走在一原创 2016-12-28 21:00:11 · 23158 阅读 · 2 评论