数学建模常用模型算法学习(部分)

神经网络(较好)

大量的数据,不需要模型,只需要输入和输出,黑箱处理,建议作为检验的办法,不过可以和其他方法进行组合或改进,可以拿来做评价和分类。
DNNs的监督学习

混沌序列预测(高大上)

适用于大数据预测,其难点在于时延和维数的计算。

数据包络(DEA)分析法(较好)

优化问题,对各省发展状况进行评判。

数据包络分析方法(DEA, Data Envelopment Analysis):

  1. 适用于多输出-多出入的有效性综合评价问题,在处理多输出-多输入的有效性评价方面具有绝对优势
  2. DEA方法并不直接对数据进行综合,因此决策单元的最有效率指标与投入指标及产出指标值的量纲选取无关,应用DEA方法建立模型钱无须对数据进行无量纲化处理(当然也可以)
  3. 无须任何权重假设,而已决策单元的输入参数出的实际数据求得最有权重,排除了很多主观因素,具有很强额客观性
  4. DEA方法假定每个输入都关联到一个或者多个输出,且输入输出之间确实存在某种联系,但不必确定这种关系的显示表达式
  • C 2 R C^2R C2R模型:
    C 2 R 模 型 推 导 介 绍 C^2R模型推导介绍 C2R
    1. h j = ∑ r = 1 s u r y r j ∑ i = 1 s v i y i j , j = 1 , 2 , . . . , n h_j = \frac{\sum^{s}_{r=1}u_ry_{rj}}{\sum^{s}_{i=1}v_iy_{ij}}, j =1,2,...,n hj=i=1sviyijr=1suryrj,j=1,2,...,n
    2. h h h = 1, 相对于其他,生产效率(产出比)最高
    3. h h h < 1, 相对于其他,生产效率有待于提高

python代码实现

matlab代码实现

lingo代码实现

支持向量机(高大上)

支持向量机实现是通过某种事先选择的非线性映射(核函数)将输入向量映射到一个高维特征空间,在这个空间中构造最优分类超平面。主要用于分类。

假设农场主,圈养了一批羊群,但为预防狼群袭击羊群,你需要搭建一个篱笆来把羊群围起来。但是篱笆应该建在哪里呢?你很可能需要依据牛群和狼群的位置建立一个“分类器”,比较下图这几种不同的分类器,我们可以看到SVM完成了一个很完美的解决方案。
在这里插入图片描述

多元分析

1. 聚类分析

聚类分析是根据事物本身的特性研究个体分类的方法,原则是同一类中的个体有较大的相似性,不同类中的个体差异很大

2. 判别分析

判别分析是根据表明事物特点的变量值和它们所属的类,求出判别函数。根据判别函数对未知所属类别的事物进行分类的一种分析方法

PPT公式推导

判别分析一般步骤:
1. 已知分类的训练样本
2. 判别分析方法
3. 得到判别函数
4. 建立判别准则
5. 未知样品的判别归类

  • 距离判别法
    (1) 马氏距离
    (2) 两个总体的距离判别法
    (3) 多个总体的距离判别法

  • 贝叶斯判别法
    (1) 标准贝叶斯判别
    在这里插入图片描述
    在这里插入图片描述

    (2) 考虑错判损失的贝叶斯判别

  • 费歇尔判别法
    基本思想:通过将多维数据投影到某一方向上,使得投影后类与类之间尽可能的分开,然后再选择合适的判别准则。费歇尔判别法就是要找一个由p个变量组成的线性函数,使得各类中点的函数值尽可能接近,而不同类之间的函数值尽可能的远离。

  • 逐步判别法
    基本思想:在判别问题中,当判别变量个数较多时,如果不加选择地一概采用来建立判别函数,不仅计算量大,还由于变量之间的相关性,可能使求解逆矩阵的计算精度下降,建立判别函数不稳定。因此适当地筛选变量的问题就成为一个很重要的事情。凡是具有筛选变量能力的判别分析法就统称为逐步判别法。

3 多维标度法(MDS)(一般)

多维标度法: 是一种在低维空间展示“距离”数据结构的多元数据分析技术,简称MDS

假如给一组城市,总能从地图上测出任何一对城市之间的距离。但如果只有若干城市的距离,如何确定这些城市之间的相对位置。假定知道只是哪两个城市最近,那两个城市次近等,是否还能确定它们之间的相对位置。

假定通过调查了解了10种饮料产品在消费者心中的相似程度,能否确定这些产品在这些产品的消费者心理空间种的相对位置。

在这里插入图片描述

