1中,我们的求解问题是:$min_{w,b}$ $\frac{1}{2}||w||^{2}$,使得$y^{(i)}(w^{T}x^{(i)}+b)\geq 1 ,1 \leq i \leq n$

设$g_{i}(w)=-y^{(i)}(w^{T}x^{(i)}+b)+1 \leq 0$,

那么按照2中的定义,对应的拉格朗日函数为$L(w,b,\alpha)=\frac{1}{2}||w||^{2}-\sum_{i=1}^{n}\alpha_{i}[y^{(i)}(w^{T}x^{(i)}+b)-1]$

这里我们这里面没有$\beta$,因为没有$h$。

那么按照2中的定义有:
(1)$ \frac{\partial}{\partial w}L(w,b,\alpha)=w-\sum_{i=1}^{n}\alpha_{i}y^{(i)}x^{(i)}=0$
(2)$ \frac{\partial}{\partial b}L(w,b,\alpha)=\sum_{i=1}^{n}\alpha_{i}y^{(i)}=0$

由(1)得$w=\sum_{i=1}^{n}\alpha_{i}y^{(i)}x^{(i)}$,将其带入$L(w,b,\alpha)$的表达式,化简得到:$L(w,b,\alpha)=\sum_{i=1}^{n}\alpha_{i}-\frac{1}{2} \sum_{i,j=1}^{n}y^{(i)}y^{(j)}\alpha_{i}\alpha_{j}(x^{(i)})^{T}x^{(j)}-b\sum_{i=1}^{n}\alpha_{i}y^{(i)}$
由(2)得$\sum_{i=1}^{n}\alpha_{i}y^{(i)}=0$,所以最后式子为$L(w,b,\alpha)=\sum_{i=1}^{n}\alpha_{i}-\frac{1}{2} \sum_{i,j=1}^{n}y^{(i)}y^{(j)}\alpha_{i}\alpha_{j}(x^{(i)})^{T}x^{(j)}$

现在这个式子里只有$\alpha$是未知数。这里我们要说明一点,这里我们其实将问题转成了它的对偶问题,也就是说我们的目标是求解2中所说的$d^{*}$。所以我们的目标是:
$\underset{\alpha}{max}W(\alpha)=\sum_{i=1}^{n}\alpha_{i}-\frac{1}{2} \sum_{i,j=1}^{n}y^{(i)}y^{(j)}\alpha_{i}\alpha_{j}(x^{(i)})^{T}x^{(j)}$,使得满足(1)$\alpha_{i}\geq 0,1 \leq i \leq n$,(2)$\sum_{i=1}^{n}\alpha_{i}y^{(i)}=0$

我们将最大化变为最小化,
$\underset{\alpha}{min}W(\alpha)=\frac{1}{2} \sum_{i,j=1}^{n}y^{(i)}y^{(j)}\alpha_{i}\alpha_{j}(x^{(i)})^{T}x^{(j)}-\sum_{i=1}^{n}\alpha_{i}$,使得满足(1)$\alpha_{i}\geq 0,1 \leq i \leq n$,(2)$\sum_{i=1}^{n}\alpha_{i}y^{(i)}=0$

此时,假设我们求出了$\alpha^{*}$(我们将在后面说如何求$\alpha$),那么可以通过$w^{*}=\sum_{i=1}^{n}\alpha_{i}y^{(i)}x^{(i)}$求出$w$。现在看如何求b。由于b只是一个截距,所以$w^{*}$一旦确定,那么就确定了一个平面簇,b只是一个偏移,所以当平面偏移到两类点的中间时最好,所以b的求解公式为:$b^{*}=- \frac{ \underset{i:y^{(i)}=-1}{max}(w^{*})^{T}x_{(i)}+ \underset{i:y^{(i)}=1}{min}(w^{*})^{T}x_{(i)}}{2}$

