拉格朗日函数

学习SVM,这篇文章就够了!(附详细代码)

ε祈祈猫儿з 提交于 2019-12-21 15:14:07
支持向量机 (SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复杂的算法,又以其简单的用法实现了复杂的问题,不得不说确实完美。 本系列旨在以基础化的过程,实例化的形式一探SVM的究竟。曾经也只用过集成化的SVM软件包,效果确实好。因为众人皆说原理复杂就对其原理却没怎么研究,最近经过一段时间的研究感觉其原理还是可以理解,这里希望以一个从懵懂到略微熟知的角度记录一下学习的过程。其实网络上讲SVM算法的多不胜数,博客中也有许多大师级博主的文章,写的也很简单明了,可是在看过之后,总是感觉差点什么,当然对于那些基础好的可能一看就懂了,然而对于像我们这些基础薄弱的,一遍下 来也 只能马马虎虎,过一两天后又忘了公式怎么来的了。 比如说在研究SVM之前,你是否听说过拉格朗日乘子法?你是否知道什么是对偶问题?你是否了解它们是怎么解决问题的?这些不知道的话,更别说什么是KKT条件了。话说像拉格朗日乘子法,在大学里面学数学的话,不应该没学过,但是你学会了吗?你知道是干什么的吗?如果那个时候就会了,那你潜质相当高了。作为一个过来人,我将以简单实例化形式记录自己的学习过程,力图帮助新手级学习者少走弯路。 1、 关于拉格朗日乘子法和KKT条件 1)关于拉格朗日乘子法 首先来了解拉格朗日乘子法,为什么需要拉格朗日乘子法呢?记住,有需要拉格朗日乘子法的地方

拉格朗日乘子法和KTT条件

梦想的初衷 提交于 2019-11-30 16:13:54
    这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容。     首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: m i n f ( x ) m i n f ( x )     如果问题是 m a x f ( x ) m a x f ( x ) 也可以通过取反转化为求最小值 m i n − f ( x ) m i n − f ( x ) ,这个是一个习惯。对于这类问题在高中就学过怎么做。只要对它的每一个变量求导,然后让偏导为零,解方程组就行了。 极值点示意图     所以在极值点处一定满足 d f ( x ) d x = 0 d f ( x ) d x = 0 (只是必要条件,比如 f ( x ) = x 3 f ( x ) = x 3 在 x = 0 x = 0 处就不是极值点),然后对它进行求解,再代入验证是否真的是极值点就行了。对于有些问题可以直接通过这种方法求出解析解(如最小二乘法)。     但是也有很多问题解不出来或者很难解,所以就需要梯度下降法、牛顿法、坐标下降法之类的数值迭代算法了(感知机 、logistic 回归中用到)。     对于这些迭代算法就像下面这张图一样,我们希望找到其中的最小值。一个比较直观的想法是先找一个起点,然后不断向最低点靠近。就先把一个小球放到一个碗里一样。 迭代算法     一开始要找一个起始点