已知上图美国十个城市之间的飞行距离,我们如何在平面坐标上标出这10个城市之间的相对位置,试着尽可能接近表中的距离数据呢。

主流聚类方法

聚类算法总结对比

1. 基于划分的方法

给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。

特点:计算量大。很适合发现中小规模的数据库中小规模的数据库中的球状簇。

(1) K-means算法

k-means算法可视化

  • 优点: 算法简单易实现,速度快;
  • 缺点: 需要用户事先指定类簇个数; 聚类结果对初始类簇中心的选取较为敏感; 容易陷入局部最优; 只能发现球形类簇;对孤立点(噪声)很敏感。

  • 算法基本步骤
    1. 首先选好数据分成k类,随机初始化k个点作为中心点;
    2. 对于每个数据点,选取与之距离(闵可夫斯基距离, 欧氏距离, 曼哈顿距离)最近的中心点作为自己的类别;
    3. 当所有数据点都归类完后,调整中心点,把中心点重新设置为该类别中所有数据点的中心位置,每一轴都设为平均值;
    4. 重复上2 3 步骤,计算标准测度函数,之道达到最大迭代次数,则停止,否则,继续操作。

(2) K-medoids算法

  • 优点: 不受极值影响;
  • 缺点: 无法处理大数据。

  • 算法基本步骤
    1. 首先选好数据分成k类,随机初始化k个点作为中心点;
    2. 对于每个数据点,选取与之距离(闵可夫斯基距离, 欧氏距离, 曼哈顿距离)最近的中心点作为自己的类别
    3. 当所有数据点都归类完后,再对每个类 的所有点 计算其他所有点到这个点的距离和。将最小值点作为新的聚类中心点;
    4. 重复上2 3 步骤,计算标准测度函数,之道达到最大迭代次数,则停止,否则,继续操作。

(3) Clarans算法

  • 优点: 能够处理大量数据(T级别);

  • 缺点: 运行速度慢。

    CLARA的有效性主要取决于样本的大小。如果任何一个最佳抽样中心点不在最佳的K个中心之中,则CLARA将永远不能找到数据集合的最佳聚类。同时这也是为了聚类效率做付出的代价。

    CLARANS聚类则是将CLARA和PAM有效的结合起来,CLARANS在任何时候都不把自身局限于任何样本,CLARANS在搜素的每一步都以某种随机性选取样本。算法步骤如下(算法步骤摘自百度文库):


  • 算法基本步骤
    1. 输入参数 numlocal( 表示抽样的次数) 和 maxneighbor(表示一个节点可以与任意特定邻居进行比较的数目)。令:i=1,i用来表示已经选样的次数 mincost为最小代价,初始时设为大数。

    2. 设置当前节点 current 为 Gn 中的任意一个节点。

    3. 令 j =1。( j 用来表示已经与 current 进行比较的邻居的个数)

    4. 考虑当前点的一个随机的邻居S,并计算两个节点的代价差。

    5. 如果S的代价较低,则 current := S,转到步骤3。

    6. 否则,令 j=j+1。如果 j <= maxneighbor , 则转到步骤4。

    7. 否则 ,当 j>maxneighbor,当前节点为本次选样最小代价节点. 如果其代价小于 mincost,令mincost为当前节点的代价,bestnode为当前的节点。

    8. 令 i= i+1,如果 i > numlocal,输出 bestnode,运算中止.否则,转到步骤2。


2. 基于层次的方法

对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。

特点:较小的计算开销。然而这种技术不能更正错误的决定。

(1) Birch算法

  • BIRCH算法的主要优点有

    1. 节约内存,所有的样本都在磁盘上,CF Tree仅仅存了CF节点和对应的指针。

    2. 聚类速度快,只需要一遍扫描训练集就可以建立CF Tree,CF Tree的增删改都很快。

    3. 可以识别噪音点,还可以对数据集进行初步分类的预处理

  • BIRCH算法的主要缺点有

    1. 由于CF Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的类别分布不同.

    2. 对高维特征的数据聚类效果不好。此时可以选择Mini Batch K-Means

    3. 如果数据集的分布簇不是类似于超球体,或者说不是凸的,则聚类效果不好。


BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)平衡迭代规约和聚类算法 比较适合于数据量大,类别数K也比较多的情况。它运行速度很快,只需要单遍扫描数据集就能进行聚类。

BIRCH算法利用了一个树结构来帮助我们快速的聚类,这个数结构类似于平衡B+树,一般将它称之为聚类特征树(Clustering Feature Tree,简称CF Tree)每个节点包括叶子节点都有若干个CF,而内部节点的CF有指向孩子节点的指针,所有的叶子节点用一个双向链表链接起来。

