NLP深入学习(十二):支持向量机(SVM)

文章目录

  • 0. 引言
  • 1. 什么是支持向量机
  • 2. 线性 SVM
  • 3. 非线性 SVM
    • 3.1 推导过程
    • 3.2 常用核函数
  • 4. 参考


0. 引言

前情提要:
《NLP深入学习(一):jieba 工具包介绍》
《NLP深入学习(二):nltk 工具包介绍》
《NLP深入学习(三):TF-IDF 详解以及文本分类/聚类用法》
《NLP深入学习(四):贝叶斯算法详解及分类/拼写检查用法》
《NLP深入学习(五):HMM 详解及字母识别/天气预测用法》
《NLP深入学习(六):n-gram 语言模型》
《NLP深入学习(七):词向量》
《NLP深入学习(八):感知机学习》
《NLP深入学习(九):KNN 算法及分类用法》
《NLP深入学习(十):决策树(ID3、C4.5以及CART)》
《NLP深入学习(十一):逻辑回归(logistic regression)》

1. 什么是支持向量机

支持向量机(Support Vector Machine, SVM)是一种监督学习模型,主要用于分类和回归分析任务,但最常用于二分类问题。其核心思想是通过构建一个能够最大化类别间隔(margin)的超平面来划分不同类别的数据点。

在二维或三维空间中,超平面是一个线性决策边界,而在高维特征空间中,则是一个多维的分割面。SVM的目标是最小化误分类点到这个超平面的距离(即找到最大间隔超平面),这样不仅可以使得模型具有很好的泛化能力,而且对未知样本的预测更加稳定。

对于非线性可分的数据集,SVM使用核函数(Kernel Trick)将原始输入数据映射到高维特征空间,在这个新的空间中寻找最优的超平面。常用的核函数包括线性核、多项式核、高斯核(径向基函数,RBF)等。
在这里插入图片描述

2. 线性 SVM

线性可分支持向量机(Linearly Separable Support Vector Machine)是 SVM 的一个特例,它假设训练数据是线性可分的,即存在一个超平面能够将正类别和负类别的样本完全分开。

以下是线性可分支持向量机的推导过程:

  1. 假设我们有训练数据集: { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } \{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} {(x1,y1),(x2,y2),...,(xn,yn)},其中 x i x_i xi 是输入样本, y i y_i yi 是对应的类别标签(+1 或 -1)。

  2. 我们的目标是找到一个超平面,表示为 w ⋅ x + b = 0 w \cdot x + b = 0 wx+b=0,其中 w w w 是法向量(weights), b b b 是偏置(bias)。

  3. 超平面将空间分成两个区域:正类别和负类别。我们希望对于所有的 i i i,如果 y i = 1 y_i = 1 yi=1,则 w ⋅ x i + b > 0 w \cdot x_i + b > 0 wxi+b>0,如果 y i = − 1 y_i = -1 yi=1,则 w ⋅ x i + b < 0 w \cdot x_i + b < 0 wxi+b<0

  4. SVM 的优化目标是最大化超平面到最近的正类别和负类别样本之间的间隔。这个间隔由超平面到最近的支持向量(支持向量是离超平面最近的训练样本)的距离决定。

  5. 支持向量到超平面的距离公式是: distance = ∣ w ⋅ x + b ∣ ∥ w ∥ \text{distance} = \frac{|w \cdot x + b|}{\|w\|} distance=wwx+b

  6. 为了最大化间隔,我们需要最小化 ∥ w ∥ \|w\| w,即最小化 1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21w2(这个因子出现是为了方便后续求导)。

  7. SVM 的目标函数为:
    min 1 2 ∥ w ∥ 2 \text{min} \quad \frac{1}{2} \|w\|^2 min21w2
    约束条件为:
    y i ( w ⋅ x i + b ) ≥ 1 , for all  i = 1 , 2 , . . . , n y_i(w \cdot x_i + b) \geq 1, \quad \text{for all} \ i = 1, 2, ..., n yi(wxi+b)1,for all i=1,2,...,n

  8. 利用拉格朗日乘子法,我们将目标函数和约束条件转化为拉格朗日函数:
    L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i [ y i ( w ⋅ x i + b ) − 1 ] \mathcal{L}(w, b, \alpha) = \frac{1}{2} \|w\|^2 - \sum_{i=1}^{n} \alpha_i \left[ y_i(w \cdot x_i + b) - 1 \right] L(w,b,α)=21w2i=1nαi[yi(wxi+b)1]
    其中, α i \alpha_i αi 是拉格朗日乘子。

  9. L \mathcal{L} L 分别对 w w w b b b 求偏导数并令其等于零,得到:
    w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^{n} \alpha_i y_i x_i w=i=1nαiyixi
    ∑ i = 1 n α i y i = 0 \sum_{i=1}^{n} \alpha_i y_i = 0 i=1nαiyi=0

  10. 将以上结果代入拉格朗日函数,得到拉格朗日对偶问题:
    max ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) \text{max} \quad \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) maxi=1nαi21i=1nj=1nαiαjyiyj(xixj)
    约束条件为:
    α i ≥ 0 , ∑ i = 1 n α i y i = 0 \alpha_i \geq 0, \quad \sum_{i=1}^{n} \alpha_i y_i = 0 αi0,i=1nαiyi=0

  11. 最优解 α ∗ \alpha^* α 被找到后,可以通过 w ∗ = ∑ i = 1 n α i ∗ y i x i w^* = \sum_{i=1}^{n} \alpha_i^* y_i x_i w=i=1nαiyixi 计算得到超平面的法向量, b ∗ b^* b 由支持向量计算得到。

