zoukankan      html  css  js  c++  java
  • 支持向量机SVM

    1 基本概念

    支持向量机核心在于寻找分隔超平面,写为$mathtt{w}^Tmathtt{x}+b$,任意一点到超平面的距离为$frac{|mathtt{w}^Tmathtt{A}+b|}{||mathtt{w}||}$。

    以平台上的直线为例,直线$Ax+By+C=0$,点$(x_0,y_0)$到直线的距离为$frac{|Ax_0+By_0+C|}{sqrt{A^2+B^2}}$ttt $ frac {|Ax_0+By_0+C|} {sqrt{A^2+B^2}} $。

    为寻找最优超平面,设计函数$f(mathtt{w}^Tmathtt{x}+b)$,其中当$mult 0$时$f(mu)$为-1,反之为+1,这样的好处是,可以算所有点到超平面距离之和,间距为$label*(mathtt{w}^Tmathtt{x}+b)$,现在的目标就是找到最优的w和b,使得所有点到超平面的距离是最小的,即$$argmax_{w,b}{min_n(labelcdot(mathtt{w}^Tx+b))cdotfrac{1}{lVertmathtt{w} Vert}}$$,其中除以$lVertmathtt{w} Vert$的目的是保证距离超平面最近的点距离超平面的距离为1,其他距离大于1 ,约束条件即为$label*(mathtt{w}^Tmathtt{x}+b)ge 1$。

    此优化问题最适合用拉格朗日乘子法求解。将上述问题写成数据点的形式:

    $$max_{alpha}[sum_{i=1}^malpha-frac{1}{2}sum_{i,j=1}^mlabel^{(i)}cdot label^{(j)}cdotalpha_icdotalpha_jlangle x^{(i)},x^{(j)} angle]$$

    其中,$langle x^{(i)},x^{(j)} angle$表示$x^{(i)}$和$x^{(j)}$两个向量的内积,其约束条件为$$alphage 0,和sum_{i-1}^malpha_icdot label^{(i)})=0$$

    这里,假设所有数据都是线性可分的。如果所有的数据不能被完美线性可分,这时引入松弛变量,允许数据点分在错误的一侧,此时的约束条件为:

    $$Cgealphage 0,和sum_{i-1}^malpha_icdot label^{(i)})=0$$

    这里的常数C用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0”这两个目标。

    引用《机器学习实战》一书。

  • 相关阅读:
    Django基础——Form&Ajax篇
    redis--悲观锁、乐观锁
    redis--事务
    redis--三种特殊数据类型---的简介、用法
    redis--zet(有序集合)---常用命令、场景
    redis--hash(哈希)---常用命令、场景
    redis--set(无序集合)--的常用命令,应用
    redis--(队列)list--常用命令、小结
    redis--string(字符串) --常用命令、应用场景
    redis基本知识
  • 原文地址:https://www.cnblogs.com/guesswhy/p/11279270.html
Copyright © 2011-2022 走看看