超级干货 :一文读懂优化算法

摘要: 数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信。合作与约稿 请加qq:365242293

10-11 10:13 首页 数据分析


一、前言


模拟退火、遗传算法、禁忌搜索、神经网络等在解决全局最优解的问题上有着独到的优点,其中共同特点就是模拟了自然过程。模拟退火思路源于物理学中固体物质的退火过程,遗传算法借鉴了自然界优胜劣汰的进化思想,禁忌搜索模拟了人类有记忆过程的智力过程,神经网络更是直接模拟了人脑。它们之间的联系也非常紧密,比如模拟退火和遗传算法为神经网络提供更优良的学习算法提供了思路。把它们有机地综合在一起,取长补短,性能将更加优良。 这几种智能算法有别于一般的按照图灵机进行精确计算的程序,尤其是人工神经网络,是对计算机模型的一种新的诠释,跳出了冯·诺依曼机的圈子,按照这种思想来设计的计算机有着广阔的发展前景。


二、常用数据处理算法


2.1 灰色关联分析(GM)


2.1.1 简介


灰色理论认为系统的行为现象尽管是朦胧的,数据是复杂的。灰色理论建立的是生成数据模型,不是原始数据模型。所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统,其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息未知,那么这一系统就是灰色系统。一般地说,社会系统、经济系统、生态系统都是灰色系统。例如物价系统,导致物价上涨的因素很多,但已知的却不多,因此对物价这一灰色系统的预测可以用灰色预测方法。


灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测,就是对在一定方位内变化的、与时间有关的灰色过程的预测。尽管过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此这一数据集合具备潜在的规律,灰色预测就是利用这种规律建立灰色模型对灰色系统进行预测。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。


2.1.2 食品价格灰色关联分析


针对食品价格趋势预测,运用灰色关联分析法,深入分析我国的食品价格指数与哪些商品价格有关联,而又在多大程度上影响了CPI的上涨,从而说明影响物价的因素来自多方面的,有粮食生产、流通成本上涨、自然因素、国家调控作用等等,进而说明食品价格是一个动态的经济模型,对预测食品价格变化有一定的作用。


表1 食品价格指数

 

图1 各类食品价格指数变化趋势图


灰色关联分析MATLAB主要程序代码:



2.2 偏最小二乘回归(PLS)


2.2.1 简介


在实际工作中,经常需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量和因变量)去预测另一组变量(常称为因变量和响应变量),除了使用最小二乘准则下的经典多元线性回归分析(MRL)、提取自变量组主成分回归分析(PCR)等方法外,还可以利用近几年发展起来的偏最小二乘(PLS)回归方法。


具体的偏回归流程图如图所示:


图2偏回归流程图


2.2.2 偏最小二乘数据分析


根据体能训练的数据进行最小二乘回归建模,样本为某健身俱乐部20位中年男子身体特征指标,包括体重、腰围和脉搏,如表2所示。


表2 体能训练数据


   在预测图3上,如果所有点都能在图的对角线附近均匀分布,则方程的拟合值与原值差异很小,这个方程的拟合效果就是满意的。


图3 体能训练预测图


MATLAB主要程序代码:



2.3 时间序列(ES)


2.3.1 简介


时间序列数据是指按照时间先后依次排列的观测值所构成的数列,如各年度的国内生产总值、人口数据等。研究时间序列数据模型处理的主要目的是进行数据预测,如预测下一年度的销售额、预测股票价格的走势等。


时间序列的预测方法有很多,一般的处理方法有:


  • 先绘图确定时间序列的类型,再选择适当的预测方法。

  • 平稳序列的预测方法:简单平均法、移动平均法、指数平滑法(1阶,2阶,3阶,…);

  • 非平稳序列的预测方法:指数平滑法和自回归预测、曲线拟合和回归分析等;特别对于含季节趋势的预测方法包括时间序列分解(利用乘法模型先进行趋势预测,再进行季节变动分析,然后用它们的乘积来进行预测)和季节多元回归模型(利用加法模型把趋势和季节放在一个模型中进行回归分析,得到回归方程,然后利用该方程来进行预测)。


2.3.2 食品价格分析


表3  食品零售价格数据


图4鲜菜类食品增长率曲线


MATLAB主要程序代码:



2.4 马尔科夫链(Markov)


2.4.1 简介


马尔科夫链是数学中具有马尔科夫性质的离散时间随机过程。对于离散时间随机过程,在给定当前知识或信息的情况下,过去(即当期以前的历史状态)对于预测将来(即当期以后的未来状态)是无关的。因此马尔科夫链有众多的应用,如人口过程、排队理论、食品价格趋势、统计学应用等。


2.4.2 食品价格趋势预测


MATLAB主要程序代码:



2.5 贝叶斯(Bayes)


2.5.1 简介


贝叶斯统计方法是基于贝叶斯定理而发展起来用于系统地阐述和解决统计问题的方法。贝叶斯统计方法不同于经典统计方法。经典统计方法只利用两种信息:一是模型信息,二是样本信息。然而贝叶斯统计方法的核心是贝叶斯公式。贝叶斯统计方法在统计过程中用到了先验概率分布,即决策者的主观因素。可以说在统计过程中是否使用先验概率分布是区分贝叶斯统计方法和非贝叶斯统计方法的标志。使用不同的先验概率分布对后验概率分布的确定是有影响的。但是贝叶斯学派已经证明,开始时不管使用什么样的先验概率分布,随着实验次数的增多,后验概率分布对初始先验概率分布的依赖会越来越小,后验概率分布最终趋于一致。


