机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机) (5)

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

,于是我们可以计算出每个支持向量的b,然后求均值,其实这里b值应该都一样,只是为了以后算法改进软间隔的健壮性求个均值。

(这是一个解析法+迭代法的优化,求偏导为0是解析法,smo是迭代法)

  伪代码

  输入跟感知机一样,X样本和y(1,-1)

  1.构造一个约束优化问题,即上面只关于a的哪个式子

  2.用SMO法求a

  3.求出w,

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  4.求出b:找出支持向量,运用公式求出每个支持向量的b,求均值

  输出一个w和b,也就是θ

     算法改进(关于软间隔和硬间隔)

  上述算法只能应对线性完全可分的情况,但如果数据大部分是线性可分,但是存在异常点,导致不能线性可分了,如

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  又或者,异常点没有达到不可分的底部,但会严重挤压间隔空间,如:

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  如果没有蓝点,那么我的超平面间隔就会宽且合理,有了这个异常点让分隔变得异常窄。

  如何处理这两种情况呢?SVM引入软间隔的方法来解决,相对来说,我们上面的方法就是硬间隔

  硬间隔的最大化条件为

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  软间隔引入一个松弛变量ξi,使得约束成为

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

,这样对于异常点,只要我们ξi变大,就能抵消异常点的伤害了,但是如果所有点都加大松弛变量,不就乱套了吗,于是我们对于松弛变量的变大也要有惩罚,

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

,这样我们就可以得到合适的应对误分类点的方法了。C是惩罚系数,要自己规定,C越小,就越可以容忍误分类点,具体设置可以通过网格搜索确定。

  关于软间隔的损失函数优化问题,其实与硬间隔类似,任然求偏导,得到a的表达式,用SMO求a,得解。

  算法改进(非线性问题)

  SVM算法内容实在是多啊

  对于非线性问题,我们的基本思想是,投影到高维平面去,增加维度,就可以变成线性的,比如y=x+x2这个非线性问题,我们把x2设为x2,那么y=x1+x2这个线性问题,问题就得到了解决。

  看看我们的目标函数最终形态:

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  关于维度的问题,只出现在了xi*xj这个向量内积上,于是比如本来xi是1维非线性,我们用一个函数把它投射到2维线性可分,于是公式变成:

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

,但是当维数太高,比如1万维,太难以计算,于是我们就用上了核函数!

  核函数的基本思想是要让我们能用低纬向量计算,却产生高维向量线性可分的结果。如何计算?那就涉及到我们用哪个核函数了,现有的核函数有:

  多项式核函数:

  

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  高斯核函数:

  

机器学习总结(2)—分类中的代数模型(线性回归,逻辑回归,感知机,支持向量机)

  sigmoid核函数:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfzfp.html