精华内容
下载资源
问答
  • 三维空间建模方法之LOD模型算法
    千次阅读
    2019-05-14 22:10:00

    什么是LOD

    LOD也称为层次细节模型,是一种实时三维计算机图形技术,最先由Clark于1976年提出,其工作原理是:

    视点离物体近时,能观察到的模型细节丰富;视点远离模型时,观察到的细节逐渐模糊。系统绘图程序根据一定的判断条件,选择相应的细节进行显示,从而避免了因绘制那些意义相对不大的细节而造成的时间浪费,同时有效地协调了画面连续性与模型分辨率的关系。

    示例图:

    地形LOD模型算法

    地形里面的LOD算法可以分为:非连续LOD模型、连续LOD模型以及节点LOD模型。

    非连续LOD模型:它实质上保存了原始模型的多个副本,每个副本对应某一特定的分辨率,所有副本构成一个金字塔模型。该模型的优点是不必在线生成模型,可视速度快;缺点是数据冗余大,容易引起几何数据的不一致性,而且由于不同分辨率之间没有任何关联,不同分辨率间的转换易引起视觉上的间跳现象。

    连续LOD模型:它是在某一时间只保留某一分辨率的模型,在实际应用中根据需要,采用一定的算法实时生成另一分辨率的模型。该模型优缺点正好与不连续LOD模型相反,即优点是没有数据冗余,能够保证几何数据的一致性和视觉连续性;缺点是需要在线生成不同分辨率的模型,算法设计复杂,可视速度慢。

    节点LOD模型:本身是一个分辨率结构。不同分辨率模型之间用节点相连,通过对节点的激活来操作相应的部件。所有节点均被激活时,实质就是一个全分辨率结构,优点是结构简单、操作方便,适合表达复杂的不连续的体模型对象。

     

    https://www.cnblogs.com/jiayongzhi/archive/2011/06/01/2067430.html  模型lod算法实现

    http://www.cnblogs.com/fuckgiser/p/6500641.html cesiumLOD渲染原理篇

    转载于:https://www.cnblogs.com/yejianyong/p/10864969.html

    更多相关内容
  • 算法大全包括各种模型算法的详细介绍,对数学建模等实际问题的解决提供了有效的帮助。
  • 数学建模算法学习——各类模型算法汇总

    万次阅读 多人点赞 2019-09-08 14:28:50
    相关模型解决的问题 数据分析类算法一览 100个经典动态规划方程 优化问题 线性规划 简介:线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式...

    相关模型解决的问题
    数据分析类算法一览
    100个经典动态规划方程

    优化问题

    • 线性规划
    1. 简介:线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab 中规定线性规划的标准形式为
      线性规划
      其中 c 和 x 为 n 维列向量, A 、 Aeq 为适当维数的矩阵, b 、 beq 为适当维数的列向量。
    2. 代码实现

    MATLAB实现:MATLAB中求解线性规划的命令为:
    [ x,fval ]=linprog(f,A,b)
    [ x,fval ]=linprog(f,A,b,Aeq,beq)
    [ x,fval ]=linprog(f,A,b,Aeq,beq,lb,ub)
    其中:返回的x为决策向量的取值; 返回的fval是目标函数的最大值;f为价值向量;A和b对应的是线性不等式约束;Aeq和beq对应的是线性等式约束;lb和ub分别对应的是决策向量的下界向量和上界向量。
    eg1:线性规划
    (1)化为Matlab标准型,即线性规划
    (2)求解的Matlab程序如下:

    f=[-2,-3,5]'
    A=[-2,5,-1;1,3,1];  b=[-10;12];
    Aeq=[1,1,1];    beq=7;
    [x,fval]=linprog(f,A,b,Aeq,beq,zeros(3,1));
    x
    fval=-fval
    

    这里的zeros(3,1)是为了产生3行1列的全0矩阵,对应着x1,x2,x3均大于等于0的约束条件。
    eg2:可以转化为线性规划的问题
    线性规划
    线性规划
    可进一步把模型改写为:线性规划
    参考链接
    应用:运输问题(产销平衡)、指派问题(匈牙利算法)、对偶理论与灵敏度分析、投资的收益和风险

    • 非线性规划
    1. 简介:如果线性规划的最优解存在,其最优解只能在其可行域的边界上达到(特别是可行域的顶点上达到);而非线性规划的最优解(如果最优解存在)则可能在其可行域的任意一点达到。
      非线性规划
      其中f(x)是标量函数, Beq,Aeq,B,A 是相应维数的矩阵和向量, Ceq(x),C(x) 是非线性向量函数。
    2. 代码实现

    MATLAB代码实现:
    x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
    1.fun为目标函数
    2.x0为初始值
    3.A是不等式约束AX<=b的系数矩阵
    4.b是不等式约束AX<=b的常数项
    5.Aeq是等式约束AeqX=beq的系数矩阵,
    6.beq是等式约束AeqX=beq的常数项,
    7.lb是X的下限,
    8.ub是X的上限,
    9.nonlcon为非线性不等式约束
    10.option为设置fmincon的参数
    eg:非线性规划
    形如上述这样的就是非线性规划:

    function f=fun1(x)
    f=x(1)^2+x(2)^2+8;
    
    function [g,h]=fun2(x)
    g=-x(1)^2+x(2);
    h=-x(1)-x(2)^2+2;%约束等式
    
    options=optimset;
    [x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],'fun2',options)
    
    x =
    
        1.0000
        1.0000
    y =
    
       10.0000
    

    参考链接

    • 整数规划
    1. 简介:规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:
      1 变量全限制为整数时,称纯(完全)整数规划。
      2 变量部分限制为整数的,称混合整数规划。
    2. 代码实现

    参考链接
    马尔可夫过程

    • 动态规划
    1. 简介:动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decisionprocess)最优化的数学方法。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。
    2. 代码实现

    参考链接
    具体问题具体分析

    排队论

    PPT参考
    参考资料
    案例与代码
    排队论详解及Lingo实现

    1. 简介:排队论(Queuing Theory)也称随机服务系统理论,就是为解决上述问题而发展 的一门学科。它研究的内容有下列三部分:
      (i)性态问题,即研究各种排队系统的概率规律性,主要是研究队长分布、等待时间分布和忙期分布等,包括了瞬态和稳态两种情形。
      (ii)优化问题,又分静态优和动态优,前者指优设计。后者指现有排队系统的优运营。
      (iii)排队系统的统计推断,即判断一个给定的排队系统符合于哪种模型,以便根据排队理论进行分析研究。
    2. 符号说明
      排队模型用六个符号表示,在符号之间用斜线隔开,即 X/Y/Z/A/B/C 。

    第一 个符号 X 表示顾客到达流或顾客到达间隔时间的分布;
    第二个符号Y 表示服务时间的 分布;
    第三个符号Z 表示服务台数目;
    第四个符号 A是系统容量限制;
    第五个符号B 是 顾客源数目;
    第六个符号C 是服务规则,如先到先服务 FCFS,后到先服务 LCFS 等。
    并约定,如略去后三项,即指X/Y/Z/∞/∞/FCFS的情形。我们只讨论先到先服务 FCFS 的情形,所以略去第六项。

    表示顾客到达间隔时间和服务时间的分布的约定符号为:

    M —指数分布(M 是 Markov 的字头,因为指数分布具有无记忆性,即 Markov 性);
    D—确定型(Deterministic);
    Ek —k 阶爱尔朗(Erlang)分布;
    G —一般(general)服务时间的分布;
    GI —一般相互独立(General Independent)的时间间隔的分布。
    例如,M/M/1表示相继到达间隔时间为指数分布、服务时间为指数分布、单服务台、等待制系统。
    D/M/c/表示确定的到达时间、服务时间为指数分布、c个平行服务台(但顾客是一队)的模型。

    1. 参数指标:为了研究排队系统运行的效率,估计其服务质量,确定系统的优参数,评价系统 的结构是否合理并研究其改进的措施,必须确定用以判断系统运行优劣的基本数量指标,这些数量指标通常是:

    (i)平均队长:指系统内顾客数(包括正被服务的顾客与排队等待服务的顾客)的数学期望,记作Ls 。
    (ii)平均排队长:指系统内等待服务的顾客数的数学期望,记作 Lq 。
    (iii)平均逗留时间:顾客在系统内逗留时间(包括排队等待的时间和接受服务的时间)的数学期望,记作Ws 。
    (iv)平均等待时间:指一个顾客在排队系统中排队等待时间的数学期望,记作Wq 。
    (v)平均忙期:指服务机构连续繁忙时间(顾客到达空闲服务机构起,到服务机构再次空闲止的时间)长度的数学期望,记为 Tb

    层次分析法

    PPT参考
    详细实现
    代码实现

    1. 简介:层次分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。
    2. 步骤

    (i)建立递阶层次结构模型;
    (ii)构造出各层次中的所有判断矩阵;
    (iii)层次单排序及一致性检验;
    (iv)层次总排序及一致性检验。

    1. 概念:应用 AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。
      这些层次可以分为三类:

    (i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。
    (ii)中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。
    (iii)最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。

    递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过 9 个。这是因为支配的元素过多会给两两比较判断带来困难。

    多属性决策

    PPT资料
    参考资料

    简介:多属性决策是现代决策科学的一个重要组成部分,它的理论和方法在工程设计、经济、管理和军事等诸多领域中有着广泛的应用,如:投资决策、项目评估、维修服务、武器系统性能评定、工厂选址、投标 招标、产业 部门发展排序和经济效益综合评价等.多属性决策的实质是利用已有的决策信息通过一定的方式对一组( ( 有限个) ) 备选方案进行排序或择优.它主要由两部分组成:

    (l) 获取决策信息.决策信息一般包括两个方面的内容:属性权重和属性值( ( 属性值主要有三种形式:实数、区间数和语言) ) .其中,属性权重的确定是多属性决策中的一个重要研究内容;
    (2)通过一定的方式对决策信息进行集结并对方案进行排序和择优.

    ###主成分分析法

    PPT资料
    参考资料
    Python实现

    简介:主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

    商权法

    参考资料
    基本步骤

    简介:按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;如果指标的信息熵越小,该指标提供的信息量越大,在综合评价中所起作用理当越大,权重就应该越高。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。

    插值与拟合

    1. 简介:插值:求过已知有限个数据点的近似函数。
      拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小。
      插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。而面对一个实际问题,究竟应该用插值还是拟合,有时容易确定,有时则并不明显。
    • 插值方法:
      几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite 插值和三次样条插值。

    • 曲线拟合的线性最小二乘法(线性最小二乘法):
      最小二乘优化(lsqlin 函数、lsqcurvefit 函数、lsqnonlin 函数、lsqnonneg 函数)

    1. 代码实现

    参考链接

    方差分析

    PPT资料
    案例分析
    SPSS实现

    1. 简介:为了使生产过程稳定,达到优质、高产,需要对影响产品质量的因素进行分析,找出有显著影响的那些因素,除了从机理方面进行研究外,常常要作许多试验,对结果作分析、比较,寻求规律。用数理统计分析试验结果、鉴别各因素对结果影响程度的方法称为方差分析(Analysis Of Variance),记作 ANOVA。
    2. 分类:
      §1 单因素方差分析
      只考虑一个因素 A 对所关心的指标的影响, A 取几个水平,在每个水平上作若干个试验,试验过程中除 A 外其它影响指标的因素都保持不变(只有随机因素存在),我们的任务是从试验结果推断,因素 A 对指标有无显著影响,即当 A 取不同水平时指标有无显著差别。A 取某个水平下的指标视为随机变量,判断 A 取不同水平时指标有无显著差别,相当于检验若干总体的均值是否相等。
      §2 双因素方差分析
      如果要考虑两个因素 B A, 对指标的影响, B A, 各划分几个水平,对每一个水平组合作若干次试验,对所得数据进行方差分析,检验两因素是否分别对指标有显著影响,或者还要进一步检验两因素是否对指标有显著的交互影响。
      §3 正交试验设计与方差分析
      由于因素较少时,我们可以对不同因素的所有可能的水平组合做试验,这叫做全面试验。当因素较多时,虽然理论上仍可采用前面的方法进行全面试验后再做相应的方差分析,但是在实际中有时会遇到试验次数太多的问题。如果考虑更多的因素及水平,则全面试验的次数可能会大得惊人。因此在实际应用中,对于多因素做全面试验是不现实的。于是我们考虑是否可以选择其中一部分组合进行试验,这就要用到试验设计方法选择合理的试验方案,使得试验次数不多,但也能得到比较满意的结果。

    回归分析

    概念理解
    PPT参考
    参考资料
    代码实现
    多元回归分析代码
    SPSS分析

    1. 简介:曲线拟合问题的特点是,根据得到的若干有关变量的一组数据,寻找因变量与(一个或几个)自变量之间的一个函数,使这个函数对那组数据拟合得最好。通常,函数的形式可以由经验、先验知识或对数据的直观观察决定,要作的工作是由数据用最小二乘法计算函数中的待定系数。从计算的角度看,问题似乎已经完全解决了,还有进一步研究的必要吗?从数理统计的观点看,这里涉及的都是随机变量,我们根据一个样本计算出的那些系数,只是它们的一个(点)估计,应该对它们作区间估计或假设检验,如果置信区间太大,甚至包含了零点,那么系数的估计值是没有多大意义的。另外也可以用方差分析方法对模型的误差进行分析,对拟合的优劣给出评价。简单地说,回归分析就是对拟合问题作的统计分析。
    2. 研究的问题

    (i)建立因变量 y 与自变量 x1,x2,……,xm之间的回归模型(经验公式);
    (ii)对回归模型的可信度进行检验;
    (iii)判断每个自变量xi=(i=1,2,……,m)对 y 的影响是否显著;
    (iv)诊断回归模型是否适合这组数据;
    (v)利用回归模型对 y 进行预报或控制。

    微分方程建模

    PPT资料
    微分方程求解代码

    1. 简介:微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微分方程的定解问题。把形形色色的实际问题化成微分方程的定解问题,大体上可以按以下几步:
    • 根据实际要求确定要研究的量(自变量、未知函数、必要的参数等)并确定坐标系。
    • 找出这些量所满足的基本规律(物理的、几何的、化学的或生物学的等等)。
    • 运用这些规律列出方程和定解条件。
    1. 方法:列方程常见的方法有:

    (i)按规律直接列方程
    在数学、力学、物理、化学等学科中许多自然现象所满足的规律已为人们所熟悉,并直接由微分方程所描述。如牛顿第二定律、放射性物质的放射性规律等。我们常利用这些规律对某些实际问题列出微分方程。
    (ii)微元分析法与任意区域上取积分的方法
    自然界中也有许多现象所满足的规律是通过变量的微元之间的关系式来表达的。对于这类问题,我们不能直接列出自变量和未知函数及其变化率之间的关系式,而是通过微元分析法,利用已知的规律建立一些变量(自变量与未知函数)的微元之间的关系式,然后再通过取极限的方法得到微分方程,或等价地通过任意区域上取积分的方法来建立微分方程。
    (iii)模拟近似法
    在生物、经济等学科中,许多现象所满足的规律并不很清楚而且相当复杂,因而需要根据实际资料或大量的实验数据,提出各种假设。在一定的假设下,给出实际现象所满足的规律,然后利用适当的数学方法列出微分方程。在实际的微分方程建模过程中,也往往是上述方法的综合应用。不论应用哪种方法,通常要根据实际情况,作出一定的假设与简化,并要把模型的理论或计算结果与实际情况进行对照验证,以修改模型使之更准确地描述实际问题并进而达到预测预报的目的。

    马氏链模型

    PPT资料
    通俗解释
    Python代码实现

    简介:马尔可夫链的定义
    现实世界中有很多这样的现象:某一系统在已知现在情况的条件下,系统未来时刻的情况只与现在有关,而与过去的历史无直接关系。比如,研究一个商店的累计销售额,如果现在时刻的累计销售额已知,则未来某一时刻的累计销售额与现在时刻以前的任一时刻累计销售额无关。上节中的几个例子也均属此类。描述这类随机现象的数学模型称为马氏模型。

    时间序列模型

    概念理解
    参考资料

    简介:时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序列的方法构成数据分析的一个重要领域,即时间序列分析。
    时间序列根据所研究的依据不同,可有不同的分类。

    1.按所研究的对象的多少分,有一元时间序列和多元时间序列。
    2.按时间的连续性可将时间序列分为离散时间序列和连续时间序列两种。
    3.按序列的统计特性分,有平稳时间序列和非平稳时间序列。如果一个时间序列的概率分布与时间 t 无关,则称该序列为严格的(狭义的)平稳时间序列。如果序列的一、二阶矩存在,而且对任意时刻 t 满足:
    (1)均值为常数
    (2)协方差为时间间隔 τ 的函数。
    则称该序列为宽平稳时间序列,也叫广义平稳时间序列。我们以后所研究的时间序列主要是宽平稳时间序列。
    4.按时间序列的分布规律来分,有高斯型时间序列和非高斯型时间序列。

    模糊数学模型

    PPT资料
    参考资料

    简介:模糊是指客观事物差异的中间过渡中的“不分明性”或“亦此亦彼性”。如高个子与矮个子、年轻人与老年人、热水与凉水、环境污染严重与不严重等。在决策中,也有这种模糊的现象,如选举一个好干部,但怎样才算一个好干部?好干部与不好干部之间没有绝对分明和固定不变的界限。这些现象很难用经典的数学来描述。

    灰色系统理论及其应用

    灰色预测
    PPT资料
    代码实现

    简介:客观世界的很多实际问题,其内部的结构、参数以及特征并未全部被人们了解,人们不可能象研究白箱问题那样将其内部机理研究清楚,只能依据某种思维逻辑与推断来构造模型。对这类部分信息已知而部分信息未知的系统,我们称之为灰色系统。

    聚类分析

    PPT资料
    K-means算法实现及详解
    SPSS聚类分析

    简介:将认识对象进行分类是人类认识世界的一种重要方法,比如有关世界的时间进程的研究,就形成了历史学,也有关世界空间地域的研究,则形成了地理学。又如在生物学中,为了研究生物的演变,需要对生物进行分类,生物学家根据各种生物的特征,将它们归属于不同的界、门、纲、目、科、属、种之中。事实上,分门别类地对事物进行研究,要远比在一个混杂多变的集合中更清晰、明了和细致,这是因为同一类事物会具有更多的近似特性。在企业的经营管理中,为了确定其目标市场,首先要进行市场细分。因为无论一个企业多么庞大和成功,它也无法满足整个市场的各种需求。而市场细分,可以帮助企业找到适合自己特色,并使企业具有竞争力的分市场,将其作为自己的重点开发目标。通常,人们可以凭经验和专业知识来实现分类。而聚类分析(cluster analyses)作为一种定量方法,将从数据分析的角度,给出一个更准确、细致的分类工具。

    存贮论

    PPT资料
    参考资料及Lingo实现

    简介:存贮论(或称为库存论)是定量方法和技术最早的领域之一,是研究存贮系统的性质、运行规律以及如何寻找最优存贮策略的一门学科,是运筹学的重要分支。存贮论的数学模型一般分成两类:一类是确定性模型,它不包含任何随机因素,另一类是带有随机因素的随机存贮模型。

    现代优化算法

    • 模拟退火

    概念理解
    PPT资料啊
    参考资料
    模拟退火TSP问题
    代码实现

    • 遗传算法

    概念理解
    参考资料
    Python实现
    代码实现

    简介:遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。

    • 禁忌搜索

    概念理解
    PPT资料

    简介:禁忌搜索(Tabu Search,TS)是一种现代启发式算法,由美国科罗拉多大学教授Fred Glover在1986年左右提出的,是一个用来跳脱局部最优解的搜索方法。算法基于局部搜索算法改进而来,通过引入禁忌表来克服局部搜索算法容易陷入局部最优的缺点,具有全局寻优能力。

    • 蚁群算法

    参考过程
    算法详解及代码
    Python实现

    神经网络模型

    PPT资料
    概念理解
    模型一览
    案例及代码实现
    Python实现

    简介:人工神经网络(artificial neural network,以下简称 NN)有三个基本要素:

    (i)一组连接(对应于生物神经元的突触),连接强度由各连接上的权值表示,权值为正表示激活,为负表示抑制。
    (ii)一个求和单元,用于求取各输入信号的加权和(线性组合)。
    (iii)一个非线性激活函数,起非线性映射作用并将神经元输出幅度限制在一定范围内(一般限制在 (0,1) 或(-1,1) 之间)。

    粒子群优化算法

    PPT资料
    代码实现

    图论算法

    算法汇总

    • 迪杰斯特拉算法

    算法理解及实现

    简介:Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。

    • 弗洛伊德Floyd算法

    PPT资料
    Python实现

    简介:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。

    展开全文
  • 机器学习-隐马尔可夫模型算法

    千次阅读 2020-10-29 21:41:17
    隐马尔可夫模型(Hidden Markov Model,HMM)是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模(语音识别、自然语言处理等)。 假设有三个不同的骰子(6面、4面、8面),每次先从三个...

    1 概述

    隐马尔可夫模型(Hidden Markov Model,HMM)是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模(语音识别、自然语言处理等)。

    假设有三个不同的骰子(6面、4面、8面),每次先从三个骰子里选一个,每个骰子选中的概率为1/3,如下图所示,重复上述过程,得到一串数字[1 6 3 5 2 7]。这些可观测变量组成可观测状态链。

    同时,在隐马尔可夫模型中还有一条由隐变量组成的隐含状态链,在本例中即骰子的序列。比如得到这串数字骰子的序列可能为[D6 D8 D8 D6 D4 D8]。

    隐马尔可夫模型示意图如下所示:

     

    图中,箭头表示变量之间的依赖关系。在任意时刻,观测变量(骰子点数)仅依赖于状态变量(哪类骰子),“观测独立性假设”

    同时,t时刻的状态qt仅依赖于t-1时刻的状态qt-1。这就是马尔可夫链,即系统的下一时刻的状态仅由当前状态决定不依赖以往的任何状态(无记忆性),“齐次马尔可夫性假设”

    2 隐马尔可夫模型三要素

    对于一个隐马尔可夫模型,它的所有N个可能的状态的集合Q={q1,q2,…,qN},所有M个可能的观测集合V={v1,v2,…,vM}

    隐马尔可夫模型三要素:

    1. 状态转移概率矩阵A,A=[aij]NxN,aij表示任意时刻t状态qi条件下,下一时刻t+1状态为qj的概率;

    2. 观测概率矩阵B,B=[bij]NxM,bij表示任意时刻t状态qi条件下,生成观测值vj的概率;

    3. 初始状态概率向量Π,Π=(π1,π2,…,πN),πi表示初始时刻t=1,状态为qi的概率。

    一个隐马尔可夫模型可由λ=(A, B, Π)来指代。

    3 隐马尔可夫模型的三个基本问题

    • (1) 给定模型λ=(A, B, Π),计算其产生观测序列O={o1,o2,…,oT}的概率P(O|λ);

      计算掷出点数163527的概率

    • (2) 给定模型λ=(A, B, Π)和观测序列O={o1,o2,…,oT},推断能够最大概率产生此观测序列的状态序列I={i1,i2,…,iT},即使P(I|O)最大的I;

      推断掷出点数163527的骰子种类

    • (3) 给定观测序列O={o1,o2,…,oT},估计模型λ=(A, B, Π)的参数,使P(O|λ)最大;

      已知骰子有几种,不知道骰子的种类,根据多次掷出骰子的结果,反推出骰子的种类

    这三个基本问题在现实应用中非常重要,例如根据观测序列O={o1,o2,…,oT-1,}推测当前时刻最有可能出现的观测值OT,这就转换成基本问题(1);

    语音识别中,观测值为语音信号,隐藏状态为文字,根据观测信号推断最有可能的状态序列,即基本问题(2);

    大多数应用中,人工指定参数模型已变得越来越不可行,如何根据训练样本学得最优参数模型,就是基本问题(3)。

    4 三个基本问题的解法

    基于两个条件独立假设,隐马尔可夫模型的这三个基本问题均能被高效求解。

    4.1 基本问题(1)解法

    4.1.1 直接计算法(概念上可行,计算上不可行)

    通过列举所有可能的长度为T的状态序列I=(i1,i2,…,iT),求各个状态序列I与观测序列O同时出现的联合概率P(I,O|λ),然后对所有可能求和得到P(O|λ)。

    状态序列I=(i1,i2,…,iT)的概率是P(I|λ)=π1a12a23…a(T-1)T

    对于固定状态序列 I,观测序O=(o1,o2,…,oT)的概率P(O|I,λ)= b11b22…bTT

    I 和 O同时出现的联合概率P(I,O|λ)= P(I|λ) P(O|I,λ)

    然后对所有可能的 I 求和,得到P(O|λ)

    这种方法计算量很大,算法不可行。

    4.1.2 前向算法(forward algorithm)(t=1,一步一步向前计算)

    前向概率αt(i)= P(o1,o2,…,ot,ii=qi|λ),表示模型λ,时刻 t,观测序列为o1,o2,…,ot且状态为qi的概率。

    (1) 初始化前向概率

    状态为qi和观测值为o1的联合概率 α1(i)=π1bi1

    (2) 递推t=1,2,…,T-1

    根据下图,得到αt+1(i)= [Σj=1,…,Nαt(j)αji]bi(t+1)

    (3) 终止 P(O|λ) = Σi=1,…,NαT(i)

    前向算法高效的关键是其局部计算前向概率,根据路径结构,如下图所示,每次计算直接利用前一时刻计算结果,避免重复计算,减少计算量。

    4.1.3 后向算法(backward algorithm)

    后向概率βt(i) = P(o1,o2,…,ot,ii=qi|λ),表示模型λ,时刻t,从t+1到时刻T观测序列o1,o2,…,ot且状态为qi的概率。

    (1)初始化后向概率

    对最终时刻的所有状态为qi规定βT(i) = 1。

    (2)递推t=T-1,T-2,…,1

    根据下图,计算t时刻状态为qi,且时刻t+1之后的观测序列为ot+1,ot+2,…,ot的后向概率。只需考虑t+1时刻所有可能的N个状态qi的转移概率(transition probability) αij,以及在此状态下的观测概率bi(t+1),然后考虑qj之后的后向概率βt+1(j),得到βt(i) = Σj=1,…,Nβt+1(j)αijbi(t+1).

    (3) 终止 P(O|λ) = Σi=1,…,Nβ1(i)πibi1

    前向算法高效的关键是其局部计算前向概率,根据路径结构,如下图所示,每次计算直接利用前一时刻计算结果,避免重复计算,减少计算量。

    4.2 基本问题(2)解法

    4.2.1 近似算法

    选择每一时刻最有可能出现的状态,从而得到一个状态序列。这个方法计算简单,但是不能保证整个状态序列的出现概率最大。因为可能出现转移概率为0的相邻状态。

    4.2.2 Viterbi算法

    使用动态规划求解概率最大(最优)路径。t=1时刻开始,递推地计算在时刻t状态为i的各条部分路径的最大概率,直到计算到时刻T,状态为i的各条路径的最大概率,时刻T的最大概率即为最优路径的概率,最优路径的节点也同时得到。

    如果还不明白,看一下李航《统计学习方法》的186-187页的例题就能明白算法的原理。

    状态[3 3 3]极为概率最大路径。

    4.3 基本问题(3)解法

    4.3.1 监督学习方法

    给定S个长度相同的(观测序列,状态序列)作为训练集(O1,I1),O2,I3),…, (Os,Is)使用极大似然估计法来估计模型参数。

    转移概率αij 的估计:样本中t时刻处于状态i,t+1时刻转移到状态j的频数为αij,则

    观测概率bij和初始状态概率πi的估计类似。

    4.3.2 Baum-Welch算法

    使用EM算法得到模型参数估计式

    EM算法是常用的估计参数隐变量的利器,它是一种迭代方法,基本思想是:

    (1) 选择模型参数初始值;

    (2) (E步)根据给定的观测数据和模型参数,求隐变量的期望;

    (3) (M步)根据已得隐变量期望和观测数据,对模型参数做极大似然估计,得到新的模型参数,重复第二步。

     

    5 Python代码实现

    5.1 Baum-Welch算法的程序实现

    这里提供Baum-Welch算法的代码实现。

    
    # encoding=utf8
    
    import numpy as np
    import csv
    
    class HMM(object):
        def __init__(self,N,M):
            self.A = np.zeros((N,N))        # 状态转移概率矩阵
            self.B = np.zeros((N,M))        # 观测概率矩阵
            self.Pi = np.array([1.0/N]*N)   # 初始状态概率矩阵
    
            self.N = N                      # 可能的状态数
            self.M = M                      # 可能的观测数
    
        def cal_probality(self, O):
            self.T = len(O)
            self.O = O
    
            self.forward()
            return sum(self.alpha[self.T-1])
    
        def forward(self):
            """
            前向算法
            """
            self.alpha = np.zeros((self.T,self.N))
    
            # 公式 10.15
            for i in range(self.N):
                self.alpha[0][i] = self.Pi[i]*self.B[i][self.O[0]]
    
            # 公式10.16
            for t in range(1,self.T):
                for i in range(self.N):
                    sum = 0
                    for j in range(self.N):
                        sum += self.alpha[t-1][j]*self.A[j][i]
                    self.alpha[t][i] = sum * self.B[i][self.O[t]]
    
        def backward(self):
            """
            后向算法
            """
            self.beta = np.zeros((self.T,self.N))
    
            # 公式10.19
            for i in range(self.N):
                self.beta[self.T-1][i] = 1
    
            # 公式10.20
            for t in range(self.T-2,-1,-1):
                for i in range(self.N):
                    for j in range(self.N):
                        self.beta[t][i] += self.A[i][j]*self.B[j][self.O[t+1]]*self.beta[t+1][j]
    
        def cal_gamma(self, i, t):
            """
            公式 10.24
            """
            numerator = self.alpha[t][i]*self.beta[t][i]
            denominator = 0
    
            for j in range(self.N):
                denominator += self.alpha[t][j]*self.beta[t][j]
    
            return numerator/denominator
    
        def cal_ksi(self, i, j, t):
            """
            公式 10.26
            """
    
            numerator = self.alpha[t][i]*self.A[i][j]*self.B[j][self.O[t+1]]*self.beta[t+1][j]
            denominator = 0
    
            for i in range(self.N):
                for j in range(self.N):
                    denominator += self.alpha[t][i]*self.A[i][j]*self.B[j][self.O[t+1]]*self.beta[t+1][j]
    
            return numerator/denominator
    
        def init(self):
            """
            随机生成 A,B,Pi
            并保证每行相加等于 1
            """
            import random
            for i in range(self.N):
                randomlist = [random.randint(0,100) for t in range(self.N)]
                Sum = sum(randomlist)
                for j in range(self.N):
                    self.A[i][j] = randomlist[j]/Sum
    
            for i in range(self.N):
                randomlist = [random.randint(0,100) for t in range(self.M)]
                Sum = sum(randomlist)
                for j in range(self.M):
                    self.B[i][j] = randomlist[j]/Sum
    
        def train(self, O, MaxSteps = 100):
            self.T = len(O)
            self.O = O
    
            # 初始化
            self.init()
    
            step = 0
            # 递推
            while step<MaxSteps:
                step+=1
                print(step)
                tmp_A = np.zeros((self.N,self.N))
                tmp_B = np.zeros((self.N,self.M))
                tmp_pi = np.array([0.0]*self.N)
    
                self.forward()
                self.backward()
    
                # a_{ij}
                for i in range(self.N):
                    for j in range(self.N):
                        numerator=0.0
                        denominator=0.0
                        for t in range(self.T-1):
                            numerator += self.cal_ksi(i,j,t)
                            denominator += self.cal_gamma(i,t)
                        tmp_A[i][j] = numerator/denominator
    
                # b_{jk}
                for j in range(self.N):
                    for k in range(self.M):
                        numerator = 0.0
                        denominator = 0.0
                        for t in range(self.T):
                            if k == self.O[t]:
                                numerator += self.cal_gamma(j,t)
                            denominator += self.cal_gamma(j,t)
                        tmp_B[j][k] = numerator / denominator
    
                # pi_i
                for i in range(self.N):
                    tmp_pi[i] = self.cal_gamma(i,0)
    
                self.A = tmp_A
                self.B = tmp_B
                self.Pi = tmp_pi
    
        def generate(self, length):
            import random
            I = []
    
            # start
            ran = random.randint(0,1000)/1000.0
            i = 0
            while self.Pi[i]<ran or self.Pi[i]<0.0001:
                ran -= self.Pi[i]
                i += 1
            I.append(i)
    
            # 生成状态序列
            for i in range(1,length):
                last = I[-1]
                ran = random.randint(0, 1000) / 1000.0
                i = 0
                while self.A[last][i] < ran or self.A[last][i]<0.0001:
                    ran -= self.A[last][i]
                    i += 1
                I.append(i)
    
            # 生成观测序列
            Y = []
            for i in range(length):
                k = 0
                ran = random.randint(0, 1000) / 1000.0
                while self.B[I[i]][k] < ran or self.B[I[i]][k]<0.0001:
                    ran -= self.B[I[i]][k]
                    k += 1
                Y.append(k)
    
            return Y
    
    
    
    def triangle(length):
        '''
        三角波
        '''
        X = [i for i in range(length)]
        Y = []
    
        for x in X:
            x = x % 6
            if x <= 3:
                Y.append(x)
            else:
                Y.append(6-x)
        return X,Y
    
    
    
    def show_data(x,y):
        import matplotlib.pyplot as plt
        plt.plot(x, y, 'g')
        plt.show()
    
        return y
    
    
    if __name__ == '__main__':
        hmm = HMM(10,4)
        tri_x, tri_y = triangle(20)
    
        hmm.train(tri_y)
        y = hmm.generate(100)
        print(y)
        x = [i for i in range(100)]
        show_data(x,y)
       
    

       

     

    5.2 运行结果

    5.2.1 三角波

    三角波比较简单,我设置N=10,扔进去长度为20的序列,训练100次,下图是其生成的长度为100的序列。

    可以看出效果还是很不错的。

     

    5.2.2 正弦波

    正弦波有些麻烦,因为观测序列不能太大,所以我设置N=15,M=100,扔进去长度为40的序列,训练100次,训练的非常慢,下图是其生成的长度为100的序列。

    可以看出效果一般,如果改成C的代码,并增加N应该是能模拟的。

    展开全文
  • 随着互联网的发展,文本分析越来越受到重视。...本文对LDA算法进行介绍,欢迎批评指正。 本文目录: 1、Gamma函数 2、Dirichlet分布 3、LDA文本建模 4、吉普斯抽样概率公式推导 5、使用...

    随着互联网的发展,文本分析越来越受到重视。由于文本格式的复杂性,人们往往很难直接利用文本进行分析。因此一些将文本数值化的方法就出现了。LDA就是其中一种很NB的方法。 LDA有着很完美的理论支撑,而且有着维度小等一系列优点。本文对LDA算法进行介绍,欢迎批评指正。

     

    本文目录:

    1、Gamma函数

    2、Dirichlet分布

    3、LDA文本建模

    4、吉普斯抽样概率公式推导

    5、使用LDA

     

     

    1、Gamma函数

    T(x)= ∫ tx-1 e-tdt    T(x+1) = xT(x)

    若x为整数,则有 T(n) = (n-1)!

     

    2、Dirichlet分布

    这里抛出两个问题:

    问题1: (1) X1, X2......Xn 服从Uniform(0,1)

                (2) 排序后的顺序统计量为X(1), X(2), X(3)......X(n)

        (3) 问X(k1)和X(k1+k2)的联合分布式什么

    把整个概率区间分成[0,X1) ,  [X1, X1+Δ),   [X1+Δ, X1+X2),    [X1+X2, X1+X2+Δ),     [X1+X2+Δ,1]

    X(k1) 在区间[X1, X1+Δ), X(k1+k2) 在区间[X1+X2, X1+X2+Δ)。 我们另X3 = 1-X1-X2.

    则,

                                

    即Dir(x1, x2, x3| k1, k2, n-k1-k2+1)

    问题2: (1) X1, X2......Xn 服从Uniform(0,1), 排序后的顺序统计量为X(1), X(2), X(3)......X(n)

        (2) 令p1 = [0, X(k1)], p2 = [X(k1), X(k1+k2)], p3 = 1-p1-p2 

        (3) 另外给出新的信息, Y1, Y2.....Ym服从Uniform(0, 1), Yi落到[0,X(k1)],  [X(k1), X(k1+k2)], [X(k1+k2), 1]的数目分别是m1, m2, m3

               (4) 问后验概率 p(p1,p2,p3|Y1,Y2,....Ym)的分布。

    其实这个问题和问题1很像,只是在同样的范围内多了一些点而已。 因此这个概率分布为 Dir(x1,x2,x3| k1+m1, k2+m2, n-k1-k2+1+m3)。

    我们发现这么一个规律     Dir(p|k) + multCount(m) = Dir(p|k+m)。 即狄利克雷分布是多项分布的共轭分布。

    狄利克雷分布有这么一个性质:如果则,

                                                   

     

    3、 LDA文本建模

     首先我们想一篇文章是如何形成的:作者在写一篇文章的时候首先会想这个文章需要包含什么主题呢。比如在写武侠小说的时候,首先会想小说里边需要包含武侠、爱情、亲情、搞笑四个主题。并且给这四个主题分配一定的比例(如武侠0.4,爱情0.3,亲情0.2,搞笑0.1)。每个主题会包含一些word,不同word的概率也是不一样的。 因此我们上帝在生成一篇文章的时候流程是这个样子的:

    (1)上帝有两个坛子的骰子,第一个坛子装的是doc-topic骰子,第二个坛子装的是topic-wod骰子。

    (2)上帝随机的从二个坛子中独立抽取了k个topic-doc骰子,编号1-K。

    (3)每次生成一篇新的文档前,上帝先从第一个坛子中随机抽取一个doc-topic骰子,然后重复如下过程生成文档中的词。

            <1>、投掷这个doc-topic骰子,得到一个topic的编号z。

            <2>、选择K个topic-word骰子中编号为z的的那个,投掷这个骰子, 于是就得到了这个词。

    假设语料库中有M篇文章, 所有的word和对应的topic如下表示:

                                                                 

    我们可以用下图来解释这个过程:  

                                              

    一共两个物理过程:

    第一个过程: ,这个过程分两个阶段。第一个阶段是上帝在生成一篇文档之前,先抽出一个主题分布的骰子,这个分布选择了狄利克雷分布(狄利克雷分布是多项分布的共轭分布)。 第二个阶段根据来抽样得到每个单词的topic。这是一个多项分布。 整个过程是符合狄利克雷分布的。

    第二个过程:,这个过程也分两个阶段。第一个阶段是对每个主题,生成word对应的概率,即选取的骰子,这个分布也是选择了狄利克雷分布。 第二个阶段是根据,对于确定的主题选择对应的word,这是一个多项分布。因此,整个过程是狄利克雷分布。

     

    4、吉普斯抽样概率公式推导

    LDA的全概率公式为: 。 由于是观测到的已知数据,只有是隐含的变量,所以我们需要关注的分布为:。 我们利用Gibbs Sampling进行抽样。 我们要求的某个位置i(m,n)对应的条件分布为 

                                                      

                                                                          是一个定值,因此原公式成立。

    下边是公式的推导:

                                  

    又由于根据狄利克雷分布的特性:

                                   

     

    抽样的时候,首先随机给每个单词一个主题,然后用进行Gibbs抽样,抽样后更新这两个值,一直迭代到收敛(EM过程)。

    至此抽样就结束了。

     

     

    5、使用LDA

    抽样结束后,我们可以统计来得到

    对于LDA我们的目标有两个:

      (1)得到文章库中每篇文章的主题分布

          (2)对于一篇新来的文章,能得到它的主题分布

    第一个目标很容易就能达到。下面主要介绍如果计算 一篇新文章的主题分布。这里我们假设是不会变化的。因此对于一篇新文章到来之后,我们直接用Gibbs Sampling得到新文章的就好了。 具体抽样过程同上。

    由于工程上对于计算新的文章没有作用,因此往往只会保存

    展开全文
  • 向量空间模型算法( Vector Space Model )

    千次阅读 2019-01-16 09:26:24
    向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功 地应用于文本检索系统。 VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似 度表达语义的相似度...
  • 灰色预测模型(Gray Forecast Model)是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法灰色预测模型适用于小样本,含有不确定性因素的系统首先,假如给定一组数据X1={x11,x12,x13…x1n},你需要预测...
  • Java实现线性回归模型算法

    万次阅读 2018-01-06 16:39:44
    今天跟大家一起学习机器学习比较简单的一个算法,也就是线性回归算法。 让我们通过一个例子开始:这个例子就是预测住房价格的,我们要使用一个数据集,数据集包含一个地方的住房价格,这里我们要根据不同房屋尺寸所...
  • ARIMA模型算法原理

    2009-08-26 10:56:51
    介绍了ARIMA模型算法,实现的一些细节,英文版的。大部分都是数学公式,需要有一定的数学基础才能看明白,我自己看了很久,也搞得不是很明白。我感觉其中有些漏洞,貌似不正确但也说不清出,如果有谁能看懂希望...
  • 数学建模常用模型算法介绍

    千次阅读 多人点赞 2021-08-19 12:11:00
    模型算法汇总目录常见模型微分方程模型元胞自动机模型动态规划模型决策树模型主成分分析图论和网路模型排队论模型时间序列分析常用算法:模拟退火算法遗传算法BP神经网络插值和拟合算法聚类分析算法 常见模型 微分...
  • 模型算法

    万次阅读 2019-04-21 19:35:18
    模型是一类问题的解题步骤,亦即一类问题的算法。如果问题的算法不具有一般性,就没有必要为算法建立模型,因为此时个体和整体的对立不明显,模型的抽象性质也体现不出来。 如果研究的问题是特殊的,比如,我今天所...
  • 电动汽车 V2G 放电模型 算法

    千次阅读 2022-03-09 18:33:38
    电动汽车 V2G 放电模型 算法 包含两个程序,均基于matlab,实现以下两个功能; 1.考虑电动汽车家庭慢充和充电站快充两种模式下,模拟出一定数量电动汽车的日负荷曲线; 2.考虑V2G的电动汽车放电模型,基于V2G理论,...
  • 常用统计模型算法

    千次阅读 2020-03-03 18:56:53
    常用模型算法 主成分分析:将多个变量规约为少数几个综合变量,新变量为原变量的线性组合 因子分子:从多个变量中提取少数几个内部因子,每个原始变量均为内部因子的线性组合 两者都是变量降维的重要方法,另,...
  • 数学建模常用模型算法

    千次阅读 2020-09-03 14:57:36
    一、数学建模常用模型算法
  • 隐马尔可夫模型的Inference问题一共五个,涉及的算法有前向算法、后向算法和Viterbi算法,Learning问题涉及的算法是EM算法。我们这一篇介绍具体的算法流程以及通过一个案例...
  • 常见的预测模型算法

    万次阅读 多人点赞 2020-05-01 13:22:18
    如果得到一份数据集,任务是要预测出一系列的值,而在预测任务中,我们大多数都采用的是拟合的方法,这篇文字主要介绍三种预测方法时间序列分析,灰色预测模型,神经网络。 时间序列分析 时间序列也叫动态序列,数据...
  • 遗传算法模型

    千次阅读 2021-07-27 00:11:48
    https://www.jianshu.com/p/ae5157c26af9 https://zhuanlan.zhihu.com/p/33042667
  • 深度学习模型压缩算法综述(二):模型剪枝算法本文禁止转载联系作者:模型剪枝算法 :L1(L2)NormFilterPruner:主要思想:修剪策略:微调策略:残差网络的处理:缺点:FPGMNormFilterPruner:主要思想:基本原理:...
  • 数学建模的十大常用算法 预测模型:神经网络预测、灰色预测、拟合插值预测(线性回归)、时间序列预测、马尔科夫链预测、微分方程预测、Logistic 模型等等。 应用领域:人口预测、水资源污染增长预测、病毒蔓延...
  • 机器学习三要素之数据、模型算法

    千次阅读 多人点赞 2019-06-20 19:38:58
    机器学习三要素包括数据、模型算法。简单来说,这三要素之间的关系,可以用下面这幅图来表示: 总结成一句话:算法通过在数据上进行运算产生模型。 下面我们先分别来看三个要素。 数据 关于数据,其实...
  • 1.深度学习基础模型算法原理及编程实现–01.感知机. 2.深度学习基础模型算法原理及编程实现–02.线性单元 . 3.深度学习基础模型算法原理及编程实现–03.全链接 . 4.深度学习基础模型算法原理及编程实现–04.改进...
  • 模型预测控制(MPC)算法原理

    千次阅读 2021-08-27 11:15:47
    模型预测算法是在欧美等国家兴起的应用于工业领域的一种优化控制算法。目前经过多年的发展,在工业领域、智能控制领域等都有应用。随着算法的理论的完善,其已经成为工业领域内经常使用的一种经典算法。虽然在各个...
  • 算法模型的区别!

    千次阅读 2021-01-22 13:25:38
    算法: 定义:解决特定问题的方法 特点:具体 模型: 定义:解决某一类问题的算法集合 特点:抽象
  • 如何用java调用 Python开发的算法模型

    千次阅读 2022-01-11 14:27:19
    Hprose是一个高性能的远程对象服务引擎。 它是一个现代的、轻量级的、跨语言的、跨平台的、面向对象的、高性能的、远程动态通信中间件。它不仅易于使用,而且功能强大。你只需要一点时间来学习,就可以用它轻松构建...
  • 超全,7种经典推荐算法模型及应用

    千次阅读 多人点赞 2021-12-30 16:49:02
    本文调研了推荐系统里的经典推荐算法,结合论文及应用进行分析、归纳并总结成文,既是自己的思考过程,也可当做以后的翻阅手册。 前言 个性化推荐,是指通过分析、挖掘用户行为,发现用户的个性化需求与兴趣特点,将...
  • 详解:数据,算法模型之间的关系

    万次阅读 多人点赞 2018-09-08 09:45:02
    终究觉得它还不够那么的直观和形象的解释清楚机器学的过程和数据、算法以及模型之间的关系。引出一个象形直白简单的例子教大家如何区分数据、算法模型之间的关系。希望能够帮到初学者。 相比于一上来就去理解...
  • 机器学习中算法模型的关系

    千次阅读 2021-03-12 18:17:18
    机器学习中算法模型的关系算法模型二者联系与区别 算法 算法是运行在数据上为创建“模型”的过程。 模型 模型算法运行在训练数据后得到的结果模型。 二者联系与区别 1、运行算法得到模型 2、算法模型是一对多...
  • 模型预测控制系列讲解(二)模型预测控制算法发展进程 后续更新
  • 在读李航的《统计学习方法》,不太清楚其中统计方法三要素的模型算法这两个的区别, 他们不是都在找一系列的分类模型,然后通过策略中的准则来求解最优的模型吗 即,我理解的是算法是用来构建模型的,最终目的...
  • 模型、训练、算法这几个概念是机器学习和深度学习的最基础,现在看来有必要说明一下。以下所有解释均仅限于人工智能领域。模型模型是什么?通常形容AI语境下的模型一词时,比较多的情况会类比数学...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 991,724
精华内容 396,689
关键字:

模型算法