贝叶斯(Bayes)预测是一种以贝叶斯统计方法为基础、以贝叶斯定理为理论依据,以动态模型为研究对象的时间序列预测方法。贝叶斯(Bayes)预测方法在统计推断中不仅仅使用了模型信息及样本数据信息,还使用了先验概率分布信息,这也是不同于非贝叶斯统计预测的标志。贝叶斯预测在预测过程中,对总体分布的未知参数预先规定一个先验概率分布,此概率分布可以是根据以前的数据、经验给出,也可以是完全根据决策者的主观意识给出。这样将先验概率分布、总体分布、样本信息通过贝叶斯定理(贝叶斯公式)就可以得到后验概率分布,通过后验概率分布对预测目标进行预测。


贝叶斯网络作为机器学习的一个分支,在处理不确定问题以及复杂系统中多因素间的相互依赖问题时,它具有推论和可视化两方面的独一无二的强壮性。而航班延误正是一个这样的问题,直接影响航班延误的因素有很多,产生延误的间接影响因素较多,部分因素之间还有一定的依赖关系。故贝叶斯网络可作为分析和预测航班延误的方法和手段。


2.5.2 基于贝叶斯网络模式识别



三、神经网络算法


人工神经网络(artificial neural network,ANN)是模仿生物神经网络功能的一种经验模型。生物神经元受到传入的刺激,其反应又从输出端传到相联的其它神经元,输入和输出之间的变换关系一般是非线性的。神经网络是由若干简单(通常是自适应的)元件及其层次组织,以大规模并行连接方式构造而成的网络,按照生物神经网络类似的方式处理输入的信息。模仿生物神经网络而建立的人工神经网络,对输入信号有功能强大的反应和处理能力。人工神经网络需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。


3.1 BP神经网络


3.1.1 简介


BP(Back Propagation)神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。


BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。


具体步骤如下:


  • 初始化,随机给定各连接权及阀值;

  • 由给定的输入输出模式对计算隐层、输出层各单元输出;

  • 计算新的连接权及阀值;

  • 选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。


BP神经网络具有以下优点:


  • 非线性映射能力:BP神经网络实质上实现了一个从输入到输出的映射功能,数学理论证明三层的神经网络就能够以任意精度逼近任何非线性连续函数。这使得其特别适合于求解内部机制复杂的问题,即BP神经网络具有较强的非线性映射能力。

  • 自学习和自适应能力:BP神经网络在训练时,能够通过学习自动提取输出、输出数据间的“合理规则”,并自适应的将学习内容记忆于网络的权值中。即BP神经网络具有高度自学习和自适应的能力。

  • 泛化能力:所谓泛化能力是指在设计模式分类器时,即要考虑网络在保证对所需分类对象进行正确分类,还要关心网络在经过训练后,能否对未见过的模式或有噪声污染的模式,进行正确的分类。也即BP神经网络具有将学习成果应用于新知识的能力。

  • 容错能力:BP神经网络在其局部的或者部分的神经元受到破坏后对全局的训练结果不会造成很大的影响,也就是说即使系统在受到局部损伤时还是可以正常工作的。即BP神经网络具有一定的容错能力。


3.1.2 BP神经网络的语音信号识别


语音特征信号识别是语音识别研究领域中的一个重要方面,一般采用模式匹配的原理解决。语音识别的运算过程为:首先,待识别语音转化为电信号后输入识别系统,经过预处理后用数学方法提取语音特征信号,提取出的语音特征信号可以看成该段语音的模式。然后将该段语音模型同已知参考模式相比较,获得最佳匹配的参考模式为该段语音的识别结果。语音识别流程如图5所示。

图5语音识别流程图


MATLAB主要程序代码:



3.1.3 人脸方向预测


  • 首先提取特征数据;

  • BP神经网络进行数据训练、预测、检验;


MATLAB主要程序代码:



3.1.4 蝴蝶花分类预测


算法步骤:


  • 初始化数据,设定各层节点数、学习效率等值;

  • 输入层FA输入样品,计算出隐层FB活动;

    b(ki)=logsig(a*V(:,ki)+Pi(ki))

  • 计算出输出层FC活动;

    c(kj)=logsig(b*W(:,kj)+Tau(kj))

  • 网络输出和期望输出相比较,计算出输出层FC的错误;

    d=c.*(1-c).*(ck-c)

  • 反传,计算出隐层FB的错误;

    e=b.*(1-b).*(d*W)

  • 修改FC层和FB之间的权值wij;

    DeltaW(ki,kj)=Alpha*b(ki)*d(kj)+Gamma*DeltaWOld(ki,kj)

    W=W+DeltaW

  • 修改FA层和FB之间的权值vhj;

    DeltaV(kh,ki)=Beta*a(kh)*e(ki)

    V=V+DeltaV

  • 修改偏差。


MATLAB主要程序代码:



3.2 自组织特征映射神经网络(SOM)