3. 非线性 SVM

3.1 推导过程

非线性支持向量机(Nonlinear Support Vector Machine)通过引入核函数来处理非线性可分的情况。核函数允许我们将数据映射到高维空间,使得在高维空间中数据变得线性可分。以下是非线性支持向量机的推导过程:

假设我们有训练数据集: { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } \{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} {(x1,y1),(x2,y2),...,(xn,yn)},其中 x i x_i xi 是输入样本, y i y_i yi 是对应的类别标签(+1 或 -1)。

  1. 我们引入一个映射函数 ϕ : R d → R D \phi: \mathbb{R}^d \rightarrow \mathbb{R}^D ϕ:RdRD,将原始输入空间映射到更高维的特征空间,其中 D D D 是高维空间的维数。

  2. 我们的目标是在特征空间中找到一个线性可分的超平面。超平面表示为 w ⋅ ϕ ( x ) + b = 0 w \cdot \phi(x) + b = 0 wϕ(x)+b=0,其中 w w w 是法向量(weights), b b b 是偏置(bias)。

  3. SVM 的优化目标是最大化间隔,即最小化 ∥ w ∥ \|w\| w。目标函数为:
    min 1 2 ∥ w ∥ 2 \text{min} \quad \frac{1}{2} \|w\|^2 min21w2
    约束条件为:
    y i ( w ⋅ ϕ ( x i ) + b ) ≥ 1 , for all  i = 1 , 2 , . . . , n y_i(w \cdot \phi(x_i) + b) \geq 1, \quad \text{for all} \ i = 1, 2, ..., n yi(wϕ(xi)+b)1,for all i=1,2,...,n

  4. 利用拉格朗日乘子法,我们将目标函数和约束条件转化为拉格朗日函数:
    L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i [ y i ( w ⋅ ϕ ( x i ) + b ) − 1 ] \mathcal{L}(w, b, \alpha) = \frac{1}{2} \|w\|^2 - \sum_{i=1}^{n} \alpha_i \left[ y_i(w \cdot \phi(x_i) + b) - 1 \right] L(w,b,α)=21w2i=1nαi[yi(wϕ(xi)+b)1]
    其中, α i \alpha_i αi 是拉格朗日乘子。

  5. L \mathcal{L} L 分别对 w w w b b b 求偏导数并令其等于零,得到:
    w = ∑ i = 1 n α i y i ϕ ( x i ) w = \sum_{i=1}^{n} \alpha_i y_i \phi(x_i) w=i=1nαiyiϕ(xi)
    ∑ i = 1 n α i y i = 0 \sum_{i=1}^{n} \alpha_i y_i = 0 i=1nαiyi=0

  6. 将以上结果代入拉格朗日函数,得到拉格朗日对偶问题:
    max ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) \text{max} \quad \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j K(x_i, x_j) maxi=1nαi21i=1nj=1nαiαjyiyjK(xi,xj)
    约束条件为:
    α i ≥ 0 , ∑ i = 1 n α i y i = 0 \alpha_i \geq 0, \quad \sum_{i=1}^{n} \alpha_i y_i = 0 αi0,i=1nαiyi=0

    这里, K ( x i , x j ) K(x_i, x_j) K(xi,xj) 是核函数,它表示在特征空间中点 x i x_i xi x j x_j xj 的内积。

  7. 选择适当的核函数,如线性核、多项式核、高斯核等,根据问题的性质来进行非线性映射。

  8. 最优解 α ∗ \alpha^* α 被找到后,可以通过 w ∗ = ∑ i = 1 n α i ∗ y i ϕ ( x i ) w^* = \sum_{i=1}^{n} \alpha_i^* y_i \phi(x_i) w=i=1nαiyiϕ(xi) 计算得到超平面的法向量, b ∗ b^* b 由支持向量计算得到。

