机器学习系列(15)_SVM碎碎念part3:如何找到最优分离超平面

本文主要是介绍机器学习系列(15)_SVM碎碎念part3:如何找到最优分离超平面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


1.引言

是的,咱们第1篇blog介绍了目标;第2篇blog介绍了向量相关的背景数学知识,看到了如何求解Margin的值;今天这个部分主要目的是和大家一起来看看,选择最优超平面的推理过程

以下是本篇的一个简短目录:

  • 如何找到最优超平面
  • 如何计算两超平面间的距离
  • SVM的最优化问题是什么

2.如何找到最优超平面

在第2篇blog的结尾我们计算了点A
有些情况下我们得到的超平面能够很好地完成不同类别样本点的分隔,但是却不是最佳的超平面。比如以下这个超平面是第2篇blog中求解出来的超平面。


cmd-markdown-logo

然而第1篇blog的内容告诉我们,最优超平面是一个与数据点有最大间隔的平面。在上图中我么可以看到M1,如下图所示:


cmd-markdown-logo

可以在上图中看到最优超平面,在我们找的最初的超平面的稍左位置,而它刚好是M_2的中点处的这条垂线。所以在SVM当中,超平面和间隔确实是密切相关的。

只要找到一个分隔超平面,我就能计算平行于这个超平面的间隔。得到间隔之后,就能通过它的中点找到另外一个超平面(比如上图的中间蓝色直线)。

  • 寻找最大间隔,就是寻找最优超平面

3.我们如何找到最大间隔

说起来这个过程还挺简单的:

  • 读取你的数据集。
  • 找到两个平行超平面,可以划分数据并且两平面之间没有数据点。
  • 最大化上述两个超平面间隔

OK,按照上面的步骤,咱们一步步看吧。

步骤1:读取想分类的数据集D

大多数时候,你会遇到二分类问题(多分类问题可以转化成二分类问题解决),数据将由n个向量xi组成。
每一个xi只能有两个可能的值 -1或1。
而且,大多数时候,比如当你做文本分类,向量xi对组成的集合。
在集合论中的初始数据集的更正式的定义是:

D={(xi,yi)xiRp,yi{1,1}}ni=1

步骤2:找到两个平行超平面,可以划分数据并且两平面之间没有数据点。

在平面上划线来区分数据很容易。但很多情况下数据是高维的,划分数据就变得困难,因为你没办法把它画出来。(对了,即使你的数据是二维的,也有可能找不到分离超平面!只有在数据线性可分时,这样一条线才能找到。)


cmd-markdown-logo
线性可分 与 非线性可分

因此,假设我们的数据集D是线性可分的。怎么找超平面呢?回到超平面方程:

我们在之前看到过超平面的方程可以写做

wTx=0

不过细心的同学,会在 维基百科中的SVM中看到下面的描述:

任何超平面都可以写成 满足wxb=0 的集合

首先,本文采用wx的部分,是这样的。

在我们的定义中,向量w与x有三个维度,但在维基百科中是二维的:
给出两个三维向量w(b,a,1)

wx=b×(1)+(a)×x+1×ywx=yaxb(1)

给出两个二维向量w(a,1)

wx=(a)×x+1×ywx=yax(2)

现在如果我们在方程(2)的两边减去b得到:

wxb=yaxbwxb=wx(3)

对于这篇文章的剩余部分,我们将使用二维向量(如方程(2))。

给出一个超平面H0划分数据集并且满足:

wxb=0

我们选择其他两个划分数据集的超平面的H1,有如下的方程:

wxb=δ

设定δ等距。

不过再仔细想想,你会发现w来简化问题。OK,所以我们有了一下形式的2个超平面:

wxb=1wxb=1

还有一个事情咱们得确认一下:它们之间没有任何的数据点。我们只选择那些符合以下两个约束的超平面:
对于每一个向量xi
满足

wxib1for xi属于类别1(4)

咱们来试着理解一下上面的约束,在下面的图中,所有的红点都是1类。

因此,让我们看看下面的图,并考虑点A

xi=A,同样的B点也是。

xi=C,同样的D、E、F、G点也是。

类似的,对于1类的点也满足约束。


cmd-markdown-logo

在下图,我们看到一对超平面满足约束:


cmd-markdown-logo