3.2.1 简介


1981年芬兰Helsink大学的T.Kohonen教授提出一种自组织特征映射网,简称SOM网,又称Kohonen网。生物神经系统中,存在一种“侧抑制”现象,即一个神经细胞兴奋后,通过它的分支会对周围其他神经细胞产生抑制。由于侧抑制的作用,各细胞之间相互竞争的最终结果是:兴奋作用最强的神经细胞所产生的抑制作用战胜了周围所有其他细胞的抑制作用而“赢”了,其周围的其他神经细胞则全“输”了。


自组织特征映射神经网络(Self-organizing Feature Maps)简称SOFM或者SOM,也是一种无导师学习的网络,主要用于对输入向量进行区域分类。和自组织竞争网络不同的是,它不但识别输入区域临近的区域,还研究输入向量的分布特性和拓扑特性结构。SOM网络模拟大脑神经系统自组织特征映射的功能,是一种竞争型网络,并在学习中能无导师进行自组织学习。脑神经学研究结果表明:神经元之间的信息交互具有的共同特征是:最近邻的两个神经元互相激励,较远的神经元互相抑制,更远的则又具有较弱的激励作用。


3.2.2 柴油机故障分类


应用SOM神经诊断网络柴油机故障的步骤如下:


  • 选取标准故障样本;

  • 对每一种标准故障样本进行学习,学习结束后,对具有最大输出的神经元标以该故障的记号;

  • 将待检样本输人到SOM神经网络中;

  • 若输出神经元在输出层的位置与某标准故障样本的位置相同,说明待检样本发生了相应的故障;若输出神经元在输出层的位置介于很多标准故障之间,说明这儿种标准故障都有可能发生,且各故障的程度由该位置与相应标准故障样本位置的欧氏距离确定。


MATLAB主要程序代码:



3.3 Hopfield网络


3.1.1 简介


Hopfield网络是神经网络发展历史上的一个重要的里程碑。由美国加州理工学院物理学家J.J.Hopfield教授于1982年提出,是一种单层反馈神经网络。1984年,Hopfield设计并研制了网络模型的电路,并成功地解决了旅行商(TSP)计算难题(优化问题)。


Hopfield网络是一种互连型网络,它引入类似于切Lyapunov函数的能量函数概念,在满足条件的情况下,某种“能量函数”的能量在网络运行过程中不断地减少,最后趋于稳定的平衡状态。对于一个非线性动力学系统,系统的状态从某一初值出发经过演变后可能有如下几种结果:渐进稳定点(吸引子)、极限环、混沌、状态发散。因为人工神经网络的变换函数是一个有界函数,故系统的状态不会发生发散现象。


目前,人工神经网络经常利用渐进稳定点来解决某些问题。如果把系统的稳定点视为一个记忆的话,那么从初态朝这个稳定点的演变过程就是一个寻找记忆的过程。如果把系统的稳定点视为一个能量函数的极小点,而把能量函数视为一个优化问题的目标函数,那么从初态朝这个稳定点的演变过程就是一个求解该优化问题的过程。因此,HoPfield神经网络的演变过程是一个计算联想记忆或求解优化问题的过程。实际上,它的解决并不需要真的去计算,而是通过构成反馈神经网络,适当地设计其连接权和输入就可以达到这个目的。


Hopfield神经网络模型是一种循环神经网络,从输出到输入有反馈连接。在输入的激励下,会产生不断的状态变化。对于一个Hopfield网络来说,关键是在于确定它在稳定条件下的权系数。反馈网络有稳定的,也有不稳定的。对于Hopfield网络来说,如何判别其稳定性也是需要确定的。


分类:


  • 离散Hopfield网络(DHNN)

    对于离散Hopfield网络(DHNN)而言,神经元的输出只取1和0,分别表示神经元处于激活和抑制状态。

  • 连续Hopfield网络(CHNN)

    对于连续Hopfield网络(CHNN)而言,拓扑结构和DHNN的结构相同。不同之处在于其函数g不是阶跃函数,而是S形的连续函数。


3.1.2 Hopfield数字识别


用离散Hopfield网络,使其具有联想记忆功能,能正确识别阿拉伯数字,当数字被噪声污染后仍可以正确地识别。基于DHNN的数字识别:


图6离散Hopfield网络算法设计流程图


MATLAB主要程序代码:



3.4 模糊RBF网络


3.4.1 简介


RBF网络的学习过程与BP网络的学习过程类似,两者的主要区别在于各使用不同的作用函数。BP网络中隐层使用的是Sigmoid函数,其值在输入空间中无限大的范围内为非零值,因而是一种全局逼近的神经网络;而RBF网络中的作用函数是高斯基函数,其值在输入空间中有限范围内为非零值,因为RBF网络是局部逼近的神经网络。


RBF网络是一种3层前向网络,由输入到输出的映射是非线性的,而隐层空间到输出空间的映射是线性的,而且RBF网络局部逼近的神经网络,因而采用RBF网络大大加快学习速度并避免局部极小问题,适合于实时控制的要求。采用RBF网络构成神经网络控制方案,可有效提高系统的精度、鲁棒性和自适应性。


3.4.2 基于模糊RBF的网络逼近