这样,通过引入核函数,我们可以处理非线性可分的情况,将数据映射到高维空间中,然后在高维空间中寻找线性可分的超平面。

3.2 常用核函数

核函数在非线性支持向量机中扮演着关键的角色,它用于将输入数据映射到高维空间,从而使得在高维空间中的数据更容易被线性分割。以下是一些常用的核函数:

  1. 线性核函数(Linear Kernel):
    K ( x i , x j ) = x i ⋅ x j K(x_i, x_j) = x_i \cdot x_j K(xi,xj)=xixj
    简单的内积操作,适用于线性可分的情况。

  2. 多项式核函数(Polynomial Kernel):
    K ( x i , x j ) = ( x i ⋅ x j + c ) d K(x_i, x_j) = (x_i \cdot x_j + c)^d K(xi,xj)=(xixj+c)d
    其中, c c c 是常数, d d d 是多项式的次数。通过调整 c c c d d d 可以实现不同程度的非线性映射。

  3. 高斯径向基核函数(Gaussian Radial Basis Function, RBF):
    K ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(2σ2xixj2)
    其中, σ \sigma σ 是控制函数宽度的参数。常用于处理复杂的非线性关系,对于很多问题表现良好。

  4. Sigmoid核函数:
    K ( x i , x j ) = tanh ⁡ ( α x i ⋅ x j + c ) K(x_i, x_j) = \tanh(\alpha x_i \cdot x_j + c) K(xi,xj)=tanh(αxixj+c)
    其中, α \alpha α c c c 是调节参数。它类似于神经网络中的激活函数。

  5. 拉普拉斯核函数(Laplacian Kernel):
    K ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ σ ) K(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|}{\sigma}\right) K(xi,xj)=exp(σxixj)
    类似于高斯核函数,但它对离中心点较远的数据点的惩罚更加明显。

  6. 多项式Spline核函数:
    K ( x i , x j ) = ( 1 + x i ⋅ x j + ( x i ⋅ x j ) 2 2 ) d K(x_i, x_j) = \left(1 + x_i \cdot x_j + \frac{(x_i \cdot x_j)^2}{2}\right)^d K(xi,xj)=(1+xixj+2(xixj)2)d
    这是一种非线性的核函数,可以通过调整参数 d d d 来实现不同程度的非线性映射。

4. 参考

《NLP深入学习(一):jieba 工具包介绍》
《NLP深入学习(二):nltk 工具包介绍》
《NLP深入学习(三):TF-IDF 详解以及文本分类/聚类用法》
《NLP深入学习(四):贝叶斯算法详解及分类/拼写检查用法》
《NLP深入学习(五):HMM 详解及字母识别/天气预测用法》
《NLP深入学习(六):n-gram 语言模型》
《NLP深入学习(七):词向量》
《NLP深入学习(八):感知机学习》
《NLP深入学习(九):KNN 算法及分类用法》
《NLP深入学习(十):决策树(ID3、C4.5以及CART)》
《NLP深入学习(十一):逻辑回归(logistic regression)》

欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;

也欢迎关注我的wx公众号:一个比特定乾坤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言·贪吃蛇游戏(上)

1. 游戏任务 使用C语言在Windows环境的控制台中模拟实现小游戏贪吃蛇 游戏中要包含以下功能&#xff1a; 1. 贪吃蛇地图绘制 2. 贪吃蛇上下左右移动和吃食物 3. 蛇撞墙&#xff0c;或撞到自身死亡 4. 计算得分 5. 蛇身加速、减速 6. 暂停游戏 2. Win32 API 介绍 Windows是一种多…

云原生之可观测性-APM概念及选型

导读&#xff1a;为了让大家更好的 APM 系统的设计实现&#xff0c;我将在公众号编写《云原生之可观测性》系列文章&#xff0c;深入讲解 APM 系统的产品设计、架构设计和基础技术。APM是一个庞杂的技术体系&#xff0c;涉及到很多开源技术&#xff0c;欢迎大家留言讨论。 本文…

python中的异步实践与tornado应用

最近项目中由于在python3中使用tornado,之前也有用过&#xff0c;是在python2中&#xff0c;由于对于协程理解不是很透彻&#xff0c;只是套用官方文档中的写法&#xff0c;最近比较细致的看了下协程的用法&#xff0c;也将tornado在python3中异步的实践了一下。 异步基础 要…

[香橙派开发系列]使用蓝牙和手机进行信息的交换

文章目录 前言一、HC05蓝牙模块1.HC05概述2.HC05的连接图3.进入HC05的命令模式4.常用的AT指令4.1 检查AT是否上线4.2 重启模块4.3 获取软件版本号4.4 恢复默认状态4.5 获取蓝牙的名称4.6 设置蓝牙模块的波特率4.7 查询蓝牙的连接模式4.8 查询模块角色 5.连接电脑6.通过HC05发送…

2024美赛MCM Problem A: Resource Availability and Sex Ratios资源可用性和性别比例 完整代码以及思路分享

虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。例如&#xff0c;美洲短吻鳄孵化卵的巢穴的温度会影…

sql指南之null值用法

注明&#xff1a;参考文章&#xff1a; SQL避坑指南之NULL值知多少&#xff1f;_select null as-CSDN博客文章浏览阅读2.9k次&#xff0c;点赞7次&#xff0c;收藏21次。0 引言 SQL NULL&#xff08;UNKNOW&#xff09;是用来代表缺失值的术语&#xff0c;在表中的NULL值是显示…

Git解决分支合并冲突的问题:分支合并提交出现了不同分支同一个文件的修改的冲突解决

有些时候我们合并分支的时候&#xff0c;会出现冲突&#xff0c;原因就是我们修改了分支A 的第一行代码&#xff0c;我们还修改了主分支上面同一个文件中的第一行代码&#xff08;分支A已经提交过一次&#xff09;&#xff0c;此时我们在次合并的时候就会出现冲突&#xff0c;需…

智慧养老成关键力量,全视通智慧机构养老解决方案来助力

近日&#xff0c;国新办举行国务院政策例行吹风会&#xff0c;国家发展改革委、工业和信息化部、民政部、商务部有关负责人介绍《关于发展银发经济增进老年人福祉的意见》有关情况并答记者问。 会上&#xff0c;民政部养老服务司负责人李永新透露&#xff0c;将发展智慧养老服务…

tidb节点重启后,服务无法重连

大家好&#xff0c;我是烤鸭&#xff1a; 前几天遇到tidb节点重启后服务无法重连&#xff0c;确切地说是两个服务&#xff0c;一个可以正常重连&#xff0c;一个不行。 问题复现 由于线上执行慢SQL&#xff0c;导致TiDB 单个节点宕机重启。 其中A服务的3个节点和B服务的1个节…

