数学基础-求解优化问题的算法比较

问题类型

在对比算法之前,我们先给出不同类型问题的定义

P问题:可以在多项式时间内求解的问题

NP问题:可以在多项式时间内验证解是否为问题的解,猜解和验证解的过程,NP问题存在多项式级的算法,所有的P类问题都是NP问题,P≠NP

NPC问题:不存在多项式求解算法的问题
NPC问题是一个NP问题,所有的NP问题都可以约化到NPC问题。所有的NP问题都能约化成NPC问题,只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个算法解决了,NP也就等于P 了。NPC问题目前没有多项式算法,只能用指数级甚至阶乘级复杂度的搜索。

NP-Hard问题:所有的NP问题都可以约化到NP-Hard问题,但NP-Hard问题不一定是一个NP问题,NP-Hard问题同样难以找到多项式的算法。

算法类型

确定算法和启发式算法的区别

确定算法:

系统地、以确定的步骤去寻求答案,各种可能性都一一进行尝试,最终能找到问题的答案,但它是在很大的问题空间内,花费大量的时间和精力才能求得答案。

梯度下降法、牛顿法、拟牛顿法、Normal Equation的对比

这些方法都是是求解无约束最优化问题的算法

梯度下降法,是用来求函数值最小处的参数值,需要预先选定学习速率,需要多次迭代,需要对特征进行归一化(feature scaling),但是每次迭代的代驾较小

牛顿法,是用来求一阶导数函数值为0处的参数值,不需要选择任何参数,不需要对特征进行归一化,但是要求函数二阶可微,收敛性与初始点的选择依赖较大,牛顿法每一次迭代需要计算Hesse矩阵的逆,计算量大,奇异矩阵导致无法求解。

拟牛顿法,为了避免计算矩阵的逆,拟牛顿法的思路是用一个n阶矩阵来代替hesse矩阵的逆,拟牛顿法包括DFP、BFGS、Broyden。
牛顿法和拟牛顿法在李航的《统计学习方法》第219-224页有详细的介绍。

Normal Equation,是线性回归参数求解方法,Normal Equation需要大量的矩阵运算,特别是求矩阵的逆。在矩阵很大的情况下,会大大增加计算复杂性以及对计算机内存容量的要求。当特征向量的维度过多,或者存在相关特征,导致矩阵不可逆,需要对特征进行处理,例如删除冗余的维度。

启发式算法
利用过去的经验,选择已经行之有效的方法,在有限的搜索空间内,大大减少尝试的数量,能迅速地达到问题的解决。但由于这种方法具有尝试错误的特点,所以也有失败的可能性。科学家的许多重大发现,常常是利用极为简单的启发式规则,启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。启发式搜索会造成这样的结果:找到的解虽然是令人满意的,却不是最优的。

启发式算法包括,仿动物类的算法:粒子群优化,蚂蚁优化,鱼群算法,蜂群算法等;仿植物类的算法:向光性算法,杂草优化算法等;仿人类的算法有:和声搜索算法是较好的算法;

启发式算法的要素:
(1)随机初始可行解;
(2)给定一个评价函数(常常与目标函数值有关);
(3)邻域,产生新的可行解;
(4)选择和接受解得准则;
(5)终止准则。
参数设置、迭代停止条件、收敛速度是启发式算法的关键因素。

猜你喜欢

转载自blog.csdn.net/weixin_37801695/article/details/80956459