利用模糊RBF网络逼近下列函数:

图7模糊RBF网络逼近效果


MATLAB主要程序代码:




四、智能算法


4.1 遗传算法(GA)


4.1.1 简介


遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机优化搜索方法。它是由美国的J. Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。


由于遗传算法的整体搜索策略和优化搜索方法在计算时不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,所以广泛应用于许多科学。


随着应用领域的扩展,遗传算法的研究出现了几个引人注目的新动向:


  • 基于遗传算法的机器学习,这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的崭新的机器学习算法。这一新的学习机制对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。


  • 遗传算法正日益和神经网络、模糊推理以及混沌理论等其它智能计算方法相互渗透和结合,这对开拓21世纪中新的智能计算技术将具有重要的意义。


  • 并行处理的遗传算法的研究十分活跃。这一研究不仅对遗传算法本身的发展,而且对于新一代智能计算机体系结构的研究都是十分重要的。


  • 遗传算法和另一个称为人工生命的崭新研究领域正不断渗透。所谓人工生命即是用计算机模拟自然界丰富多彩的生命现象,其中生物的自适应、进化和免疫等现象是人工生命的重要研究对象,而遗传算法在这方面将会发挥一定的作用。


  • 遗传算法和进化规划(Evolution Programming,EP)以及进化策略(Evolution Strategy,ES)等进化计算理论日益结合。EP和ES几乎是和遗传算法同时独立发展起来的,同遗传算法一样,它们也是模拟自然界生物进化机制的智能计算方法,即同遗传算法具有相同之处,也有各自的特点。目前,这三者之间的比较研究和彼此结合的探讨正形成热点。


遗传算法的特点:


  • 遗传算法从问题解的串集开始嫂索,而不是从单个解开始。这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。


  • 许多传统搜索算法都是单点搜索算法,容易陷入局部的最优解。遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。


  • 遗传算法基本上不用搜索空间的知识或其它辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这一特点使得遗传算法的应用范围大大扩展。


  • 遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导他的搜索方向。


  • 具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更适应环境的基因结构。


4.1.2 基于遗传算法的公交排班系统分析


由于城市交通设施建设滞后于交通需求的增长速度,使城市交通状况日趋恶化,在主要交通道口和某些流量集中的道路上,不同程度地出现交通阻塞现象,城市交通问题已成为制约城市发展的一个瓶颈。运营车辆智能排班问题是公交车辆智能调度需要解决的典型问题之一,在智能交通系统(ITS)的背景下,公交车发车时刻表的制定是城市公交调度的核心内容,是公交调度日常指挥车辆正常运行的重要依据,也是公交调度人员和司乘人员进行工作的基本依据。合理的公交发车时刻表可以帮助公交企业提高车辆利用效率、降低运营成本和减少乘客的等车时间以提高服务质量等。

 

 图8 随时间变化的发车频率图


MATLAB主程序代码:



4.2 基本粒子群算法(PSO)


4.2.1 简介


粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体的随机优化技术。与其它基于群体的进化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是:进化计算遵循适者生存原则,而PSO模拟社会。将每个可能产生的解表述为群中的一个微粒,每个微粒都具有自己的位置向量和速度向量,以及一个由目标函数决定的适应度。所有微粒在搜索空间中以一定速度飞行,通过追随当前搜索到的最优值来寻找全局最优值。


PSO模拟社会采用了以下三条简单规则对粒子个体进行操作:


  • 飞离最近的个体,以避免碰撞。

  • 飞向目标。

  • 飞向群体的中心。这是粒子群算法的基本概念之一。


粒子群算法其基本思想是受许多鸟类的群体行为进行建模与仿真研究结果的启发。Frank Heppner的鸟类模型在反映群体行为方面与其它类模型有许多相同之处。由于鸟类用简单的规则确定自己的飞行方向与飞行速度(实质上,每只鸟都试图停在鸟群中而又不相互碰撞),当一只鸟飞离鸟群而飞向栖息地时,将导致它周围的其他鸟也飞向栖息地。这些鸟一旦发现栖息地,将降落在此,驱使更多的鸟落在栖息地,直到整个鸟群都落在栖息地。粒子群算法与其它的进化类算法类似,也采用“群体”和“进化”的概念,同样也根据个体的适应值大小进行操作。不同的是,PSO中没有进化算子,而是将每个个体看作搜索空间中没有重量和体积的微粒,并在搜索空间中以一定的速度飞行,该飞行速度由个体飞行经验和群体的飞行经验进行动态调整。


4.2.2 基于人工免疫PSO的聚类算法


聚类分析指将物理或抽象对象的集合分组成为由类似的对象组成的多个类的分析过程。聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括数学,计算机科学,统计学,生物学和经济学。在不同的应用领域,很多聚类技术都得到了发展,这些技术方法被用作描述数据,衡量不同数据源间的相似性,以及把数据源分类到不同的簇中。


聚类分析作为数据挖掘中的一个很重要的研究领域,有着许多不同的聚类算法。传统的聚类算法一般分为五类:层次方法、划分方法、基于网格方法、基于密度方法和基于模型方法。


