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

    支持向量机是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。

    模型包括以下几类:

    1. 基本概念

       如果数据集不是线性可分的,比如二维空间中,就是找不到一条直线能刚好把正负例分开,此时忽略掉一些异常点,就可以用一个分离超平面把正负例给分开。

       这样的话也就不是硬间隔了,而是软间隔。

       对每个样本点引入一个松弛变量 $xi_{i} geq 0$,并引入一个惩罚系数 $C > 0$,$C$ 越大表示对特异点的惩罚越大,此时最优化问题变为:

    $$min ;; frac{1}{2}||w||^{2} + Csum_{i=1}^{n}xi_{i}\
    s.t. ;;; y_{i}left ( w^{T}x_{i} + b ight ) geq 1 - xi_{i}, ; i = 1,2,cdots,n \
    xi_{i} geq 0, ; i = 1,2,cdots,n$$

       也就是说,现在所选的支撑超平面之间并不是严格“真空”的,存在一些特异点,我们允许它存在,但这样的模型得付出一点代价。

    2. 学习的对偶算法

       建立拉格朗日函数:

    $$L(w,b,xi,alpha,mu) = frac{1}{2}||w||^{2} + Csum_{i=1}^{n}xi_{i} + sum_{i=1}^{n}alpha_{i}left [ 1 - xi _{i} - y_{i}left ( w^{T}x_{i} + b ight ) ight ] - sum_{i = 1}^{n}mu_{i}xi_{i} \
    = frac{1}{2}||w||^{2} + Csum_{i=1}^{n}xi_{i} - sum_{i=1}^{n}alpha_{i}y_{i}left ( w^{T}x_{i} + b ight ) + sum_{i=1}^{n}alpha_{i}left ( 1 - xi_{i} ight ) - sum_{i = 1}^{n}mu_{i}xi_{i}, ;; alpha_{i} geq 0, mu_{i} geq 0$$

       求解此不等式约束问题的 KKT 条件为

    $$left{egin{matrix}
    L_{w} = w - sum_{i=1}^{n}alpha_{i}y_{i}x_{i} = 0 \
    L_{b} = -sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
    L_{xi_{i}} = C - alpha_{i} - mu_{i} = 0, ; i = 1,2,cdots,n \
    y_{i}left ( w^{T}x_{i} + b ight ) - 1 + xi_{i} geq 0, ; i = 1,2,cdots,n \
    xi_{i} geq 0, ; i = 1,2,cdots,n \
    alpha_{i} left [ y_{i}left ( w^{T}x_{i} + b ight ) - 1 + xi_{i} ight ] = 0, ; i = 1,2,cdots,n \
    mu_{i}xi_{i} = 0, ; i = 1,2,cdots,n \
    alpha_{i} geq 0,; i = 1,2,cdots,n \
    mu_{i} geq 0,; i = 1,2,cdots,n
    end{matrix} ight. ; Rightarrow ;
    left{egin{matrix}
    w = sum_{i=1}^{n}alpha_{i}y_{i}x_{i} \
    sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
    C - alpha_{i} - mu_{i} = 0, ; i = 1,2,cdots,n \
    b = y_{j}(1 - xi_{j}) - w^{T}x_{j} = y_{j} - sum_{i=1}^{n}alpha_{i}y_{i}x_{i}^{T}x_{j}, ;(0 < alpha_{j} < C)
    end{matrix} ight.$$

       若存在一个 $0 < alpha_{j} < C$,则根据 $C - alpha_{j} - mu_{j} = 0$ 可知,必有 $mu_{j} > 0$,又 $mu_{j}xi_{j} = 0$,所以 $xi_{j} = 0$。

       根据拉格朗日对偶转化原始问题,最终我们所要求解的最优化问题为

    $$min_{alpha } ; frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}(x_{i}^{T}x_{j}) -sum_{i=1}^{n}alpha_{i} \
    s.t. ;;; sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
    0 leq alpha_{i} leq C, ; i = 1,2,cdots,n$$

  • 相关阅读:
    重装window7系统(使用U盘)
    冒泡排序
    使用jad进行反编译.class文件生成.java
    java代码编写1+2+3+....+100之和
    springboot多模块项目不同模块组件不能@autowired问题
    django CBV和FBV写法总结
    django cookie与session组件
    djjango cookie和session 的几种常用需求使用方法
    django 一个关于分组查询的问题分析
    Django book manage system
  • 原文地址:https://www.cnblogs.com/yanghh/p/13806618.html
Copyright © 2011-2022 走看看