回归、SVM模型说明
线性回归用于处理回归问题,Logistic回归用于处理分类问题;
SVM即可以用于处理回归问题,又可以处理分类问题,区别在于损失函数的不同,回归时用L2损失,分类时用负log似然损失;
线性回归和Logistic回归以及SVM都是线性模型,且都属于有监督学习(训练数据即有x,还有y,只需要习得一个x到y的映射),但线性回归和Logistic回归以及SVM都可以通过核方法转化成非线性模型;
大纲
;
SVM基本原理
1)最大间隔原则;
2)对偶表示(Dual Representation);
3)KKT条件;
SVM as 最大间隔分类器
;
注:支持向量是指划分好后,边缘上的点;
;
注:中,xp是空间的任意一点x在分类面上的投影,r为点x到分类面的垂直距离,w/||w||是将w单位化,表示该向量的法线方向,||w||表示w的模,
,分类面f(x)=0的解释:分类面需要在超平面上将平面分成上下两个部分,上部分f(x)>0,f(x)<0,因此,分类面本身就是f(x)=0;
注:w0决定了分类面的位置;
线性判别函数
;
注:置信度表示某点到分类面的距离,离分类面越近的点置信度越低;
;
;
注:subject to 表示前面函数的约束条件,这里是假设条件,表示线性完合可分时的情况,即所有的样本点都在支持向量所在虚线外面;
;
注:为y的预测值,在平面上方yi和y^均为正,在平面下方则都为负,因此对于任意i都
,D表示向量x的维数,后面的+1表示截距项;除了二次规划外,对偶表示是求解
的另一种方式;
对偶表示(Dual Representation)
;
注:拉格朗日函数中;
;
注:将拉格朗日函数中的w0和w消掉的值为,
两个括号中的y和x均独立,所以分别用了i和j来表示,因
和
形式一样,相减后只剩下了一-1/2的项,即下面的Q(a);
;
注:NP为二次规划,kernel trick(核技巧)与核方法的结合,可以将一个线性模型变成一个非线性模型,带约束的问题都可以用拉格朗日乘子法来求解;
(求解
)
;
;
注:表示向量的内积(或叫点积),另一种写法为
,sgn表示取符号函数,预测时只需要判断符号的正负,即在分类上面还是下面;
KKT条件(α是稀疏的)
(一般的对偶问题及其性质,不是上面内容的后续)
;
注:和
都是拉格朗日乘子;
;
注:SVM的解总是强对偶,即P = D,其中P表示原问题的解,D表示对偶问题的解;
;
(将KKT条件代入SVM)
;
;
;
注:由KKT条中的得到,除了支持向量上的点外,其它的点因中括号里的项不等于0,因此α必为0;
;
带松弛因子的SVM:C-SVM
;
;
注:松弛因子0<<1时,说明有样本点位于支持向量的超平面和分类面的中间,当
>1时,说明有样本点位于分类面的另一边,如上图中有红色的样本点位于分类面的黑色一端;
;
;
注:C的确定同模型优化中的超参数C,需要通过交叉验证来确定;
;
注:为两个约束项;
;
;
注:数据不完全线性可分时的C-SVM和数据完全线性可分时的SVM,的对偶问题是一样的,只是约束不同,完全线性可分时的约束为,不完全线性可分时的约束为
;
;
;
;
注:黑色的线为0-1损失,即真值y和预测值f(x)的乘积小于1时(分类分错),等于1,否则等于0,0-1损失和目标是接近的,但该函数是一个阶梯函数,不连续,数据性质不好,优化计算的时候不好做;红色虚线为Logistic损失,Logistic损失为0-1损失的一个近似,好处是该损失函数连续,并且可以得到类别的概率,即y=1或y=-1的概率;蓝色的虚线为合页损失,该损失函数当x>1时,恒等于0,且拐点的截断的好处是可以带来支持向量的稀疏性;
;
核方法
;
;
;
注:点积实际是表示两个向量的相似性,因此可以用一个表示两个向量相似性的核函数来代替点积;
;
;
注:核方法中就是将上面SVM的对偶问题中的点积换成核函数,实际上除了SVM,所有的模型都可以用该方法核化;
;
;
注:有效核函数需要满足一定的条件;
(以下为核函数的充要条件)
;
注:半正定的矩阵总是可以分解成的形式;
;
;
注:Sigmoid核的核函数不一定是半正定的,实际应用中用得并不多,用得多的是下面的RBF核;
;
;
注:机器学习中,根据核的闭包性质,构造更复杂的核函数,比如核函数的相加、相乘等,该方法称为多核学习(不是主流);
;
支持向量回归
;
;
注:上图中蓝色的虚线为回归的SVM,好处也是可以带来稀疏性,即恒等于0的那段;
;
;
注:点积换成核函数后,得到的是非线性的回归;
Scikit learn中的SVM实现
;
;
注:degree是核方法中,选择多项式核时,多项式的阶数;gamma是rbf核和sigmid核中的参数;tol是迭代时的终止条件;cache_size的单位是M;decision_function_shape是多分类中,分类的方式,如一对多(自身为一类,其它的所有数据为另一类);
;
注:参数gamma即为上图各个公式中的γ;
;
;
;
;
(注:第一行一对多应为一对一)
;
;
注:SVC给出的是样本在各个类别上的分数,不是概率,如果一定要得到概率,可以将probability设为True,此时SVC会通过交叉验证去寻找一个最佳参数将f(x)的值转换成概率;
;
;
;
注:SVM求解时,先通过拉格朗日乘子法将原问题转换成对偶问题再进行求解;在SVM中,如果某个数据集增加了一个样本点,当该样本点远离决策边界时,该样本的增加不会影响到学习模型,但当该样本点离决策边界很近时,则会影响学习模型,导致边界的变化;除了从最大间隔看SVM外,还可以从损失函数的角度看,如对于分类问题时取的合页损失;对于线性模型,可以通过核技巧,将点积变成核函数,从而将线性模型转换成非线性模型;
;