SMO算法原理
揭开SMO算法的神秘面纱:优化非线性SVM的奥秘
在我们深入理解机器学习的旅程中,上一节我们探讨了非线性SVM与核函数的数学魅力。今天,让我们聚焦于被誉为“序列最小优化”(Sequential Minimal Optimization, SMO)的算法,它是解决复杂非线性问题的利器,由Platt在1998年提出。
在探索SMO之前,先重温一下目标优化函数,它在非线性SVM中扮演着核心角色。当引入软间隔和核函数时,我们的目标是寻找一个向量,使得函数达到极小值。该函数可以表示为:
向量为m维,设:
令:
考虑到输入变量只有,简化为:
进一步化简为:
这里,常数。
我们的任务是解决一个二次规划问题,选择自变量为,约束条件形如一个正方形盒子的对角线。实际上,这是一个单变量优化问题,目标是在这条线段上找到最优解。
初始解为,未考虑不等式约束的最优解为。由于:
我们可以推导出剪辑后解的表达式。这里,我们探讨了如何通过计算预测值与真实值的差值来简化目标函数:
令:
目标优化函数化简为:
通过求导并令:
继续化简得:
为了满足不等式约束,我们需要将限制在内,从而得到的表达式:
接下来,SMO算法的精髓在于如何选择优化的两个变量。它分为两步:外层循环选择违反KKT条件最严重的样本点作为第一个变量,内层循环则寻找能使目标函数变化显著的第二个变量。
外层循环:首先检查每个样本点是否满足KKT条件。选择违反条件最严重的点,若所有支持向量均满足,再考虑其他条件。
内层循环:对于已选择的,目标是找到能使 或者 最大化的 。通过选择合适的 ,优化过程得以快速推进。
每次优化后,SMO算法会更新阈值 和差值 。当 ,根据KKT条件,我们可以推导出 和 的更新公式。
SMO算法的巧妙之处在于其高效地处理非线性问题,通过两变量的迭代优化,逐步逼近最优解。通过理解这些核心步骤,你将能够更好地掌握这一强大工具在机器学习中的应用。