Sketch使用手册:从入门到精通的完整教程

Sketch软件是Mac平台上流行的矢量图形编辑软件&#xff0c;旨在帮助用户创建网站、移动应用、图标等各种设计原型。Sketch软件的设计风格简洁明了&#xff0c;界面操作简单易用&#xff0c;非常适合UI/UX设计师、平面设计师等数字创意人员。本文将根据如何使用Sketch&#xff0…

IEPE数据采集卡的作用说明

IEPE传感器是一种特殊的加速度传感器&#xff0c;其特点是自带电量放大器或电压放大器。这种传感器产生的电信号非常微弱&#xff0c;很容易受到噪声干扰&#xff0c;因此需要使用灵敏的电子器件进行放大和信号调理。为了实现更好的抗噪声性能和更方便的封装&#xff0c;IEPE传…

xmind思维导图 for mac v24.01中文版

mac电脑上思维导图软件哪个好呢&#xff1f; xmind for mac一个功能强大、易于使用的思维导图软件&#xff0c;够帮助你更好地组织思维、管理信息、规划项目和解决问题&#xff0c;提高个人和团队的工作效率。 软件下载&#xff1a;xmind思维导图 for mac v24.01中文版 XMind f…

数据可视化工具选择指南:六款主流工具的综合评测

随着大数据时代的来临&#xff0c;数据可视化已成为各行业不可或缺的工具。本文将为您介绍市面上六款主流数据可视化工具&#xff0c;包括山海鲸可视化、Echarts、D3.js、Tableau、Power BI和Funnel.io&#xff0c;帮助您更好地了解并选择适合您的工具。 山海鲸可视化 山海鲸…

【Django开发】美多商城项目第2篇:Django用户注册和登录开发(附代码,已分享)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目&#xff08;4.0版本&#xff09;含代码和文档。功能包括前后端不分离&#xff0c;方便SEO。采用Django Jinja2模板引擎 Vue.js实现前后端…

C# .Net学习笔记—— 异步和多线程(异常处理)

一、异常处理 1、下面for循环20个线程&#xff0c;到11&#xff0c;12号的时候执行失败&#xff0c;这里我也用了try catch来捕获异常。 private void button11_Click(object sender, EventArgs e){TaskFactory taskFactory new TaskFactory();List<Task> taskList ne…

回归预测 | Matlab基于POA-LSSVM鹈鹕算法算法优化最小二乘支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于POA-LSSVM鹈鹕算法算法优化最小二乘支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于POA-LSSVM鹈鹕算法算法优化最小二乘支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于POA-LSSVM…

【数据结构与算法】之排序系列-20240201

【数据结构与算法】之排序系列-20240201 一、88. 合并两个有序数组二、169. 多数元素三、217. 存在重复元素四、242. 有效的字母异位词五、268. 丢失的数字六、349. 两个数组的交集七、350. 两个数组的交集 II 一、88. 合并两个有序数组 简单 给你两个按 非递减顺序 排列的整数…

【Uni-App】运行微信小程序时报错routeDone with a webviewId 2 that is not the current page

使用HBuilderX开发微信小程序&#xff0c;运行项目的时有可能会出现routeDone with a webviewId 1 that is not the current page的报错&#xff0c;但不影响运行。如果强迫症介意的话&#xff0c;可以考下面的方法进行修复。 产生原因 由于微信开发者工具的调试基础库处于灰度…

私域流量如何变现?一站式产品体系搭建与运营策略大公开

在互联网日新月异的今天&#xff0c;我们面临着人口红利逐渐消失的问题&#xff0c;各行各业的广告投放获客成本也在不断上涨。为了降低成本并提高用户转化和复购率&#xff0c;我们需要寻找新的解决方案。此时&#xff0c;私域流量的概念应运而生&#xff0c;成为了一个值得考…

【计算机二级考试C语言】C递归

目录 C 递归 数的阶乘 实例 斐波那契数列 实例 C 递归 递归指的是在函数的定义中使用函数自身的方法。 举个例子&#xff1a; 从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从…