传统的聚类算法已经足够成熟,能够解决低维数据的聚类问题。但因为实际应用中数据的复杂性,处理许多问题时,现有的算法容易失效,特别是对高维数据和大型数据等情况。因此传统聚类在高维数据集中进行聚类时,主要存在以下两个问题:


  • 高维数据集中大量存在无关的属性使得在所有维中存在簇的可能度几乎为零;

  • 高维空间中数据较低维空间中数据分布要稀疏,其中数据间距离几乎相等是普遍现象,而传统聚类方法是基于距离进行聚类的,因此传统聚类方法在高维空间数据分析较吃力。


人工免疫特性分析:多样性是免疫系统的重要特征之一,研究表明,通过细胞分裂分化作用,抗体的可变区与不变区基因重组,体细胞超变异等方式,免疫系统可产生大量的不同抗体来抵御各种抗原,从而使免疫抗体库具有丰富的多样性。在使用人工免疫系统来求最优解的问题时,一般用抗原表示满足约束条件的最优解,抗体表示候选解,用抗体和抗原之间的亲和力来表示候选解和最优解的接近程度,也就是在约束条件下候选解对于目标函数的满足程度;而抗体和抗体之间的亲和力可反映出不同候选解之间的差异,即抗体的多样性。从而防止算法陷入局部最优。


通过比较抗体与抗原间的亲和力来选择有效抗体更好地体现了“优胜劣汰”的原则,特别是当待选抗体之间相差不明显时,“优胜劣汰”的效果更能得到体现,搜索效率会更高.而免疫记忆的引入能够有效地抑制进化算法优化过程中出现的退化现象,提高进化算法的性能。免疫接种即是免疫记忆引入的一个方面,有选择、有目的地利用待求问题中的一些特征信息或知识,提取“疫苗”并接种“疫苗”,从而达到引进的目的。


基于人工免疫粒子群的聚类算法,这将使得聚类算法具有很好的全局收敛性,不仅能够有效地克服传统聚类算法对初始值敏感和易陷入局部极小值的问题,并且使得算法具有更快的收敛速度。


在粒子群算法求解聚类问题中,每个粒子作为一个可行解组成粒子群(即解集)。根据解的含义不同,通常可以分为两种:一种是以聚类结果为解;一种是以聚类中心集合为解。基于人工免疫粒子群算法讨论的方法采用的是基于聚类中心集合作为粒子对应解,也就是每个粒子的位置是由 M 个聚类中心组成,M 为已知的聚类数目。

图9粒子群聚类算法流程图


MATLAB主程序代码:



4.3 蚁群算法(ACO)


4.3.1 简介


最初提出的AS有三种版本:Ant density、Ant quantity和Ant cycle。在Ant density和Ant quantity中蚂蚁在两个位置节点间每移动一次后即更新信息素,而在Ant cycle中当所有的蚂蚁都完成了自己的行程后才对信息素进行更新,而且每只蚂蚁所释放的信息素被表达为反映相应行程质量的函数。


较早的一种改进方法是精英策略(Elitist Strategy),其思想是在算法开始后,即对所有已发现的最好路径给予额外的增强,并将随后与之对应的行程记为Tgb(全局最有行程)。当进行信息素更新时,对这些行程予以加权,同时将经过这些行程的蚂蚁记为“精英”,从而增大较好行程的选择机会。这种改进型算法能够以更快的速度获得更好的解,但是若选择的精英过多则算法会由于较早的收敛于局部次优解而导致搜索中的过早停滞。


蚁群算法是一种新型的模拟进化算法,鉴于目前国内尚缺乏这一方面的研究,其研究刚刚开始,远未像遗传算法、模拟退火算法等算法那样行程系统的分析方法和坚实的数学基础,有许多问题有待进一步研究,如算法的收敛性、理论依据等更多细致的工作还有待于进一步展开。


单只蚂蚁的行为极其简单,但由这样的单个简单个体所组成的蚁群群体却表现出及其复杂的行为,如:在蚂蚁运动路径上突然出现障碍物时,蚂蚁能够很快重新找到最优路径。像蚂蚁这类群居昆虫,虽然没有视觉,却能找到由蚁穴到食物源的最短路径,究其愿意,马一个题之间通过一种称之为信息素(pheromone)的物质进行信息传递,从而能相互协作,完成复杂的任务。蚂蚁之所以表现出复杂有序的行为,个体之间的信息交流和相互协作起着重要作用。


蚂蚁在运动过程中,能够在它所过的路径上留下该物质,并以此指导自己的运动方向。蚂蚁倾向于朝着该物质强度高的方向移动。因此,由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反馈现象:某一路径上走过的蚂蚁越多,则后者选择该路径的概率约大。蚂蚁个体之间就是通过这种信息的交流达到搜索实物的目的。这里,用一个形象化的图示来说明蚂蚁群体的路径搜索原理和机制。


4.3.2 基于ACO的TSP求解


旅行商问题(Traveling Salesman Problem,简称TSP),也称货郎担问题,是数学领域中的著名问题之一。TSP问题已经被证明是一个NP-hard问题,由于TSP问题代表一类组合优化问题,因此对其近似解的研究一直是算法设计的一个重要问题。该问题的求解算法主要分为两类。一类是与问题特征相关的启发式搜索算法。主要有动态规划法、分支界定法等。另一类是独立于问题的智能优化算法,如模拟退火法、禁忌搜索法、蚁群算法、遗传算法、粒子群算法等。