在聚类特征树中,一个聚类特征CF是这样定义的:每一个CF(Clustering Feature)是一个三元组,可以用(N,LS,SS)表示。其中N代表了这个CF中拥有的样本点的数量,这个好理解;LS代表了这个CF中拥有的样本点各特征维度的和向量,SS代表了这个CF中拥有的样本点各特征维度的平方和。举个例子如下图,在CF Tree中的某一个节点的某一个CF中,有下面5个样本(3,4), (2,6), (4,5), (4,7), (3,8)。

则它对应的
N = 5 N=5 N=5
L S = ( 3 + 2 + 4 + 4 + 3 , 4 + 6 + 5 + 7 + 8 ) = ( 16 , 30 ) LS=(3+2+4+4+3 , 4+6+5+7+8)=(16, 30) LS=(3+2+4+4+3,4+6+5+7+8)=(16,30)
S S = ( 3 2 + 2 2 + 4 2 + 4 2 + 3 2 + 4 2 + 6 2 + 5 2 + 7 2 + 8 2 ) = ( 54 + 190 ) = 244 SS =(3^2+2^2+4^2+4^2+3^2+4^2+6^2+5^2+7^2+8^2)=(54+190)=244 SS=(32+22+42+42+32+42+62+52+72+82)=(54+190)=244
在这里插入图片描述
CF有一个很好的性质,就是满足线性关系,
也就是 C F 1 + C F 2 = ( N 1 + N 2 , L S 1 + L S 2 , S S 1 + S S 2 ) CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2) CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2)

如果把这个性质放在CF Tree上,也就是说,在CF Tree中,对于每个父节点中的CF节点,它的(N,LS,SS)三元组的值等于这个CF节点所指向的所有子节点的三元组之和。如下图所示:
在这里插入图片描述

对于CF Tree,我们一般有几个重要参数,第一个参数是每个内部节点的最大CF数B,第二个参数是每个叶子节点的最大CF数L,第三个参数是针对叶子节点中某个CF中的样本点来说的,它是叶节点每个CF的最大样本半径阈值T,也就是说,在这个CF中的所有样本点一定要在半径小于T的一个超球体内。对于上图中的CF Tree,限定了B=7, L=5, 也就是说内部节点最多有7个CF,而叶子节点最多有5个CF。


聚类特征树CF Tree的生成


算法过程
1) 将所有的样本依次读入,在内存中建立一颗CF Tree, 建立的方法参考上一节。

2)(可选)将第一步建立的CF Tree进行筛选,去除一些异常CF节点,这些节点一般里面的样本点很少。对于一些超球体距离非常近的元组进行合并

3)(可选)利用其它的一些聚类算法比如K-Means对所有的CF元组进行聚类,得到一颗比较好的CF Tree.这一步的主要目的是消除由于样本读入顺序导致的不合理的树结构,以及一些由于节点CF个数限制导致的树结构分裂。

4)(可选)利用第三步生成的CF Tree的所有CF节点的质心,作为初始质心点,对所有的样本点按距离远近进行聚类。这样进一步减少了由于CF Tree的一些限制导致的聚类不合理的情况。

从上面可以看出,BIRCH算法的关键就是步骤1,也就是CF Tree的生成,其他步骤都是为了优化最后的聚类结果。

(2) Cure算法

(3) Chameleon算法

3. 基于密度的方法

只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。

特点:能克服基于距离的算法只能发现“类圆形”的聚类的缺点。

(1) Dbscan算法

Dbscan聚类算法可视化
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)具有噪声的基于密度的聚类方法

  • 优点:

    1. 聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类;
    2. 与K-MEANS比较起来,不需要输入要划分的聚类个数;
    3. 聚类簇的形状没有偏倚;
    4. 可以在需要时输入过滤噪声的参数。
  • 缺点:

    1. 当数据量增大时,要求较大的内存支持I/O消耗也很大;
    2. 当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差,因为这种情况下参数MinPts和Eps选取困难;
    3. 算法聚类效果依赖与距离公式选取,实际应用中常用欧式距离,对于高维数据,存在“维数灾难”。