比如下面是一些不满足约束条件的情况情况:


cmd-markdown-logo
cmd-markdown-logo
cmd-markdown-logo

当不满足约束时,很清楚能看到超平面之间有了数据点。

OK,所以到此为止,我们找到了一个约束条件–从而能够选择两个中间没有数据点的超平面。当然,这里举得例子是二维平面的,而实际上对于更高维的空间也是成立的。

大家总是喜欢更精简的表达形式,所以我们结合一下两种约束

方程(4)开始

for xi属于类别1wxib1

两边同乘 yi(在该约束中始终为-1)
yi(wxib)yi(1)

这意味着方程式(5)可以写做:

yi(wxib)1for xi属于类别1(6)

在方程(4)中,因为y_i =1,它不改变不等号方向。

yi(wxib)1for xi属于类别1(7)

将方程式 (6)写在一起 :
yi(wxib)1for all1in(8)

OK,我们得到了一个很简洁的约束条件(方程8),它和方程4,5在数学上是等价的,也能保证两超平面间没有数据点。

步骤3:两个超平面之间的距离最大化

哈哈,大家稍微提起一点精神吧,这是本节内容中最难的部分。不过会尽量写细一点,相信大家,应该没啥问题的。

a)我们的两个超平面之间的距离是什么

OK,现在要做的事情是最大化两个超平面之间的距离,那两个超平面之间的距离怎么计算呢?好,一步步来,我们先做一些标定:

  • H0的超平面
  • H1的超平面
  • x0上的一点

对了,从x0间的距离。

我们现在试着找出m的值。


cmd-markdown-logo

感觉上x0如果和另一个超平面距离m的话,我们加上m应该会得到另一个超平面上的点。

不过m是一个标量,x0是一个向量,在一个向量上加一个标量的运算是完成不了的。那我们将m变换成一个向量,我们将能够做一个加法。

我们可以找到距离x0为m的所有的点,大家都知道,它是下图这样的一个圆:


cmd-markdown-logo

OK,结合这张图,你就更清楚了,我们有长度m而缺少另外一个向量的关键信息:方向

OK,标量加向量是没法算了,但大家都知道,向量乘以标量,会得到另外一个缩放后的向量。

OK,所以我们其实是想要找到这样一个向量:

  • 长度为m
  • 方向垂直于平面H1

仔细看看超平面的形式,我们发行已经有一个垂直H1


cmd-markdown-logo

我们定义u=ww


cmd-markdown-logo

如果我们用u,让k满足:

  • k=m
  • k具有相同方向

k就是我们正在寻找的向量。


cmd-markdown-logo

k=mu=mww(9)

对,就是通过这样一个方式把m转换成一个可以和向量x0

如果我们在向量x0上),如下图所示


cmd-markdown-logo

z0上意味着

wz0+b=1(10)

我们可以用x0+k

w(x0+k)+b=1(11)

用方程式(9)

w(x0+mww)+b=1(12)

将式子展开可得

wx0+mwww+b=1(13)

向量与自己的内积是它的模的平方,所以:

wx0+mw2w+b=1wx0+mw+b=1wx0+b=1mw

因为x0,带入:

1=1mwmw=2m=2w

OK,赞,我们找到了一种计算m的方法

b) 如何最大化两个超平面之间的距离
我们现在有一个公式来计算间隔:

m=2w

在这个公式中,我们唯一可以改变的变量是w的模。比如:
w=1
w=2
w=4

大家很容易发现,w的模越大,间隔越小。

最大化间隔也就是最小化w的模。

我们的目标是最大化间隔。在所有满足约束条件超平面中,我们选择有最小w的超平面,因为这意味着有最大间隔。

有了以下的优化问题:

yi(wxib)1i=1,,nww,b

解决这个问题有点像求解方程。一旦解出来答案,我们会找到满足约束条件,也使得w。对,你可以把它叫做最优超平面的方程!

4.结论

这篇博客做了一个小小的推导,最后得到的结论是:为了找到最优超平面,咱们需要解决一个优化问题。优化问题有点棘手,可能又需要一些额外的数学知识来解决他们。感兴趣的同学继续follow[第4部分:]吧。

这篇关于机器学习系列(15)_SVM碎碎念part3:如何找到最优分离超平面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992990

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss