白景屹-算法栈
文章平均质量分 82
线性规划,非线性规划,动态规划,贪心算法与一些其他算法
tzc_fly
2017-2021:华中科技大学本科,2021-至今:中山大学博士
展开
-
假设检验的基本思想
首先了解参数估计,比如有服从正态分布的数据集X∼Nμσ2,我们希望根据样本x1...xn估计出参数μσ,这些参数可以是一个具体值,也可以是一个范围(即一个区间)。X∼Nμσ2μσμμ0σσ0x1...xnμμ0总之,假设检验的目的是根据样本判断假设是否成立。H0μμ0H1μμ0如果根据样本检验后发现,原假设不成立,备择假设成立,则称x1...xn∈K0。原创 2023-02-23 15:10:44 · 676 阅读 · 0 评论 -
群智能算法-粒子群算法
目录PSO简介基本PSO算法(单目标)MOPSO(多目标PSO)paretoMOPSOPSO简介粒子群优化(particle swarm optimazation,PSO)是美国普渡大学的两位学者受到鸟类群体行为的启发,在1995年提出的一种仿生全局优化算法。PSO将群体中的每个个体看作nnn维搜索空间中一个没有体积,没有质量的粒子,在搜索空间中以一定速度飞行,通过群体中粒子间的合作与竞争得到最优解。粒子群算法在nnn维连续空间中搜索,对粒子群中的第iii(i=1,2,...,mi=1,2,...,m原创 2022-05-30 17:13:41 · 775 阅读 · 1 评论 -
其他算法-建立在流形上的降维UMAP
目录前置内容UMAP步骤学习流形结构寻找流形的低维表示过去流行使用t-SNE,但其存在问题:tSNE不能适用大的样本量。如果使用t-SNE加速计算,也会导致内存消耗大,从而只能在计算机集群上进行分析;tSNE并没有保留全局结构。也就是说只有簇内的距离才有意义,而簇间的相似性却无法保证;因此人们普遍认为,在tSNE上进行聚类并不是一个很好的主意;tSNE实际上只能嵌入到2维或3维中,即只能用于可视化的目的,所以很难将tSNE作为一般的降维技术;tSNE不能直接处理高维数据,通常使用Autoenco原创 2022-05-27 13:58:01 · 790 阅读 · 0 评论 -
其他算法-ARIMA时序分析
目录数据平稳性与差分ARIMA模型相关性函数参数p,d,q的确定与模型检验ARIMA模型建模的基本条件是要求待预测的数列满足平稳的条件,即个体值要围绕序列均值上下波动,不能有明显的上升或下降趋势,如果出现上升或下降趋势,需要对原始序列进行差分平稳化处理。数据平稳性与差分平稳性就是要求经由样本时间序列所得到的拟合曲线,在未来的一段期间内仍然能顺着现有的形态"惯性"地延续下去。平稳性要求序列的均值和方差不随时间发生明显变化。严平稳:表示随机变量的分布不随时间的改变而改变,比如:白噪声(正态),无论怎么原创 2022-02-03 23:47:34 · 2801 阅读 · 0 评论 -
其他算法-层次聚类
层次聚类(Hierarchical Clustering)通过计算不同类别数据之间的相似度,创建一棵有层次的树,层次聚类不需要指定具体类别,聚类结束后,可以在任意层次横切一刀,得到指定数目的簇;层次聚类一般分为两类:自下而上的凝聚方法(agglomerative:先将所有样本的每个点都看成一个簇,然后找出距离最小的两个簇进行合并,不断重复到预期簇或者其他终止条件),凝聚方法的代表算法:AGNES,Agglomerative Nesting;自顶向下的分裂方法(divisive:先将所有样本当作一整原创 2021-10-10 13:13:52 · 334 阅读 · 0 评论 -
其他算法-QSAR
QSAR(Quantitative Structure-Activity Relationship)也被称为定量构效关系,这是目前生物化学领域常用的一个计算模式,在了解QSAR前,先了解SAR(Structure-Activity Relationship);SAR为构效关系,指的是分子的结构和性质之间的关系。即相似结构的分子具有相似的性质,可以找到一个映射关系:fSAR:Structure→Activityf_{\textbf{SAR}}:Structure\rightarrow ActivityfSA原创 2021-10-06 11:05:24 · 1335 阅读 · 0 评论 -
其他算法-比例风险回归模型
比例风险回归模型(Proportional hazards model),又称为Cox模型(一种半参数模型),模型用于描述不随时间变化的多个特征对于在某一时刻死亡率的影响,Cox模型是生存分析中的一个常用模型;首先考虑Cox模型的产生动机,假如我们现在要研究一个人从出生开始,到ttt时刻死亡的概率为多大,直观来看:一方面,受到时间推移影响,一个健康的人,随着年龄增大,死亡的概率也会逐渐增大;另一方面,生存时间会受到一些客观因素的影响,一个吸烟的人在某一时刻ttt死亡的概率,比一个不抽烟的同龄人概率更原创 2021-09-29 01:50:16 · 1055 阅读 · 0 评论 -
其他算法-马氏距离
假设现在有数据集X∈RN×FX\in R^{N\times F}X∈RN×F,而x1,x2∈RFx_{1},x_{2}\in R^{F}x1,x2∈RF为数据集中的两个样本,则x1x_{1}x1与x2x_{2}x2的马氏距离为:DM(x1,x2)=(x1−x2)Σ−1(x1−x2)TD_{M}(x_{1},x_{2})=\sqrt{(x_{1}-x_{2})\Sigma^{-1}(x_{1}-x_{2})^{T}}DM(x1,x2)=(x1−x2)Σ−1(x1−x2)T其中,Σ\Si原创 2021-09-15 17:19:27 · 411 阅读 · 0 评论 -
其他算法-浅谈小波变换
傅里叶变换,拉普拉斯变换,凡是变换,本质都是为了用一种基准化的方式描述信号;比如对一个信号进行傅里叶变换,结果为不同频率正弦波的叠加,这些不同频率的正弦波就是描述信号的基,即傅里叶空间下的坐标系;现在看到傅里叶变换可以描述一个信号,但是思考一下发现,傅里叶变换只能表达频率不随时间变化的信号,注意:此处说的表达是指可以从傅里叶空间返回到时域下;如果面对一个频率随时间变化的信号,比如:可以看出,时域下的信号频率随时间变化,前半部分频率高,后半部分频率低,对信号进行傅里叶变换后,在幅频响应的频率轴上有两个原创 2021-03-31 23:04:26 · 908 阅读 · 0 评论 -
其他算法-Dijkstra
目录连通图Dijkstra简介算法过程连通图图中从一个顶点到达另一顶点,若存在至少一条路径,则称这两个顶点是连通着的。例如下图,虽然 V1 和 V3 没有直接关联,但从 V1 到 V3 存在两条路径,分别是 V1-V2-V3 和 V1-V4-V3,因此称 V1 和 V3 之间是连通的:无向图中,如果任意两个顶点之间都能够连通,则称此无向图为连通图。若无向图不是连通图,但图中存储某个子图符合连通图的性质,则称该子图为连通分量;在一幅有向图中,如果从顶点v有一条有向路径可到达顶点w,则顶点w是从顶点v原创 2021-03-24 16:28:53 · 367 阅读 · 3 评论 -
其他算法-LSH局部敏感度哈希
目录LSH简介LSH算法过程LSH简介LSH全称Locality Sensitive Hashing,即局部敏感度哈希,是一种常用的数据挖掘算法,LSH让海量且高维的数据检索变得高效;普通哈希的目标是避开碰撞,比如Python的dict,Java的HashMap,给一个样本,找一个位置,不同的样本落到不同的位置,只有两个样本相同,才会落到同一位置;而LSH在普通哈希的基础上,弱化了普通哈希避开碰撞的目标,重点是需要保证高维空间相近的样本在低维空间也具有很高的相近概率;先粗略地描述,假设数据为3张图像,原创 2021-03-24 11:00:08 · 2097 阅读 · 0 评论 -
其他算法-非线性降维t-SNE
目录t-SNE流形学习SNE算法原理SNE求解对称SNEt-SNE基于sklearn的t-SNEt-SNE流形学习流形(manifold)是几何中的一个概念,它是高维空间中的几何结构,即空间中的点构成的集合。可以简单的将流形理解成二维空间的曲线,三维空间的曲面以及在更高维空间的推广;流形学习,全称流形学习方法(Manifold Learning),流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。它是从观测到的现象中去寻找事原创 2021-03-22 17:02:10 · 1009 阅读 · 1 评论 -
其他算法-两大随机采样方法简介
对于随机采样算法,在采样不全时,通常不能保证找到最优解,只能尽量找。根据搜索的方式,可以把随机算法分成两类:蒙特卡罗方法(Monte Carlo Simulation):采样越多,越近似最优解;拉斯维加斯方法(Las Vegas):采样越多,越有机会找到最优解;注意蒙特卡罗方法,是一类随机方法的统称,拉斯维加斯方法也一样;举个例子,假如筐里有100个苹果,目标是找最大的苹果,每次只允许闭眼拿1个。于是首先随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个,依次进行;每拿一次苹果,留下的苹果都原创 2021-03-19 15:33:37 · 724 阅读 · 1 评论 -
其他算法-PCA主成分分析
目录主成分分析原理线性变换方差,协方差,协方差矩阵主成分分析PCA计算过程与性质PCA与SVDPCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量主成分分析原理线性变换假设有两个向量,则这两个向量的内积为:(a1,a2,...,an)⋅(b1,b2,...,bn)T=a1b1+a2b2+...+anbn(a_{1},a_{2},...,a_{n})\cdot (b_{1},b_{2},...,b_{n})^原创 2021-03-13 15:06:26 · 339 阅读 · 0 评论 -
其他算法-SVD奇异值分解
目录SVD原理特征值分解EVD奇异值分解SVDSVD的性质基于Numpy的SVD图像压缩奇异值分解即 Singular Value Decomposition,简称SVD,SVD广泛应用于数据分析的降维处理SVD原理特征值分解EVD开始了解SVD前应当先了解特征值(本征值)分解,特征值分解 Eigen Value Decomposition,简称EVD;首先回顾特征值和特征向量,对于 Ax=λxAx=\lambda xAx=λx,AAA是一个n×nn\times nn×n的矩阵,xxx是一个nnn原创 2021-03-11 16:01:28 · 330 阅读 · 0 评论 -
其他算法-高斯混合模型
目录高斯模型单高斯模型高斯混合模型高斯模型单高斯模型当样本数据 x∈Rx\in\mathbb{R}x∈R 是一维时,高斯分布服从以下概率密度函数:P(x∣θ)=12πσ2exp(−(x−μ)22σ2)P(x|\theta)=\frac{1}{\sqrt{2\pi\sigma^{2}}}exp(-\frac{(x-\mu)^{2}}{2\sigma^{2}})P(x∣θ)=2πσ21exp(−2σ2(x−μ)2)其中,μ\muμ为数据均值(期望),σ\sigmaσ为数据标准差;当样本数据 x原创 2021-03-09 19:36:30 · 544 阅读 · 0 评论 -
非线性规划-三种常见参数估计算法及联系
目录牛顿法迭代梯度下降极大似然EM算法在机器学习的参数估计(学习)中,常见三种更新方法:梯度下降,极大似然,EM算法;它们的本质目的均是让模型更好地拟合目标分布;在学习三种算法的联系前,需要先了解牛顿法;牛顿法迭代先从经典的牛顿法开始,给定一个复杂的非线性函数 f(x)f(x)f(x),希望获得其最小值;在高中的数学课上,我们会假设其是光滑的,那么最小值应属于极小值点,极小值处满足 f′(x)=0f'(x)=0f′(x)=0,此时,求解方程的根就能获得最小值。进入大学后,认识到了泰勒公式,基于泰勒公原创 2021-03-09 15:58:39 · 3049 阅读 · 1 评论 -
其他算法-不动点迭代
不动点迭代不动点迭代法(Fixed Point Iteration)又叫简单迭代法,对于一个非线性方程 f(x)=0f(x)=0f(x)=0 将其转换成以下形式:x=φ(x)x=\varphi (x)x=φ(x)假设 φ(x)\varphi (x)φ(x) 是一个连续函数(φ(x)\varphi (x)φ(x)被称为迭代函数),任取一个初始值 x0x_{0}x0 代入上式右端,得到:x1=φ(x0)x_{1}=\varphi (x_{0})x1=φ(x0)并依次迭代计算:x2=φ(x1),原创 2021-03-07 21:54:27 · 3675 阅读 · 0 评论 -
其他算法-高斯白噪声
定义首先,明白一阶矩是随机变量的期望,二阶矩是随机变量平方的期望,(二阶中心距是随机变量与期望差的平方的期望,即方差);自相关系数功率谱横坐标为频率,纵坐标为功率;白噪声信号的功率谱等于常数,其对应的随机过程称为白噪声,功率谱为常数意味着噪声在任何频率上都具有服从均匀分布的能量;白噪声的一阶矩是常数,任何滞后的自相关系数均为0:R0=R1=...Rn=0R_{0}=R_{1}=...R_{n}=0R0=R1=...Rn=0高斯白噪声信号的幅度服从正态分布;Matlab生成高斯原创 2020-12-19 16:58:25 · 2031 阅读 · 1 评论 -
其他算法-卡尔曼滤波器
卡尔曼滤波器以Rudolf Kalman命名,是一种优化估算算法,用于存在测量误差情况下预测参数,广泛用于控制科学,计算机视觉,信号处理等领域。目录状态观测器卡尔曼滤波算法的原理状态观测器航天器从地球前往火星,需要时刻监测反应室的温度,如果温度过高不采取措施会导致其他设备出现故障,然而不能直接把温度传感器放置在反应室内,必须放在反应室外部的低温表面测量温度;根据热传导的理论,可以联想到以下数学模型,输入量是燃油流量WfuelW_{fuel}Wfuel,中间状态是反应室温度TinT_{in}Tin原创 2020-12-18 14:55:30 · 418 阅读 · 0 评论 -
其他算法-DFS
DFS和BFS有所联系,BFS是广度优先搜索,DFS则是深度优先搜索;BFS可以借助队列实现,DFS则依靠堆栈实现BFS回顾:其他算法-BFSDFS目录堆栈堆栈的定义堆栈的操作堆栈的实现DFS算法算法举例算法流程DFS应用-二叉树遍历DFS与BFS的比较扩展:DFS计算强连通分量强连通分量无向图连通分量的计算Kosaraju算法举例堆栈堆栈的定义堆栈(stack)简称栈,是一种基本的数据结构,具有先进后出的特点:FILO-First In Last Out,换句话说,只有栈顶元素可见;举个例原创 2020-12-04 15:16:36 · 566 阅读 · 0 评论 -
动态规划(二)
目录整数01背包问题分析暴力递归用动态规划改进类似问题coin change整数01背包问题用背包去装载物品,背包容量为W,一共n件物品,第i个物品价值为viv_{i}vi,重wiw_{i}wi,目标:找到xix_{i}xi使得所有xi=(0,1)x_{i}=(0,1)xi=(0,1),即:max∑i=1nvixi,∑i=1nwixi⩽Wmax\sum_{i=1}^{n}v_{i}x_{i},\sum_{i=1}^{n}w_{i}x_{i}\leqslant Wmaxi=1∑nvixi,原创 2020-11-23 11:49:50 · 404 阅读 · 2 评论 -
其他算法-FFT
FFT目录FFT算法复数单位根单位根的3个引理多项式多项式加法多项式乘法多项式的表示DFT离散傅里叶变换IDFT离散傅里叶逆变换FFT快速傅里叶变换证明FFT的应用FFT算法快速傅里叶变换 (Fast Fourier Transform), 即利用计算机计算离散傅里叶变换DFT的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。原创 2020-11-21 16:55:54 · 394 阅读 · 0 评论 -
其他算法-BFS
BFS:广度优先搜索 Breadth First Search,在认识BFS前先熟悉队列队列队列是一种数据结构,队列(queue)内的元素满足先进先出原则,First In First Out,简写为FIFO;队列的操作队列应该有以下操作:1.判断队列是否为空,时间复杂度O(1)2.访问队列首元素而不出队,时间复杂度O(1)3.新元素入队,如果空间不够,会overflow(上溢出)4.旧元素出队,如果队列已经为空,会underflow(下溢出)5.确定队列中元素个数,时间复杂度为O(1)原创 2020-11-18 21:57:05 · 218 阅读 · 0 评论 -
贪心算法
贪心算法框架贪心算法(greedy algorithm)是一个容易想象但难以证明的算法,算法框架包括:可选对象集合S,S是全集;已选对象集合T;判断解是否合法的函数isValid(T);评价解的函数payoff(T);目标:从S中选出T,使isValid(T)为True,同时,满足payoff(T)最大;做法:从空集开始,每次增加一个元素使当前payoff最大贪心算法与动态规划的比较贪心算法不一定得到全局最优解,动态规划是全局最优的,两者的递推公式也有差别;动态规划:opt(x)=原创 2020-11-17 15:16:47 · 1210 阅读 · 0 评论 -
动态规划(一)
目录通过一个实例认识动态规划商店打劫1.暴力递归2.分析冗余步骤改进为动态规划动态规划总结应用实例斐波那契数列N阶乘:N!士兵的行走方法动态规划(Dynamic Programming),名字没有什么特殊意义,关键在于看待问题的思想,而且并不是所有问题都可以用动态规划解决;公式分两种:通项公式和递推公式,递推公式可以用递归实现动态规划与递归相关联,如果去除递归中的重复计算,就是动态规划,当然,动态规划也可以直接通过递推的for循环实现通过一个实例认识动态规划商店打劫这是leetcode中的一原创 2020-11-15 10:58:51 · 327 阅读 · 0 评论 -
其他算法-KMP
KMP算法KMP算法由D.E.Knuth,J.H.Morris和V.R.Pratt提出,故得名KMP,用于模式字符串和原始字符串的匹配;匹配的描述:给定文本text和模式字符串pattern,从text中找出pattern第一次出现的位置;首先想到暴力求解(Brute Force),假设text的字符数量是n,pattern的字符数量是m,规定i是pattern的首字符在text中的匹配位置(i属于0到n),j是目前检测到模式字符串的匹配位置(j属于0到m);n个字符都与m个字符分别比较一次是否相等原创 2020-11-13 10:27:37 · 145 阅读 · 0 评论 -
其他算法-LCS
LCS算法LCS即Longest Common Subsequence:最长公共子序列;一个序列S任意删除若干个字符后得到序列T,则T叫做S的子序列,假设现在有X和Y两个序列,两者最长的公共子序列即X,Y的LCS:比如:13455和245576的LCS为455,acdfg和adfc的LCS为adf,注意LCS要和Longest Common Substring区分开,Longest Common Substring要求char连续不能分隔开;如何找LCS首先想到的是暴力穷举,令X的字符数量为m,Y原创 2020-11-10 21:33:02 · 157 阅读 · 0 评论 -
线性规划-单纯形法
单纯形法part1运筹学是一门内容广泛的课程,但限于个人水平,我仅向读者讲解线性规划,非线性规划,动态规划部分。首先,我需要梳理一下基础,线性规划一般适用单纯形法求解;非线性规划包括无约束问题,有约束问题,一般做法为将有约束转为无约束;对于离散问题,动态规划更加节省时间。本篇只讲单纯形法第一部分,希望大家have fun!在复杂的数学证明下,线性规划问题通常是凸规划,也就是说正常情况下,是能找到最优解的。单纯形法通过添加人工变量的形式,对原问题进行基变换,迭代获得最优解。说实话,以上这句话有点像曾经原创 2020-09-29 20:15:15 · 2172 阅读 · 0 评论