蓝狮娱乐-蓝狮注册登录站

最优化算法可以用于分类问题吗?

日期:2024-05-20 19:10 / 作者:佚名
最优化算法包含:蚁群算法,粒子群算法等启发式的搜索算法。
分类问题中常用的方法有:神经网络。SVM等。
最优化算法能套用在分类问题的什么环节?起到什么效果?

最优化算法只是一个统称,题主说到的那些是通用全局最优化算法,即给定任何一个目标函数,在一定条件下,给以充分的运行时间,理论上算法可以收敛到目标函数的全局最优解。

分类问题(和其他所有机器学习问题)都是定义并优化目标函数,所以您提到的算法肯定可以用于这些问题中优化目标函数的环节。然而,由于不同问题的不同特性——比如SVM是一个凸优化问题,而神经网络通常而言计算目标函数值和梯度的计算量很大——通常会用到更加专门的算法。比如SVM用到的是各种凸优化算法,而神经网络在实践中通常用在线算法优化。

问题-模型-算法

模型是用来抽象问题

算法是为了从模型中获取想要的信息的方法


一般的模型,是一个关于问题域数据的函数,F(D,p).

其中 D是数据,p是参数。函数有无穷个,参数也有无穷个,所以我们的模型也有无穷个。

那这无穷个模型种到底选哪个给当前的问题用呢,一般的做法是先根据问题的一些特性限定一下F的形式。比如限定F只能是某个分布族。那这时就可以把一个函数空间减小大一个参数空间。

但是这时候还是有无穷个模型可选,一般的做法是找个目标G,希望模型能满足这个目标。回顾一下,就是F形式固定,找一个满足G的参数p.

对于某些形式F和某些条件G,这个问题是可以用最优化的方法去得到参数p的。

嗯,就是这个环节。具体F,D,p,G可以对号入座。

谢邀

@齐鹏

讲得挺好的。

优化是什么意思?就是变得更好。只要能让某件事情变得更好都能用到最优化的方法。分类问题也不过是其中一件“事情”而已,所以必然能用到优化。

至于用在哪,其实对任意“事情”都一样,用在完善目标上。每一件事情都可以衡量做得好不好,这个衡量的东西在数学上叫做目标函数。

目标函数在不同问题上是长得不一样的。例如在分类问题上我们用分类正确率(分对类的个数除以总数)来衡量,运输货物我们用运输成本来衡量,相亲我们用成功配对数来衡量。只要有目标函数,最优化的方法就用得上。

你问优化用在哪个环节?每个问题都不一样。最普适的答案是用在调整一切可以调整的东西上。这个可以调整的东西在数学上叫可控制的变量,在很多模型里就做可调整的参数。通过优化的方法就能在使目标达到最好(或者较好)的情况下确定好模型里面的参数。用在神经网络上就是调整每个节点上面变量的权重。用在svm上也是调整svm模型里面的参数从而使分类正确率最高。

你提到的蚁群算法和粒子群算法算是最最普适的优化方法了,他们能用到所有有界的优化问题里。缺点是慢,因为他们几乎要找遍整个可行域才停得下来。如果问题本来有点结构,例如是凸的,那就有更多高效方法。

一般神经网络是非线性的,所以可能用得到你提的那些方法,但是现在也没有太大必要这么用,特别是对于比较大的网络而言,直接用凸优化的方法已经能得到不错的解。

蚁群算法,粒子群算法这类算法名字比较fancy,类似的还有什么遗传算法,模拟退火,萤火虫算法,蝙蝠算法,harmony search(译成和谐算法?),Tabu search(不会译了),Cuckoo search(布谷鸟搜索)等等一大堆。他们其实思想大同小异,都是要兼顾分配好资源在某个小区域深挖和大范围搜索。一出来一个这种新方法,学术界里面四面八方都来用一下发paper,显得很火,唉。。。当年搞数模的时候觉得很好用,现在看来其实就这样,懂一两个就好,还是凸优化甚至最简单的线性规划有用。毕竟好问题都是有好model的。

最优化方法当然可以用于分类问题了。你说的这些几个算法都是不确定性搜索算法而已。不过用这些算法来解决实际分类模型比较少,基本上都是用梯度下降,BFGS,坐标上升/下降,EM等这些算法。不确定性方法基本上只能用在无法直接用解析方法表达的问题上,说白了就是没有一个直接的函数。当然用在分类,聚类里面也可以用这些不确定性方法,但是很少用。

猎豹优化算法(The Cheetah Optimizer,CO)由MohammadAminAkbari等人于2022年提出,该算法性能高效,思路新颖。

参考文献: Akbari, M.A., Zare, M., Azizipanah-abarghooee, R. et al. The cheetah optimizer: a nature-inspired metaheuristic algorithm for large-scale optimization problems. Sci Rep 12, 10953 (2022). doi.org/10.1038/s41598-

CO算法描述:

CEC2020共有10个测试函数测试维度包含:2D、5D、10D、15D、20D。CEC2020测试问题随着维度的增加求解极其困难。

将猎豹优化算法CO运用于求解CEC2020中10个函数,其中每个测试函数可以选择的维度分别有:2D、5D、10D、15D、20D。增大迭代次数,CO的求解效果更佳。本例测试函数维度均为10D(可根据自己需求调整),种群大小为50,最大迭代次数为1000次。

close all
clear
clc
MaxFes=1000;%迭代次数
VarNumber=10;%维度 2/5/10/15/20
nPop=50;%种群大小
VarMin=-100;%下限
VarMax=100;%上限
fitnessfunc=str2func('cec20_func');
Function_name=1;
[Best_Fit,Best_Pos,Curve]=CO(nPop,MaxFes,VarMin,VarMax,VarNumber,CostFunction);  
figure
plot(Curve,'linewidth',2.5)
xlabel('迭代次数')
ylabel('适应度值')
legend('CO')
title(strcat('CEC2020-F',num2str(Function_name)))

部分结果如下:

F1:

F2:

F3:

F4:

平台注册入口