蚁群算法利用了信息素进行传递信息,而粒子群优化算法利用了本身信息、个体极值信息和全局极值3个信息,来指导粒子下一步迭代位置。蚁群算法利用正反馈原理和某种启发式算法的有机结合,容易出现早熟现象以及陷入局部最优解。混合的思路是让蚂蚁也具有“粒子”的特性,首先蚂蚁按照蚁群算法,完成一次遍历后,再让蚂蚁根据局部最优解和全局最优解进行调整。


调整思路如下:对于旅行商问题,其当前的位置是基本路径,让当前解与个体极值和全局极值分别作交叉操作,产生的解为新的位置,再做变异操作。


图10 ACO优化下的TSP求解


MATLAB主程序代码:



4.4 模拟退火算法(SA)


4.4.1 简介


模拟退火算法的思想来源于对固体退火降温过程的模拟。即将固体加温至充分高,再让其徐徐冷却。在加热固体时,固体中原子的热运动不断增强,内能增大,随着温度的不断升高,固体的长程有序被彻底破坏,固体内部粒子随温度的升高而变为无序状。冷却时,粒子逐渐趋于有序,在每个温度下都达到平衡状态,最后在常温下达到基态,同时内能也减为最小。


在实际应用中,将内能模拟为目标函数值 f,将温度 T 模拟为控制参数,然后从一给定解开始,从其邻域中随机产生一个新解,接受准则允许目标函数在一定范围内接受使目标函数恶化的解,算法持续进行“产生新解——计算目标函数差——判断是否接受新解——接受或舍弃”的迭代过程,对应着固体在某一恒定温度下趋于热平衡的过程。经过大量的解变化后,可以求得给定控制参数 T 值的时候优化问题的相对最优解。然后减小控制参数 T 的值,重复执行上述迭代过程。当控制参数逐渐减小并趋于零时,系统也越来越趋于平衡状态,最后系统状态对应于优化问题的整体最优解。


4.4.2 基于模拟退火的粒子群算法


基于模拟退火的微粒群算法中的微粒群算法采用带压缩因子的PSO优化算法,Clerc和Kennedy提出的带压缩因子的PSO优化算法通过选取合适参数,可确保PSO算法的收敛性,并可取消对速度的边界限制。速度和位置更新公式如下:


突跳概率:


MATLAB主程序代码:



4.5 人群搜索算法(SOA)


4.5.1 简介


人群搜索算法SOA(Seeker Optimization Algorithm)是对人的随机搜索行为进行分析,借助脑科学、认知科学、心理学、人工智能、多Agents系统、群体智能等的研究成果,分析研究人作为高级Agent的利己行为、利他行为、自组织聚集行为、预动行为和不确定性推理行为,并对其建模用于计算搜索方向和步长。由于SOA直接模拟人的智能搜索行为,立足传统的直接搜索算法,概念明确、清晰、易于理解,是进化算法研究领域的一种新型群体智能算法。SOA算法有以下几种行为:利己行为、利他行为、预动行为、不确定推理行为等。


利己行为:智能群体是存在于自然界的社会群体,他们通过相互协作完成日常所需的各项任务,人类智能来自于社会交流,人类社会无疑也是一个智能群体。协作行为有两种相互对立的形式:一种是利己行为,完全遵循自我优先原则;另一种是利他行为,遵循群体优先原则。作为智能群体中的一个独立智能体,每个搜寻者都一样地具有利己行为,相信自己的经验,并通过认知学习倾向于向自己的历史最佳位置移动。


利他行为:作为智能群体内的个体,每个搜寻者同样具有利他行为。利他行为意味着智能群体内的个体相互合作,互通信息,分享群体的社会经验,不断调整各自的行为以达到一个共同的目标,这种达到共同目标的利他行为在空间的移动就表现为自组织聚集行为。聚集行为是自然界中从单细胞生物到社会性昆虫和哺乳动物的一种基本自组织行为,它的正反馈通常表现为向一个给定的信号源汇集。


一般的优化问题往往是一个全局最小值事先并不知道的“黑箱”问题,这样,邻域历史或当前最佳位置就成了该邻域内所有搜寻者向其聚集的“信号源”。正因如此,每个搜寻者都具有群体优先的搜索策略,采取自组织聚集行为通过社会学习倾向于向邻域历史或当前最佳位置移动。


预动行为:智能体能够展现目标导向的行为,主动地执行某种操作或者任务。此外,过去的行为及其由此产生的结果可以预测和指导未来行为。因此,搜寻者能够根据自己过去的行为和环境的反馈,自适应地采取主动措施,实时地,灵活地改变搜索策略,展现目标导向的预动行为。


不确定性行为:不确定性,是人类社会现象的基本属性。人类的认知过程是通过语言和思维进行的,人类依托语言进行思维;自然语言是人类的思维基础,是人类智能的体现。模糊系统正是基于模拟人类利用自然语言来描述


复杂系统的需要提出的,模糊控制规则就是人类控制行为的语言模型;人类思维具有普遍模糊性的现象表明,模糊逻辑在描述人类思维方面扮演了重要的角色。