SVM学习笔记3-问题转化的更多相关文章

  1. SVM学习笔记(一)

    支持向量机即Support Vector Machine,简称SVM.一听这个名字,就有眩晕的感觉.支持(Support).向量(Vector).机器(Machine),这三个毫无关联的词,硬生生地凑 ...

  2. SVM学习笔记

    一.SVM概述 支持向量机(support vector machine)是一系列的监督学习算法,能用于分类.回归分析.原本的SVM是个二分类算法,通过引入“OVO”或者“OVR”可以扩展到多分类问题 ...

  3. SVM学习笔记(二)----手写数字识别

    引言 上一篇博客整理了一下SVM分类算法的基本理论问题,它分类的基本思想是利用最大间隔进行分类,处理非线性问题是通过核函数将特征向量映射到高维空间,从而变成线性可分的,但是运算却是在低维空间运行的.考 ...

  4. SVM学习笔记(一):libsvm参数说明(转)

    LIBSVM 数据格式需要---------------------- 决策属性 条件属性a 条件属性b ... 2 1:7 2:5 ... 1 1:4 2:2 ... 数据格式转换--------- ...

  5. SVM学习笔记-线性支撑向量机

    对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的 Eout(w)≤Ein0+Ω(H)dvc= ...

  6. SVM学习笔记5-SMO

    首先拿出最后要求解的问题:$\underset{\alpha}{min}W(\alpha)=\frac{1}{2} \sum_{i,j=1}^{n}y^{(i)}y^{(j)}\alpha_{i}\a ...

  7. SVM学习笔记4-核函数和离群点的处理

    核函数在svm里,核函数是这样定义的.核函数是一个n*n(样本个数)的矩阵,其中:$K_{ij}=exp(-\frac{||x^{(i)}-x^{(j)}||^{2}}{2\sigma ^{2}})$ ...

  8. SVM学习笔记1-问题定义

    问题定义: 给出一些样本,包含两类.svm试图找到一个超平面,将数据分开,并且每种样本到超平面的距离的最小值最大. 输入样本:$\{x_{i},y_{i}| 1\leq i\leq n \}$,$y_ ...

  9. Python学习笔记:出生日期转化为年龄

    在数据挖掘项目中,有时候个体的出生日期包含信息量过大,不适合作为一个有效数据进入模型算法训练,因此有必要把出生日期转化为年龄age,age是一个很好的特征工程指示变量. import pandas a ...

随机推荐

  1. HDU 2604 Queuing(递推+矩阵)

    Queuing [题目链接]Queuing [题目类型]递推+矩阵 &题解: 这题想是早就想出来了,就坑在初始化那块,只把要用的初始化了没有把其他的赋值为0,调了3,4个小时 = = 本题是可 ...

  2. VS 星期作业 if else的应用 做一个受不受异性欢迎的小程序

    static void Main(string[] args) { //漏掉代码 输入错误 进行提示! string T1, T2, T3, T4, T5, T6, T7, T8, T9, T10=& ...

  3. Hessian---java远程通讯 (zhuan)

    http://blog.csdn.net/harderxin/article/details/22669383 (zhuan)

  4. RabbitMQ的使用场景

    RabbitMQ的使用场景   1 大数据日志收集消息中间件应用场景     2 消息中间件在搜索系统DIH(伪实时)中的应用       伪实时的搜索系统:   后台系统:(作为生产者发送消息)   ...

  5. report源码分析——宏的执行

    uvm_info,uvm_error其实是对uvm_report_info,uvm_report_error的封装. 其中warning,error,fatal,macros默认都是定义为UVM_NO ...

  6. yii2 rules验证规则,ajax验证手机号码是否唯一

    <?php namespace frontend\models; use Yii; use yii\base\Model; /** * Signup form */ class SignupFo ...

  7. html5-label标签

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. 排序(Sort)-----冒泡排序

    声明:文中动画转载自https://blog.csdn.net/qq_34374664/article/details/79545940    1.冒泡排序简介 冒泡排序(Bubble Sort),又 ...

  9. 【Redis学习之七】Redis持久化

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 什么是持久化? 将数据从掉电易失的 ...

  10. DBUtils (30)

    DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码. Dbutils三个核心功能介绍 一.  QueryRunn ...