一般将数据点分以下三类

  • 核心点: 在半径Eps内含有超过MinPts数目的点

  • 边界点: 在半径Eps内点的数量小于MinPts,但是落在核心点的领域内

  • 噪音点: 既不是核心点也不是边界点的点
    在这里插入图片描述
    这里有两个量,一个是半径Eps,另一个是指定的数目MinPts:

  • Eps领域: 简单来讲就是与点p的距离小于Eps的所有的点的集合,可以表示为 N E p s ( p ) N_{Eps}(p) NEps(p)

  • 直接密度可达:如果点p在核心对象q的Eps领域内,则称对象q出发是直接密度可达的。

  • 密度可达:对于对象链: p 1 , p 2 , . . . , p n , p n + 1 p_1,p_2,...,p_n,p_{n+1} p1,p2,...,pn,pn+1是从 p s p_s ps关于Eps和MinPts直接密度可达的,则对象 p n p_n pn是从对象 p 1 p_1 p1关于Eps和MinPts密度可达的。


在这里插入图片描述


常用的评估方法:轮廓系数(Sihouette Coefficient):
在这里插入图片描述

计算样本i到同簇其它样本到平均距离 a i a_i ai a i a_i ai越小,说明样本i越应该被聚类到该簇(将 a i a_i ai称为样本i到簇内不相似度)。
计算样本 i i i到其它某簇 C j C_j Cj的所有样本的平均距离 b i j b_{ij} bij,称为样本 i i i与簇 C j C_j Cj的不相似度。定义为样本i的簇间不相似度: b i = m i n ( b i 1 , b i 2 , . . . , b i k ) b_i=min(b_{i_1},b_{i_2},...,b_{i_k}) bi=min(bi1,bi2,...,bik)

  • S i S_i Si接近1,则说明样本 i i i聚类合理
  • S i S_i Si接近-1, 则说明样本 i i i更应该分类到另外的簇
  • S I S_I SI近似为0, 则说明样本 i i i在两个簇的边界上

(2) Optics算法

OPTICS(Ordering Point To Identify the Cluster Structure),它可视为DBSCAN算法的一种改进算法。与DBSCAN算法相比,OPTICS算法的改进主要在于对输入参数不敏感。

OPTICS算法不显示地生成数据聚类,它只是对数据对象集合中的对象进行排序,得到一个有序的对象列表,其中包含了足够的信息用来提取聚类。事实上,利用该有序的对象列表,还可以对数据的分布和关联作进一步分析。

(3) Denclue算法

4. 基于网格的方法

将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。

特点:处理速度很快,通常这是与目标数据库中记录的个数无关的,只与把数据空间分为多少个单元有关。

(1) Sting算法

(2) Clique算法

(3) Wave-Cluster算法

Wave-Cluster方法的主要思想是把多维数据看作一个多维信号来处理。它首先将数据空间划分成网格结构,然后通过小波变换将数据空间变换成频域空间,在频域空间通过与一个核函数作卷积后,数据的自然聚类属性就显现出来。Wave-Cluster方法是一个多分辨率的算法,高分辨率可以获得细节的信息,低分辨率可以获得轮廓信息。方法的时间复杂度是D(疗),其中疗是数据库中对象的个数。

关联与因果

1. pearson、spearman、kendall等级相关分析

详细介绍

三个相关性系数(pearson, spearman, kendall)反应的都是两个变量之间变化趋势的方向以及程度,其值范围为-1到+1,0表示两个变量不相关,正值表示正相关,负值表示负相关,值越大表示相关性越强。

  1. person correlation coefficient(皮尔森相关性系数)
    在这里插入图片描述
    皮尔森相关系数 = 它们之间的协方差 / 各自标准差的乘积

    缺点:对数据要求比较高;实验数据之间的差距不能太大,也就是说 皮尔森相关性系数受异常值的影响比较大。

  2. spearman correlation coefficient(斯皮尔曼相关性系数)
    在这里插入图片描述

    斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解,这种表征形式就没有了求皮尔森相关性系数时那些限制

    不用管X和Y这两个变量具体的值到底差了多少,只需要算一下它们每个值所处的排列位置的差值,就可以求出相关性系数了

    而且,即便在变量值没有变化的情况下,也不会出现像皮尔森系数那样分母为0而无法计算的情况。另外,即使出现异常值,由于异常值的秩次通常不会有明显的变化(比如过大或者过小,那要么排第一,要么排最后),所以对斯皮尔曼相关性系数的影响也非常小

    由于斯皮尔曼相关性系数没有那些数据条件要求,适用的范围就广多了。生物实验数据分析中,尤其是在分析多组学交叉的数据中说明不同组学数据之间的相关性时,使用的频率很高。

  3. kendall correlation coefficient(肯德尔相关性系数)

    肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。

    分类变量可以理解成有类别的变量,可以分为
    无序的,比如性别(男、女)、血型(A、B、O、AB);
    有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。
    通常需要求相关性系数的都是有序分类变量。

    举个例子。比如评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否一致,这时候就可以使用肯德尔相关性系数进行衡量。
    详细计算案例