4.5.2  基于SOA的PID整定


PID控制是典型的工业控制之一,对于PID控制,主要难点在于PID的参数整定,现用的工业控制中,PID参数整定多依赖于经验法,根据不断的调试,试得出一个较为合理的PID参数,达到系统的要求。随着智能算法的出现,一些例如SOA、PSO、GA算法等,鲁棒性较好,能够为系统PID参数整定,提供参考依据,使得系统收敛于最佳状态。


图11  PID控制系统框


MATLAB主要程序代码:



4.6 人工蜂群算法(ABC)


4.6.1 简介


自然界中的群居昆虫,它们虽然个体结构简单,但是通过个体间的合作却能够表现出极其复杂的行为能力。受这些社会性昆虫群体行为的启发,研究者通过模拟这些群体的行为提出了群集智能算法。这些群集智能算法的出现,使得一些比较复杂且难于用经典优化算法进行处理的问题得到了有效的解决,同时这些算法已不断地运用于解决实际问题,在很多领域得到了广泛的应用,如调度问题,人工神经网络,组合优化问题等工程领域。

人工蜂群算法(Artificial Bee Colony algorithm,ABC)是一种模拟蜜蜂采蜜行为的群集智能优化算法,它为解决存在于科学领域的全局优化问题提供了一种新的方法。由于它具有控制参数少、易于实现、计算简单等优点,已经被越来越多的研究者所关注。


4.6.2 基于人工蜂群算法的函数优化分析


函数:


MATLAB主程序代码:



4.7 万有引力搜索算法(GSA)


4.7.1 简介


万有引力搜索算法(Gravitational Search Algorithm,GSA)是由伊朗克曼大学的Esmat Rashedi等人于2009年所提出的一种新的启发式优化算法,其源于对物理学中的万有引力进行模拟产生的群体智能优化算法。万有引力搜索算法GSA的原理是通过将搜索粒子看作一组在空间运行的物体,物体间通过万有引力相互作用吸引,物体的运行遵循动力学的规律。适度值较大的粒子其惯性质量越大,因此万有引力会促使物体们朝着质量最大的物体移动,从而逐渐逼近求出优化问题的最优解。


万有引力搜索算法GSA具有较强的全局搜索能力与收敛速度。随着GSA理论研究的进展,其应用也越来越广泛,逐渐引起国内外学者的关注。但是万有引力搜索算法GSA与其他全局算法一样,存在易陷入局部解,解精度不商等问题,有很多待改进之处。本章将着重向广大编程爱好者介绍最基本的万有引力算法,各编程科研人员可以基于本章算法加以改进并应用到实际案例中。


4.7.2 基于万有引力算法函数优化


函数:


MATLAB主程序代码:



4.8 细菌觅食算法(BFOA)


4.8.1 简介


实际生活需求促进了最优化方法的发展。近半个多世纪以来,由于传统优化方法的不足,一些具有全局优化性能且通用性强的进化算法,因其高效的优化性能、无需问题精确描述信息等优点,受到各领域广泛的关注和应用。其中产生最早也最具代表性的进化算法是20世纪70年代源于达尔文自然选择学说和孟德尔遗传变异理论的遗传算法(Genetic Algorithm,GA)。而近年来,人们模拟自然界生物群体行为产生出一系列群体智能优化算法,如Dorigo等通过模拟蚂蚁的寻径行为于1991年提出了蚁群优化算法(Ant Colony Optimization,ACO);Eberhart和Kennedy通过模拟鸟群捕食行为于1995年提出了粒子群优化算法(Particle Swarm Optimization,PSO)。


这些算法被广泛应用于工程领域并取得了显著的成果。随着群体智能优化算法的蓬勃发展,Passino于2002年提出了模拟人类大肠杆菌觅食行为的细菌觅食优化算法(Bacteria Foraging Optimization Algorithm,BFOA),为仿生进化算法家族增添了新成员。


4.8.2 基于细菌觅食算法函数优化


函数:


MATLAB主程序代码:



4.9 匈牙利算法


4.9.1 简介


1955年,库恩(w·w·Kuhn)提出了匈牙利算法,它是一种关于指派问题的求解方法。匈牙利算法引用了匈牙利数学家康尼格(D.konig)的一个关于矩阵中独立0元素个数的定理:矩阵中独立0元素的个数等于能够覆盖所有0元素的最少直线数。


匈牙利算法的基本思想是修改效益矩阵的行或列,使得每一行或列中至少有一个为零的元素,经过修正后,直至在不同行、不同列中至少有一个零元素,从而得到与这些零元素相对应的一个完全分配方案。


当它用于效益矩阵时,这个完全分配方案就是一个最优分配,它使总的效益为最小。这种方法总是在有限步内收敛于一个最优解。该方法的理论基础是:在效益矩阵的任何行或列中,加上或减去一个常数后不会改变最优分配。其求解步骤如下:


第一步,修正效益矩阵,使之变成每一行和每一列至少有一个零元素的缩减矩阵:


  • 从效益矩阵的每一行元素减去各该行中最小元素;

  • 再从所得缩减矩阵的每列减去各该列的最小元素。


