优化算法分类(优化算法分类有哪些)
大家好!今天让创意岭的小编来大家介绍下关于优化算法分类的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀企业,服务客户遍布全国,网络营销相关业务请拨打175-8598-2043,或微信:1454722008
本文目录:
一、组合优化问题
从广义上讲,组合优化问题是涉及从有限的一组对象中找到"最佳"对象的问题 。“最佳”是通过给定的评估函数来测量的,该函数将对象映射到某个分数或者成本,目标是找到最高评估分数和最低成本的对象。组合优化往往涉及排序、分类、筛选等问题。以离散的COP问题来讲,目标就是从所有可行解中寻找一个集合、一个排列或者一个图。
旅行商问题 (Traveling Salesman Problem - TSP)
加工调度问题 (Scheduling Problem,如Flow-Shop,Job-Shop)
0-1背包问题 (Knapsack Problem)
装箱问题 (Bin Packing Problem)
图着色问题 (Graph Coloring Problem)
聚类问题 (Clustering Problem)
著名的旅行商问题(TSP):假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径长度为所有路径之中的最小值。TSP是一个典型的组合优化问题,且是一个NP完全难题,关于NP的这个概念本文就不做详细介绍了,但简单的说就是:TSP问题目前尚不能找到一个多项式时间复杂度的算法来求解。例如,下图显示了美国所有州所在城市的最佳旅游:
对项目的想法 :
BIOS配置寻优也可以理解为组合优化问题,是一个NP-hard问题,具有高维的离散动作空间。
参考 组合优化问题求解算法思路的整理
贪婪算法、局部搜索算法、松弛算法、动态规划法 等都可用于构建近似算法求解。
启发式算法可分为传统启发式算法和元启发式算法,传统启发式算法包括 构造性方法、局部搜索算法、松弛方法、解空间缩减算法等
元启发式算法包括 禁忌搜索算法、模拟退火算法、遗传算法、蚁群算法、粒子群算 法、人工神经网络等 。
参考 相关资料汇总与点评部分
二、K-means原理、优化、应用
K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体方法。包括初始化优化K-Means++, 距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。
K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
1、随机选择K个聚类的初始中心。
2、对任意一个样本点,求其到K个聚类中心的距离,将样本点归类到距离最小的中心的聚类。
3、每次迭代过程中,利用均值等方法更新各个聚类的中心点(质心)。
4、对K个聚类中心,利用2、3步迭代更新后,如果位置点变化很小(可以设置阈值),则认为达到稳定状态,迭代结束。(画图时,可以对不同的聚类块和聚类中心可选择不同的颜色标注)
1、原理比较简单,实现也是很容易,收敛速度快。
2、聚类效果较优。
3、算法的可解释度比较强。
4、主要需要调参的参数仅仅是簇数k。
1、K值的选取不好把握
2、对于不是凸的数据集比较难收敛
3、如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。
4、 最终结果和初始点的选择有关,容易陷入局部最优。
5、对噪音和异常点比较的敏感。
解决K-Means算法对 初始簇心 比较敏感的问题,二分K-Means算法是一种弱化初始质心的一种算法。
1、将所有样本数据作为一个簇放到一个队列中。
2、从队列中选择一个簇进行K-Means算法划分,划分为两个子簇,并将子簇添加到队列中。
3、循环迭代步骤2操作,直到中止条件达到(聚簇数量、最小平方误差、迭代次数等)。
4、队列中的簇就是最终的分类簇集合。
从队列中选择划分聚簇的规则一般有两种方式;分别如下:
1、对所有簇计算误差和SSE(SSE也可以认为是距离函数的一种变种),选择SSE最大的聚簇进行划分操作(优选这种策略)。
2、选择样本数据量最多的簇进行划分操作:
由于 K-means 算法的分类结果会受到初始点的选取而有所区别,因此有提出这种算法的改进: K-means++ 。
其实这个算法也只是对初始点的选择有改进而已,其他步骤都一样。初始质心选取的基本思路就是, 初始的聚类中心之间的相互距离要尽可能的远 。
1、随机选取一个样本作为第一个聚类中心 c1;
2、计算每个样本与当前已有类聚中心最短距离(即与最近一个聚类中心的距离),用 D(x)表示;这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法选出下一个聚类中心。
3、重复步骤2,知道选出 k 个聚类中心。
4、选出初始点(聚类中心),就继续使用标准的 k-means 算法了。
尽管K-Means++在聚类中心的计算上浪费了很多时间,但是在迭代过程中,k-mean 本身能快速收敛,因此算法实际上降低了计算时间。
解决K-Means++算法缺点而产生的一种算法;主要思路是改变每次遍历时候的取样规则,并非按照K-Means++算法每次遍历只获取一个样本,而是每次获取K个样本,重复该取样操作O(logn)次 (n是样本的个数) ,然后再将这些抽样出来的样本聚类出K个点,最后使用这K个点作为K-Means算法的初始聚簇中心点。实践证明:一般5次重复采用就可以保证一个比较好的聚簇中心点。
1、在N个样本中抽K个样本,一共抽logn次,形成一个新的样本集,一共有Klogn个数据。
2、在新数据集中使用K-Means算法,找到K个聚簇中心。
3、把这K个聚簇中心放到最初的样本集中,作为初始聚簇中心。
4、原数据集根据上述初始聚簇中心,再用K-Means算法计算出最终的聚簇。
Canopy属于一种‘粗’聚类算法,即使用一种简单、快捷的距离计算方法将数据集分为若干可重叠的子集canopy,这种算法不需要指定k值、但精度较低,可以结合K-means算法一起使用:先由Canopy算法进行粗聚类得到k个质心,再使用K-means算法进行聚类。
1、将原始样本集随机排列成样本列表L=[x1,x2,...,xm](排列好后不再更改),根据先验知识或交叉验证调参设定初始距离阈值T1、T2,且T1>T2 。
2、从列表L中随机选取一个样本P作为第一个canopy的质心,并将P从列表中删除。
3、从列表L中随机选取一个样本Q,计算Q到所有质心的距离,考察其中最小的距离D:
如果D≤T1,则给Q一个弱标记,表示Q属于该canopy,并将Q加入其中;
如果D≤T2,则给Q一个强标记,表示Q属于该canopy,且和质心非常接近,所以将该canopy的质心设为所有强标记样本的中心位置,并将Q从列表L中删除;
如果D>T1,则Q形成一个新的聚簇,并将Q从列表L中删除。
4、重复第三步直到列表L中元素个数为零。
1、‘粗’距离计算的选择对canopy的分布非常重要,如选择其中某个属性、其他外部属性、欧式距离等。
2、当T2<D≤T1时,样本不会从列表中被删除,而是继续参与下一轮迭代,直到成为新的质心或者某个canopy的强标记成员。
3、T1、T2的取值影响canopy的重叠率及粒度:当T1过大时,会使样本属于多个canopy,各个canopy间区别不明显;当T2过大时,会减少canopy个数,而当T2过小时,会增加canopy个数,同时增加计算时间。
4、canopy之间可能存在重叠的情况,但是不会存在某个样本不属于任何canopy的情况。
5、Canopy算法可以消除孤立点,即删除包含样本数目较少的canopy,往往这些canopy包含的是孤立点或噪音点。
由于K-Means算法存在初始聚簇中心点敏感的问题,常用使用Canopy+K-Means算法混合形式进行模型构建。
1、先使用canopy算法进行“粗”聚类得到K个聚类中心点。
2、K-Means算法使用Canopy算法得到的K个聚类中心点作为初始中心点,进行“细”聚类。
1、执行速度快(先进行了一次聚簇中心点选择的预处理);
2、不需要给定K值,应用场景多。
3、能够缓解K-Means算法对于初始聚类中心点敏感的问题。
Mini Batch K-Means算法是K-Means算法的一种优化变种,采用 小规模的数据子集 (每次训练使用的数据集是在训练算法的时候随机抽取的数据子集) 减少计算时间 ,同时试图优化目标函数;Mini Batch K-Means算法可以减少K-Means算法的收敛时间,而且产生的结果效果只是略差于标准K-Means算法。
1、首先抽取部分数据集,使用K-Means算法构建出K个聚簇点的模型。
2、继续抽取训练数据集中的部分数据集样本数据,并将其添加到模型中,分配给距离最近的聚簇中心点。
3、更新聚簇的中心点值。
4、循环迭代第二步和第三步操作,直到中心点稳定或者达到迭代次数,停止计算操作。
https://www.jianshu.com/p/f0727880c9c0
三、数学建模分类模型有哪些
数学建模常用模型有哪些?
1、蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算
法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法)
2、数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要
处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具)
3、线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题
属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、
Lingo软件实现)
4、图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉
及到图论的问题可以用这些方法解决,需要认真准备)
5、动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算法设计
中比较常用的方法,很多场合可以用到竞赛中)
6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些问题是
用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实
现比较困难,需慎重使用)
7、网格算法和穷举法(网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛
题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好
使用一些高级语言作为编程工具)
8、一些连续离散化方法(很多问题都是实际来的,数据可以是连续的,而计算机只
认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非
常重要的)
9、数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分析中常
用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调
用)
10、图象处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文中也应该
要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab
四、什么是网格搜索法?如何用它来优化学习算法
网格搜索法是指定参数值的一种穷举搜索方法,通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法。
即,将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”。然后将各组合用于SVM训练,并使用交叉验证对表现进行评估。在拟合函数尝试了所有的参数组合后,返回一个合适的分类器,自动调整至最佳参数组合,可以通过clf.best_params_获得参数值
以上就是关于优化算法分类相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: