机器学习6_支持向量机_算法流程

devtools/2024/11/29 16:14:41/

最大化:\theta (\alpha ,\beta )=\sum_{i=1}^{N}\alpha _i-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}y_i y_j\alpha _i\alpha _j\varphi (X_i)^T\varphi (X_j)

限制条件:

        (1)0\leq \alpha _i\leq C,(i=1\sim N)

        (2)\sum_{i=1}^{N}\alpha _iy_i=0,(i=1\sim N)

如何求解这个对偶问题,同时基于对偶问题给出支持向量机算法的统一流程。

\varphi (X_i)^T\varphi (X_j)=K(X_i,X_j) (核函数)

只要知道核函数,就可以求个这个最优化的对偶问题。

求解了这个对偶问题后,解出了 \alpha (i=1\sim N)

可以根据上面的式子 \omega =\sum_{i=1}^{N}\alpha _iy_i\varphi (x_i)

由于 \varphi (x) 不知道是否具有显示表达,所以 \omega 也不知道是否具有显示表达。

无须知道 \omega 的显示表达,也可以通过核函数 K(X_1,X_2)\Rightarrow\omega ^TX+b 的值 

如何求b

由于 \omega =\sum_{j=1}^{N}\alpha _jy_j\varphi (X_j)

则 \omega^T\varphi (X_i) =\sum_{j=1}^{N}\alpha _jy_j\varphi (X_j)^T\varphi (X_i)

                       =\sum_{j=1}^{N}\alpha _jy_jK(X_j,X_i)

\varphi (X_j)^T\varphi (X_i)=K(X_i,X_j)

\alpha _i[1+\delta _i-y_i\omega ^T\varphi (X_i)-y_ib]=0

\beta _i\delta _i=0 \Rightarrow (c-\alpha _i)\delta _i=0

如果对某个 i,\alpha _i\neq 0 且 \alpha _i\neq c ,则根据KKT条件,必有 \delta _i=0 ;

1+\delta _i-y_i\omega ^T\varphi(X_i) -y_ib=0

y_i\omega ^T\varphi(X_i)

\Uparrow

\mathbf{=\sum_{j=1}^{N}\alpha _iy_iy_jK(X_j,X_i)}

只需要找一个 0<\alpha _i<c

b=\frac{1-\sum_{j=1}^{N}\alpha_jy_iy_jK(X_j,X_i)}{y_i }

对于一个测试样本X如何获得其预测的类别?

需要计算 \omega^T\varphi (X)+b ,将 \omega =\sum_{i=1}^{N}\alpha _jy_i\varphi (X_i) 代入,将会得到

\omega^T\varphi (X)+b =\sum_{i=1}^{N}\alpha _iy_i\varphi (X_i)^T\varphi (X)+b

                        =\sum _{i=1}^{N}\alpha _iy_iK (X_i,X)+b

即使不知道 \varphi (x) ,只知道 K(X_1,X_2) ,也可以算出 \omega ^TX+b

这一结论被称为——核函数系法(Kernel Trick)

可以得到如下判决标准:

如果 \sum _{i=1}^{N}\alpha _iy_iK (X_i,X)+b\geq 0 ,那么 X\in C_1

如果 \sum _{i=1}^{N}\alpha _iy_iK (X_i,X)+b< 0 ,那么 X\in C_2


基于对偶问题的求解,总结支持向量机训练的测试的流程

训练过程:

输入训练数据 \left \{ \left ( X_i,y_i \right ) \right \}i=1\sim N ,其中 y_i=\pm1

最大化:\theta (\alpha )=\sum_{i=1}^{N}\alpha _i\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}y_iy_j\alpha_i\alpha_j\varphi (X_i)^T\varphi (X_j)

限制条件:

(1)0\leq \delta _i\leq C,(i=1\sim N)

(2)\sum_{i=1}^{N}\alpha _iy_i=0,(i=1\sim N)

求b

找一个 \alpha _i\neq 0 且 \alpha _i\neq c ,则 b=\frac{1-\sum_{j=1}^{N}\alpha_jy_iy_jK(X_j,X_i)}{y_i }

测试过程

考察测试数据X,预测它的类别y。

如果 \sum _{i=1}^{N}\alpha _iy_iK (X_i,X)+b\geq 0 ,那么 y=+1

如果 \sum _{i=1}^{N}\alpha _iy_iK (X_i,X)+b< 0 ,那么 y=-1

这里只是用到了核函数 K(X_1,X_2)


http://www.ppmy.cn/devtools/137962.html

相关文章

LeetCode训练Day1

LeetCode26 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &a…

QT配置文件详解

TEMPLATElib TEMPLATE变量用于指定项目模板类型&#xff0c;其值可以是以下几种&#xff1a; app&#xff1a;建立一个应用程序的makefile&#xff0c;这是默认值。lib&#xff1a;建立一个库的makefile。vcapp&#xff1a;建立一个应用程序的Visual Studio项目文件。vclib&a…

shell编程5,字符串运算符

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!

前言 我们先简单了解一下PyTorch、Keras、Scikit-learn和TensorFlow都是什么。 想象一下你要盖一座大房子。你需要砖头、水泥、工具等等&#xff0c;对吧&#xff1f;机器学习也是一样&#xff0c;需要一些工具来帮忙。PyTorch、Keras、Scikit-learn和TensorFlow就是四种不同的…

线程的生命周期

线程的生命周期描述了线程从创建到消亡的整个过程&#xff0c;以及在这个过程中线程所经历的不同状态。以下是线程生命周期的详细解释&#xff1a; 一、新建&#xff08;NEW&#xff09; 当使用new关键字创建一个线程对象时&#xff0c;线程进入新建状态。此时&#xff0c;线…

Flink 之 Window 机制详解(上):基础概念与分类

《Flink 之 Window 机制详解&#xff08;上&#xff09;&#xff1a;基础概念与分类》 一、引言 在当今大数据蓬勃发展的时代&#xff0c;Flink 作为一款卓越的分布式流处理和批处理框架&#xff0c;以其独特的架构和强大的功能在数据处理领域占据着重要地位。其底层基于流式…

SQL Server 中的游标:介绍、效率、使用场景及替代方法对比

在 SQL Server 中&#xff0c;游标&#xff08;Cursor&#xff09;是一种数据库对象&#xff0c;用于逐行处理查询结果集。虽然游标在某些场景下非常有用&#xff0c;但它们的性能往往不如集合操作&#xff08;set-based operations&#xff09;。本文将详细介绍游标的概念、使…

设计模式---单例模式

单例模式&#xff1a;确保一个类只有一个实例&#xff0c;并提供该实例的全局访问点, 本文介绍6中常用的实现方式 懒汉式-线程不安全 以下实现中&#xff0c;私有静态变量 uniqueInstance 被延迟实例化&#xff0c;这样做的好处是&#xff0c;如果没有用到该类&#xff0c;那么…