2. 典型相关分析

(例:因变量组Y1234,自变量组X1234,各自变量组相关性比较强,问哪一个因变量与哪一个自变量关系比较紧密?)

典型相关分析的基本思想 Canonical Correlation Analysis

  • 通常用来研究多个变量之间的相关关系

首先,CCA研究的是两组变量 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,...,x_n) X=(x1,x2,...,xn) Y = ( y 1 , y 2 , . . . , y n ) Y=(y_1,y_2,...,y_n) Y=(y1,y2,...,yn)之间的相关关系。通常相关系数衡量,如下公式:

ρ x y = C o v ( X , Y ) V a r ( X ) V a r ( Y ) \rho_{xy}=\frac{Cov(X,Y)}{\sqrt{Var(X)}\sqrt{Var(Y)}} ρxy=Var(X) Var(Y) Cov(X,Y)

通过找到任意非零向量 α = ( α 1 , α 2 , . . . , α n ) \alpha=(\alpha_1,\alpha_2,...,\alpha_n) α=(α1,α2,...,αn) β = ( β 1 , β 2 , . . . , β m ) \beta =(\beta_1,\beta_2,...,\beta_m) β=(β1,β2,...,βm)将两组变量线性组合,得:

U = α 1 X 1 + α 2 X 2 + . . . + α n X n = α ‘ X U=\alpha_1X_1+\alpha_2X_2+...+\alpha_nX_n=\alpha^`X U=α1X1+α2X2+...+αnXn=αX
V = β 1 Y 1 + β 2 Y 2 + . . . + β m Y m = β ‘ Y V =\beta_1Y_1+\beta_2Y_2+...+\beta_mY_m=\beta^`Y V=β1Y1+β2Y2+...+βmYm=βY

这样,CCA将研究X和Y的相关问题转换为研究U和V的相关问题,只需要找到 α \alpha α β \beta β使得U和V的相关系数最大即可。

详解

3. 格兰杰因果关系检验

计量经济学,去年的X对今年的Y有没影响

在这里插入图片描述

  • 16
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB数学建模常用模型及编程方法有很多,以下是其中几种常见的模型和编程技巧: 1.线性回归模型:线性回归模型是一种常见的用于建立变量之间线性关系的模型。在MATLAB中,可以使用regress函数进行线性回归建模,并根据建模结果进行参数估计和预测。 2.非线性回归模型:对于非线性关系的建模,可以使用MATLAB中的曲线拟合工具箱。工具箱提供了一系列用于拟合非线性曲线的函数,例如lsqcurvefit和nlinfit函数。根据给定的数据和模型,可以进行参数估计和预测。 3.离散事件模型:离散事件模型是描述离散事件的模型,例如队列、排队等。在MATLAB中,可以使用事件驱动模拟器(discrete-event simulation)来建立离散事件模型。通过定义事件发生的条件和行为,可以模拟和优化离散事件系统。 4.优化模型:优化模型用于解决最优化问题,例如线性规划和非线性规划。MATLAB中提供了多个优化工具箱,例如Optimization Toolbox和Global Optimization Toolbox。可以使用这些工具箱中的函数进行目标函数优化和约束条件的求解。 在MATLAB中进行数学建模时,常用的编程技巧包括: 1.数据处理和可视化:MATLAB提供了丰富的数据处理和可视化函数,可以对数据进行预处理和可视化。例如,可以使用plot函数绘制数据图表,使用histogram函数绘制直方图,使用importdata函数导入数据等。 2.函数定义和调用:在建立数学模型时,需要定义和使用自定义函数。MATLAB中可以使用function关键字来定义函数,并使用函数句柄进行调用。通过良好的函数定义和调用,可以清晰地组织和重用代码。 3.循环和条件语句:MATLAB支持循环和条件语句,用于实现复杂的算法和逻辑。例如,使用for循环可以进行多次迭代计算,使用if条件语句可以根据条件执行不同的操作。 4.向量化编程:MATLAB中的向量化编程可以大幅提高计算效率。通过使用数组和矩阵运算替代循环,可以减少代码行数并提高运算速度。 综上所述,MATLAB数学建模常用模型包括线性回归模型、非线性回归模型、离散事件模型和优化模型等;而常用的编程技巧包括数据处理和可视化、函数定义和调用、循环和条件语句以及向量化编程等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值