第二步,试制一个完全分配方案,它对应于不同行不同列只有一个零元素的缩减矩阵,以求得最优解:


  • 如果得到分布在不同行不同列的N个零元素,那么就完成了求最优解的过程。结束。

  • 如果所分布于不同行不同列中的零元素不够N个,则转下步。


第三步,作出覆盖所有零元素的最少数量的直线集合:


  • 标记没有完成分配的行。

  • 标记已标记行上所有未分配零元素所对应的列。

  • 对标记的列中,已完成分配的行进行标记。

  • 重复(2)、(3)直到没有可标记的零元素。

  • 对未标记的行和已标记的列画纵、横线,这就得到能覆盖所有零元素的最少数量的直线集合。


第四步,修改缩减矩阵,以达到每行每列至少有一个零元素的目的:


  • 在没有直线覆盖的部分中找出最小元素。

  • 对没有画直线的各元素都减去这个元素。

  • 对画了横线和直线交叉处的各元素都加上这个最小元素。

  • 对画了一根直线或横线的各元素保持不变。

  • 转第二步。


4.9.2 基于匈牙利算法的指派问题优化


指派问题的数学模型:

 

MATLAB主程序代码:



4.10 鱼群算法


4.10.1 简介


有学者研究发现,有些鱼群的形状随着其行为的改变而改变,鱼群在缓慢游泳时成两端变细的形状,在捕食猎物时,鱼群形状为圆形,鱼群在防御时,则鱼群成密集的形状或包围捕食鱼的形状,在受到进一步威吓时会潜入深处。


鱼类的活动中,觅食行为、聚群行为、追尾行为和随机行为与我们的待寻优函数问题有着较密切的关系,如何利用简便有效的方式来构造并实现这些行为将是工鱼群算法主要面临的问题。


觅食行为是一种鱼群循着食物多的方向游动的行为,在寻优过程中则是向较优方向前进。


在聚群行为中,为了保证生存和躲避危害,鱼会自然地聚集成群。鱼聚群时所遵守的规则有3条:


  • 分隔规则,尽量避免与临近伙伴过于拥挤;

  • 对准规则,尽量与临近伙伴的平均方向一致;

  • 内聚规则,尽量朝临近伙伴的中心移动。


追尾行为就是一种向临近的最活跃者追逐的行为,在寻优算法中可以理解为是向附近的最优伙伴前进的过程。


4.10.2 鱼群算法函数优化


MATLAB主程序代码:



五、优化算法相关著作


[1]     张永礼, 董志良, 安海岗. 神经网络优化算法在技术经济领域中的应用[M]. 冶金工业出版社, 2015.

[2]     李子辉. 基于智能优化算法的复杂车间调度问题研究[M]. 信息工程与自动化学院, 2015.

[3]     李爱国, 覃征. 粒子群优化算法[M]. 黑龙江人民出版社, 2015.

[4]     李士勇, 李研. 智能优化算法原理与应用[M]. 哈尔滨工业大学出版社, 2012.

[5]     张学良, 刘丽琴. 智能优化算法及其在机械工程中的应用[M]. 国防工业出版社, 2012.

[6]     王超学. 智能优化算法与应用[M]. 西北大学出版社, 2012.

[7]     雷秀娟. 群智能优化算法及其应用[M]. 科学出版社, 2012.

[8]     崔志华. 微粒群优化算法[M]. 科学出版社, 2011.

 

作者介绍

谢旺:数据派研究部志愿者,新疆大学机械工程学院工程硕士在读。对工业大数据、智能制造比较感兴趣,主要从事复杂制造系统建模与仿真,风险识别、传播动力学研究,故障预测,调度优化。


本文转自:数据派THU 公众号;

END


推荐:

优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。

扫描下方二维码或点击“ 阅读原文 ,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会!

关联阅读

原创系列文章:

1:从0开始搭建自己的数据运营指标体系(概括篇)

2 :从0开始搭建自己的数据运营指标体系(定位篇)

3 :从0开始搭建自己的数据运营体系(业务理解篇)

4 :数据指标的构建流程与逻辑

5 :系列 :从数据指标到数据运营指标体系

6:   实战 :为自己的公号搭建一个数据运营指标体系

7:  从0开始搭建自己的数据运营指标体系(运营活动分析)

数据运营 关联文章阅读:  

运营入门,从0到1搭建数据分析知识体系    

推荐 :数据分析师与运营协作的9个好习惯

干货 :手把手教你搭建数据化用户运营体系

推荐 :最用心的运营数据指标解读

干货 : 如何构建数据运营指标体系

从零开始,构建数据化运营体系

干货 :解读产品、运营和数据三个基友关系

干货 :从0到1搭建数据运营体系

数据分析、数据产品 关联文章阅读:

干货 :数据分析团队的搭建和思考

关于用户画像那些事,看这一文章就够了

数据分析师必需具备的10种分析思维。

如何构建大数据层级体系,看这一文章就够了

干货 : 聚焦于用户行为分析的数据产品

如何构建大数据层级体系,看这一文章就够了

80%的运营注定了打杂?因为你没有搭建出一套有效的用户运营体系

从底层到应用,那些数据人的必备技能

读懂用户运营体系:用户分层和分群

做运营必须掌握的数据分析思维,你还敢说不会做数据分析


首页 - 数据分析 的更多文章: