爆炸式算法
⑴ 优化算法笔记(十二)烟花算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
烟花算法(Firework Algorithm,FWA)是一种受烟花爆炸产生火星,并继续分裂爆炸这一过程启发而得出的算法。算法的思想简单,但具体实现复杂。算法提出时间并不长,但是已经有了不少的改进研究和较为全面的应用。
烟花算法中,每一个烟花的位置都代表了一个可行解。烟花的爆炸产生的火星有两种,正常的火星与特别的火星。每个火星都会爆炸产生数个正常火星,某些火星有一定的概率产生一个特别的火星。正常的火星根据当前火星的振幅随机均匀分布在该火星的周围,而特别的火星将在当前火星附近以正态分布方式产生。每次迭代产生的火星数量多于每一代应有的火星数,算法将参照火星位置的优劣,随机留下指定数量的火星,已保持火星数目的稳定。
烟花算法的主角毫无疑问就是烟花了。
式(1)为适应度值越小越优的情况,而式(2)则是适应度值越大越优的情况。 为一个极小的值,以保证分母不为0。
每个火星产生的正常火星数量也由其适应度值来决定。
其中 表示第i个火星将要产生的正常火星数, 是产生正常火星的总数为一个常数,从式(3),(4)可以看出适应度值越好的火星能够产生更多的正常火星,反之,火星适应度越差,能够产生的火星数越少。
由于式(3),(4)计算出的值为小数,烟花算法中使用式(5)将其转化为整数。
从式(3)和式(4)中可以看出,在每一代中将会产生出 个正常火星。产生的正常火星的位置与当前火星的振幅有关,可以从式(1),(2)看出,适应度越优的火星的振幅越小,那么它产生的正常火星将在它自己周围,而适应度越差的火星的振幅越大,它产生的正常火星将会出现在离自己较远的位置。
当前火星每次爆炸会从D维搜索空间内随机选择z维进行更新从而产生新的火星。正常火星的位置由如下公式产生。
其中z为取值1-D的均匀随机正整数,rand(-1,1)表示-1到1内的均匀随机数。从式(6)中可以看出,正常火星的位置与其振幅有直接关系,振幅越大产生的新火星距当前火星的距离约远。
每次迭代过程中,会产生m个特别的火星,即在这N个火星中随机选择m个火星,每个火星产生一个特别的火星。特别的火星的由下面的公式产生:
由上面的过程可知,在每一代中,有N个火星,将会产生出 个正常火星以及m个特别的火星。但是每一代中只能从这 个火星中选择N个火星保留至下一代。
每次会先从 个火星中选择最优的火星保留至下一代,然后再从中选择N-1个火星。选择某个火星的概率如下:
其中R(X)表示该火星距其他所有火星的距离之和,即距其它火星越远的火星,被选择保留至下一代的概率较大。
个火星,而且
,所有烟花算法每次迭代的计算复杂度要大于其他算法,这简直就是一个作弊行为。别的算法每次只搜索了N个位置,而烟花算法却搜索了 个位置。与其他优化算法对比时,其他算法的种群数量应该取 ,否则这将是一场不公正的对决。
适应度函数还是这个简单的小白鼠
实验一 :标准烟花算法
以上数据来自原论文,现在看一看实验的图像以及实验结果。
从图像可以看出每次只选择保留了5个火星,它们的收敛速度很慢,实验结束时距离目标点还有一段距离。
看看实验结果
从实验结果可以看出,算法的性能很不稳定,而造成这一点的原因很可能是其收敛速度较慢,算法仍在收敛过程中,所以结果看上去很差。将最大迭代次数修改为100代,重新试验,其结果如下:
结果好了一些但还是难以接受,为什么烟花算法的结果不理想呢?
原因可能是保留机制(2.3节)的问题,烟花算法中保留火星的概率是根据该火星与其他火星的距离和,距离群体越大的个体被保留下的概率越大。这样做有什么好处呢?好处是火星相对分散,这是一个对抗局部最优的策略,但是,距离群体较远的个体是一个较差的个体的概率非常大,坏处就是,集中于当前最优位置的火星被保留的概率较小,算法的局部搜索能力将较弱。
实验二 . 随机选择的方式保留火星
为了加快烟花算法的收敛速度,增强局部搜索能力,我移除了标准烟花算法的选择过程,使用随机选择的方式保留火星,当然,最优个体依然会被保留至下一代。其他参数保持不变。
可以看出这次的图像相比实验一收敛速度快了不少,在迭代结束时已经相对在一个较小的区域。这次的结果也明显优于实验一。将选择过程改为随机选择后,由于较优的火星产生的较多且分布在自己周围,因此选择到这些较优的火星的概率也相对较大,算法的收敛速度相对较快。与此同时,算法跳出局部最优的能力比修改前要弱。
对于较简单的问题来说当然是随机选择收敛较快结果较好,而复杂的问题则需要更强的跳出局部最优能力。问题的关键仍然是,我们无法在一开始就知道问题的复杂程度。
实验三 .增加火星的种群数量,减少每代产生的正常火星总数
为什么要减少产生的正常火星数,这样算法搜索的次数减少了,效果不会更差吗?其实与直觉相反,减少正常火星总数,增加火星总群数,实际上是让较优的火星产生的正常火星被保留下来的概率变大了,这样也可以解决实验一中的问题,加快算法的收敛速度。
从图像中可以看出,算法在50代之前已经收敛,但是之后只在小范围内进行搜索。实验图像与之前的描述相符,收敛速度加快但是跳出局部最优能力减弱。看看实验结果,实验结果好了不少且结果更加稳定。
其实实验二与实验三,使用了不同的策略,但都达到了同样的目的——保留更多的优质火星到下一代,它们促进了局部搜索但是挤占了较劣火星的位置,削弱了种群的多样性。
每代留下的火星多了,图像看上去是不是更像烟花?
烟花算法的探究远不止如此,几年前作为一个较新的算法来学习时却已经有了大量的论文和书籍,可见大家对烟花算法已经有了较为深入的研究,而我能做的只是应用算法解决问题以及稍作改进让算法与问题的适应性更高。
烟花算法产生正常火星的过程为算法提供了搜索能力,产生特殊火星的过程和选择过程为算法提供了跳出局部最优的能力。但是个人认为选择过程与其他过程的适应性不是很好。标准的选择过程会丢失掉许多较优的个体,使之前产生的正常火星得到的成果没有保留。
烟花算法其实还有比较多的改进点,对算法产生最大的参数应该就是正常火星的总数以及振幅了。简单粗暴的改进:在每一代可以对这两个参数进行变化或者随机化,让算法的搜索能力与跳出局部最优能力在整个流程中动态变化,以均衡两种能力。
以下指标纯属个人yy,仅供参考
参考文献
Tan Y , Zhu Y . Fireworks Algorithm for Optimization[C]// Advances in Swarm Intelligence, First International Conference, ICSI 2010, Beijing, China, June 12-15, 2010, Proceedings, Part I. Springer-Verlag, 2010. 提取码:yaj0
目录
上一篇 优化算法笔记(十一)群搜索算法
下一篇 优化算法笔记(十三)鲸鱼算法
优化算法matlab实现(十二)烟花算法matlab实现
⑵ 对于社交网络的数据挖掘应该如何入手,使用哪些算法
3月13日下午,南京邮电大学计算机学院、软件学院院长、教授李涛在CIO时代APP微讲座栏目作了题为《大数据时代的数据挖掘》的主题分享,深度诠释了大数据及大数据时代下的数据挖掘。
众所周知,大数据时代的大数据挖掘已成为各行各业的一大热点。
一、数据挖掘
在大数据时代,数据的产生和收集是基础,数据挖掘是关键,数据挖掘可以说是大数据最关键也是最基本的工作。通常而言,数据挖掘也称为DataMining,或知识发现Knowledge Discovery from Data,泛指从大量数据中挖掘出隐含的、先前未知但潜在的有用信息和模式的一个工程化和系统化的过程。
不同的学者对数据挖掘有着不同的理解,但个人认为,数据挖掘的特性主要有以下四个方面:
1.应用性(A Combination of Theory and Application):数据挖掘是理论算法和应用实践的完美结合。数据挖掘源于实际生产生活中应用的需求,挖掘的数据来自于具体应用,同时通过数据挖掘发现的知识又要运用到实践中去,辅助实际决策。所以,数据挖掘来自于应用实践,同时也服务于应用实践,数据是根本,数据挖掘应以数据为导向,其中涉及到算法的设计与开发都需考虑到实际应用的需求,对问题进行抽象和泛化,将好的算法应用于实际中,并在实际中得到检验。
2.工程性(An Engineering Process):数据挖掘是一个由多个步骤组成的工程化过程。数据挖掘的应用特性决定了数据挖掘不仅仅是算法分析和应用,而是一个包含数据准备和管理、数据预处理和转换、挖掘算法开发和应用、结果展示和验证以及知识积累和使用的完整过程。而且在实际应用中,典型的数据挖掘过程还是一个交互和循环的过程。
3.集合性(A Collection of Functionalities):数据挖掘是多种功能的集合。常用的数据挖掘功能包括数据探索分析、关联规则挖掘、时间序列模式挖掘、分类预测、聚类分析、异常检测、数据可视化和链接分析等。一个具体的应用案例往往涉及多个不同的功能。不同的功能通常有不同的理论和技术基础,而且每一个功能都有不同的算法支撑。
4.交叉性(An Interdisciplinary Field):数据挖掘是一门交叉学科,它利用了来自统计分析、模式识别、机器学习、人工智能、信息检索、数据库等诸多不同领域的研究成果和学术思想。同时一些其他领域如随机算法、信息论、可视化、分布式计算和最优化也对数据挖掘的发展起到重要的作用。数据挖掘与这些相关领域的区别可以由前面提到的数据挖掘的3个特性来总结,最重要的是它更侧重于应用。
综上所述,应用性是数据挖掘的一个重要特性,是其区别于其他学科的关键,同时,其应用特性与其他特性相辅相成,这些特性在一定程度上决定了数据挖掘的研究与发展,同时,也为如何学习和掌握数据挖掘提出了指导性意见。如从研究发展来看,实际应用的需求是数据挖掘领域很多方法提出和发展的根源。从最开始的顾客交易数据分析(market basket analysis)、多媒体数据挖掘(multimedia data mining)、隐私保护数据挖掘(privacy-preserving data mining)到文本数据挖掘(text mining)和Web挖掘(Web mining),再到社交媒体挖掘(social media mining)都是由应用推动的。工程性和集合性决定了数据挖掘研究内容和方向的广泛性。其中,工程性使得整个研究过程里的不同步骤都属于数据挖掘的研究范畴。而集合性使得数据挖掘有多种不同的功能,而如何将多种功能联系和结合起来,从一定程度上影响了数据挖掘研究方法的发展。比如,20世纪90年代中期,数据挖掘的研究主要集中在关联规则和时间序列模式的挖掘。到20世纪90年代末,研究人员开始研究基于关联规则和时间序列模式的分类算法(如classification based on association),将两种不同的数据挖掘功能有机地结合起来。21世纪初,一个研究的热点是半监督学习(semi-supervised learning)和半监督聚类(semi-supervised clustering),也是将分类和聚类这两种功能有机结合起来。近年来的一些其他研究方向如子空间聚类(subspace clustering)(特征抽取和聚类的结合)和图分类(graph classification)(图挖掘和分类的结合)也是将多种功能联系和结合在一起。最后,交叉性导致了研究思路和方法设计的多样化。
前面提到的是数据挖掘的特性对研究发展及研究方法的影响,另外,数据挖掘的这些特性对如何学习和掌握数据挖掘提出了指导性的意见,对培养研究生、本科生均有一些指导意见,如应用性在指导数据挖掘时,应熟悉应用的业务和需求,需求才是数据挖掘的目的,业务和算法、技术的紧密结合非常重要,了解业务、把握需求才能有针对性地对数据进行分析,挖掘其价值。因此,在实际应用中需要的是一种既懂业务,又懂数据挖掘算法的人才。工程性决定了要掌握数据挖掘需有一定的工程能力,一个好的数据额挖掘人员首先是一名工程师,有很强大的处理大规模数据和开发原型系统的能力,这相当于在培养数据挖掘工程师时,对数据的处理能力和编程能力很重要。集合性使得在具体应用数据挖掘时,要做好底层不同功能和多种算法积累。交叉性决定了在学习数据挖掘时要主动了解和学习相关领域的思想和技术。
因此,这些特性均是数据挖掘的特点,通过这四个特性可总结和学习数据挖掘。
二、大数据的特征
大数据(bigdata)一词经常被用以描述和指代信息爆炸时代产生的海量信息。研究大数据的意义在于发现和理解信息内容及信息与信息之间的联系。研究大数据首先要理清和了解大数据的特点及基本概念,进而理解和认识大数据。
研究大数据首先要理解大数据的特征和基本概念。业界普遍认为,大数据具有标准的“4V”特征:
1.Volume(大量):数据体量巨大,从TB级别跃升到PB级别。
2.Variety(多样):数据类型繁多,如网络日志、视频、图片、地理位置信息等。
3.Velocity(高速):处理速度快,实时分析,这也是和传统的数据挖掘技术有着本质的不同。
4.Value(价值):价值密度低,蕴含有效价值高,合理利用低密度价值的数据并对其进行正确、准确的分析,将会带来巨大的商业和社会价值。
上述“4V”特点描述了大数据与以往部分抽样的“小数据”的主要区别。然而,实践是大数据的最终价值体现的唯一途径。从实际应用和大数据处理的复杂性看,大数据还具有如下新的“4V”特点:
5.Variability(变化):在不同的场景、不同的研究目标下数据的结构和意义可能会发生变化,因此,在实际研究中要考虑具体的上下文场景(Context)。
6.Veracity(真实性):获取真实、可靠的数据是保证分析结果准确、有效的前提。只有真实而准确的数据才能获取真正有意义的结果。
7.Volatility(波动性)/Variance(差异):由于数据本身含有噪音及分析流程的不规范性,导致采用不同的算法或不同分析过程与手段会得到不稳定的分析结果。
8.Visualization(可视化):在大数据环境下,通过数据可视化可以更加直观地阐释数据的意义,帮助理解数据,解释结果。
综上所述,以上“8V”特征在大数据分析与数据挖掘中具有很强的指导意义。
三、大数据时代下的数据挖掘
在大数据时代,数据挖掘需考虑以下四个问题:
大数据挖掘的核心和本质是应用、算法、数据和平台4个要素的有机结合。
因为数据挖掘是应用驱动的,来源于实践,海量数据产生于应用之中。需用具体的应用数据作为驱动,以算法、工具和平台作为支撑,最终将发现的知识和信息应用到实践中去,从而提供量化的、合理的、可行的、且能产生巨大价值的信息。
挖掘大数据中隐含的有用信息需设计和开发相应的数据挖掘和学习算法。算法的设计和开发需以具体的应用数据作为驱动,同时在实际问题中得到应用和验证,而算法的实现和应用需要高效的处理平台,这个处理平台可以解决波动性问题。高效的处理平台需要有效分析海量数据,及时对多元数据进行集成,同时有力支持数据化对算法及数据可视化的执行,并对数据分析的流程进行规范。
总之,应用、算法、数据、平台这四个方面相结合的思想,是对大数据时代的数据挖掘理解与认识的综合提炼,体现了大数据时代数据挖掘的本质与核心。这四个方面也是对相应研究方面的集成和架构,这四个架构具体从以下四个层面展开:
应用层(Application):关心的是数据的收集与算法验证,关键问题是理解与应用相关的语义和领域知识。
数据层(Data):数据的管理、存储、访问与安全,关心的是如何进行高效的数据使用。
算法层(Algorithm):主要是数据挖掘、机器学习、近似算法等算法的设计与实现。
平台层(Infrastructure):数据的访问和计算,计算平台处理分布式大规模的数据。
综上所述,数据挖掘的算法分为多个层次,在不同的层面有不同的研究内容,可以看到目前在做数据挖掘时的主要研究方向,如利用数据融合技术预处理稀疏、异构、不确定、不完整以及多来源数据;挖掘复杂动态变化的数据;测试通过局部学习和模型融合所得到的全局知识,并反馈相关信息给预处理阶段;对数据并行分布化,达到有效使用的目的。
四、大数据挖掘系统的开发
1.背景目标
大数据时代的来临使得数据的规模和复杂性都出现爆炸式的增长,促使不同应用领域的数据分析人员利用数据挖掘技术对数据进行分析。在应用领域中,如医疗保健、高端制造、金融等,一个典型的数据挖掘任务往往需要复杂的子任务配置,整合多种不同类型的挖掘算法以及在分布式计算环境中高效运行。因此,在大数据时代进行数据挖掘应用的一个当务之急是要开发和建立计算平台和工具,支持应用领域的数据分析人员能够有效地执行数据分析任务。
之前提到一个数据挖掘有多种任务、多种功能及不同的挖掘算法,同时,需要一个高效的平台。因此,大数据时代的数据挖掘和应用的当务之急,便是开发和建立计算平台和工具,支持应用领域的数据分析人员能够有效地执行数据分析任务。
2.相关产品
现有的数据挖掘工具
有Weka、SPSS和SQLServer,它们提供了友好的界面,方便用户进行分析,然而这些工具并不适合进行大规模的数据分析,同时,在使用这些工具时用户很难添加新的算法程序。
流行的数据挖掘算法库
如Mahout、MLC++和MILK,这些算法库提供了大量的数据挖掘算法。但这些算法库需要有高级编程技能才能进行任务配置和算法集成。
最近出现的一些集成的数据挖掘产品
如Radoop和BC-PDM,它们提供友好的用户界面来快速配置数据挖掘任务。但这些产品是基于Hadoop框架的,对非Hadoop算法程序的支持非常有限。没有明确地解决在多用户和多任务情况下的资源分配。
3.FIU-Miner
为解决现有工具和产品在大数据挖掘中的局限性,我们团队开发了一个新的平台——FIU-Miner,它代表了A Fast,Integrated,and User-Friendly System for Data Miningin Distributed Environment。它是一个用户友好并支持在分布式环境中进行高效率计算和快速集成的数据挖掘系统。与现有数据挖掘平台相比,FIU-Miner提供了一组新的功能,能够帮助数据分析人员方便并有效地开展各项复杂的数据挖掘任务。
与传统的数据挖掘平台相比,它提供了一些新的功能,主要有以下几个方面:
A.用户友好、人性化、快速的数据挖掘任务配置。基于“软件即服务”这一模式,FIU-Miner隐藏了与数据分析任务无关的低端细节。通过FIU-Miner提供的人性化用户界面,用户可以通过将现有算法直接组装成工作流,轻松完成一个复杂数据挖掘问题的任务配置,而不需要编写任何代码。
B.灵活的多语言程序集成。允许用户将目前最先进的数据挖掘算法直接导入系统算法库中,以此对分析工具集合进行扩充和管理。同时,由于FIU-Miner能够正确地将任务分配到有合适运行环境的计算节点上,所以对这些导入的算法没有实现语言的限制。
C.异构环境中有效的资源管理。FIU-Miner支持在异构的计算环境中(包括图形工作站、单个计算机、和服务器等)运行数据挖掘任务。FIU-Miner综合考虑各种因素(包括算法实现、服务器负载平衡和数据位置)来优化计算资源的利用率。
D.有效的程序调度和执行。
应用架构上包括用户界面层、任务和系统管理层、逻辑资源层、异构的物理资源层。这种分层架构充分考虑了海量数据的分布式存储、不同数据挖掘算法的集成、多重任务的配置及系统用户的交付功能。一个典型的数据挖掘任务在应用之中需要复杂的主任务配置,整合多种不同类型的挖掘算法。因此,开发和建立这样的计算平台和工具,支持应用领域的数据分析人员进行有效的分析是大数据挖掘中的一个重要任务。
FIU-Miner系统用在了不同方面:如高端制造业、仓库智能管理、空间数据处理等,TerraFly GeoCloud是建立在TerraFly系统之上的、支持多种在线空间数据分析的一个平台。提供了一种类SQL语句的空间数据查询与挖掘语言MapQL。它不但支持类SQL语句,更重要的是可根据用户的不同要求,进行空间数据挖掘,渲染和画图查询得到空间数据。通过构建空间数据分析的工作流来优化分析流程,提高分析效率。
制造业是指大规模地把原材料加工成成品的工业生产过程。高端制造业是指制造业中新出现的具有高技术含量、高附加值、强竞争力的产业。典型的高端制造业包括电子半导体生产、精密仪器制造、生物制药等。这些制造领域往往涉及严密的工程设计、复杂的装配生产线、大量的控制加工设备与工艺参数、精确的过程控制和材料的严格规范。产量和品质极大地依赖流程管控和优化决策。因此,制造企业不遗余力地采用各种措施优化生产流程、调优控制参数、提高产品品质和产量,从而提高企业的竞争力。
在空间数据处理方面,TerraFly GeoCloud对多种在线空间数据分析。对传统数据分析而言,其难点在于MapQL语句比较难写,任务之间的关系比较复杂,顺序执行之间空间数据分许效率较低。而FIU-Miner可有效解决以上三个难点。
总结而言,大数据的复杂特征对数据挖掘在理论和算法研究方面提出了新的要求和挑战。大数据是现象,核心是挖掘数据中蕴含的潜在信息,并使它们发挥价值。数据挖掘是理论技术和实际应用的完美结合。数据挖掘是理论和实践相结合的一个例子。
-
-
⑶ 大爆炸思维建模编程适合13岁孩子学习吗
我是国家级研究中心的高级工程师。一般小学高年级初中的孩子都是可以学习编程的,编程没那么难。而且编程有利于养成孩子严谨的逻辑思维能力。
这个大爆炸思维建模编程课可以上,只要孩子有兴趣就好了,13岁孩子从智力角度讲肯定是可以学得懂的。不过编程比较枯燥,就看孩子能不能培养出兴趣了,如果有兴趣学起来就不会感觉到枯燥!