精华内容
下载资源
问答
  • 支持向量机原理
    2021-11-12 12:47:26

    支持向量机原理

    首先先从线性回归下手,下面是线性回归的代价函数,目的是求出最优化参数θ

     将函数经过这样的变化:

     最终得到支持向量机的代价函数:

    其中c类似于正则化参数  

    而支持向量机的假设模型是这样的:

     支持向量机选择决策边界的原理是:

     其中θ是决策边界在原点的法向量,例如下图:

     其中p^(i)是第i个样本点的向量在θ上的投影:

     由是s.t.的数学表达式:

    可知:当p^(i)越大,则所需要的θ范数(||θ||)就可以更小一点,支持向量机选择决策边界的依据就是||θ||越小越好。

    例如,下面这幅图中的决策边界就会比前一个决策边界得到的||θ||更小,因为p^(i)更大,支持向量机会选择这样的一个决策边界

     高斯核函数

     高斯核函数可以找到非线性的封闭决策边界,类似于如下这种:

    这种决策边界也可以用高阶函数来表示,但是高斯核函数明显具有优势。

    高斯核函数原理如下:

    k函数的图像如下例:

     即:f_i=e^{-\frac{||x-l^{(i)}||^2}{2\sigma ^2}},其中||x-l^{(i)}||^2即为所选样本点到点l^{(i)}的距离,如距离过大,则由于k函数的性质,f≈0。

    我们定义一个类似于下面这样的式子,通过某种方法得到\theta _i的值,通过k函数得到所选样本点到每一个定位点f_(i)的值。带入到式子之中,得到该点的预测值y,是0,还是1。

    θ的选值和参数的多少是很灵活的,可以很大程度满足所需的非线性封闭区域。

    更多相关内容
  • 支持向量机原理.pdf

    2020-03-08 21:12:36
    2.重点讲解了支持向量机原理,首先深入讲解支持向量机的最基础类型——线性可分支持向量机,在此基础上拓展到广义线性支持向量机、非线性支持向量机以及回归支持向量机,并介绍了近来支持向量机的改进算法;...
  • 支持向量机原理介绍

    2014-07-10 18:36:20
    支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。它是建立在统计学习理论的...
  • 支持向量机原理PPT课件.pptx
  • 线性回归(一)、逻辑回归(二)、K近邻(三)、决策树值ID3(四)、CART(五)、感知(六)、神经网络(七)、线性可分支持向量机(八)、线性支持向量机(九)、线性不可分支持向量机(十)、朴素贝叶斯(十一)...
  • SVM支持向量机原理详解

    千次阅读 2022-04-10 17:11:51
    支持向量机SVM(Support Vector Machine) 1.解决问题思路展开 *要解决的问题:什么样的决策边界才是最好的? *特征数据本身如果就很难分,该怎么办? *计算负责度怎么样?能否实际应用? ==>目标:基于上述问题对...

    支持向量机SVM(Support Vector Machine)

    1.解决问题思路展开

    *要解决的问题:什么样的决策边界才是最好的?
    *特征数据本身如果就很难分,该怎么办?
    *计算负责度怎么样?能否实际应用?

    ==>目标:基于上述问题对SVM进行推导

    1.1决策边界


    右图中的决策边界更具容忍度,更加可靠

    1.2 通过距离获得决策边界(求取点到面的距离)

    在这里插入图片描述
    通过平面上两点可以得到平面的法向量,进而获得与法相量平行的单位方向向量,通过平面外一点X到平面上一点x’的距离D在单位方向向量的投影可以求出距离d,其中,D乘以单位向量为与图中dist重合的向量,取其模即为距离d,计算公式如下:
    在这里插入图片描述

    1.3 数据标签定义,SVM为一种有监督算法

    在这里插入图片描述

    1.4 目标函数推导

    在这里插入图片描述
    中间涉及缩放、极大值与极小值相互转换、对偶性(了解即可)
    在这里插入图片描述

    2.目标函数推导过程

    2.1 拉格朗日乘子法求解

    在这里插入图片描述
    先求出​​​​​​​alpha,进而求出w和b
    在这里插入图片描述
    在这里插入图片描述

    2.2 化简最终目标函数

    在这里插入图片描述
    在这里插入图片描述

    2.3 举例求解决策方程

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3. SVM特色

    3.1 软间隔优化

    边界上所有alpha不为零的点成为支持向量,非边界上的点的alpha值必为零,恒成立
    在这里插入图片描述
    有噪点加入时,引入软间隔~
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.2 核函数(低维->高维)

    在这里插入图片描述
    通过核函数将低维数据映射到高维空间
    在这里插入图片描述
    在这里插入图片描述
    多数情况下大都用高斯核函数:将原始特征映射成高斯空间中的距离特征
    在这里插入图片描述

    先这样吧,代码后续更新呢

    参考:
    B站唐博士带你学AI:一小时快速理解SVM原理

    展开全文
  • 【机器学习】支持向量机原理及例题详解

    千次阅读 多人点赞 2022-02-17 22:28:12
    支持向量机(SVM)详解

    专栏持续更新中,欢迎订阅~
    Linux
    数据结构与算法
    机器学习

    优化目标

    引入

    我们先从回顾一下Logistic回归,看看Logistic回归是如何演变为支持向量机的。

    在这里插入图片描述

    在这里插入图片描述

    y = 1 y=1 y=1时,如果我们希望 h θ ( x ) ≈ 1 h_{\theta}(x)≈1 hθ(x)1,则 θ T x \theta^{T}x θTx远大于0.

    y = 0 y=0 y=0时,如果我们希望 h θ ( x ) ≈ 0 h_{\theta}(x)≈0 hθ(x)0,则 θ T x \theta^{T}x θTx远小于0.

    下面是每个样本的代价函数,注意没有求和,代表每个单独的训练样本对Logistic回归的总体目标函数的贡献

    在这里插入图片描述

    然后我们将 h θ ( x ) h_{\theta}(x) hθ(x)的具体公式带入进去,得到的就是每个训练样本对总体函数的具体贡献:

    在这里插入图片描述

    现在我们再来考虑 y = 1 , y = 0 y=1,y=0 y=1,y=0的情况,函数图像如下:

    在这里插入图片描述

    下面我们 y = 1 y=1 y=1为例,用两条直线近似等效曲线,来向支持向量机转换,例如我以 z = 1 z=1 z=1为起点,作两条直线近似取代曲线 − l o g 1 1 + e − z -log\frac{1}{1+e^{-z}} log1+ez1,同理 y = 0 y=0 y=0时也一样。

    在这里插入图片描述

    y = 1 y=1 y=1时,两条直线记为 C o s t 1 ( z ) Cost_1(z) Cost1(z)

    y = 0 y=0 y=0时,两条直线记为 C o s t 0 ( z ) Cost_0(z) Cost0(z)

    构建支持向量机

    这是我们在Logistic回归中使用的正规化代价函数 J ( θ ) J(\theta) J(θ)

    在这里插入图片描述

    然后我们用 C o s t 1 ( θ T x ( i ) ) Cost_1(\theta^{T}x^{(i)}) Cost1(θTx(i)) C o s t 0 ( θ T x ( i ) ) Cost_0(\theta^{T}x^{(i)}) Cost0(θTx(i)) − l o g h θ ( x ( i ) ) -logh_{\theta}(x^{(i)}) loghθ(x(i)) − l o g ( 1 − h θ ( x ( i ) ) ) -log(1-h_{\theta}(x^{(i)})) log(1hθ(x(i)))代替,去掉 1 m \frac{1}{m} m1,然后对于正规项,我们不再用 λ \lambda λ来控制正规项的权重,而选择用不同的常数C来控制第一项的权重,最后我们得到支持向量机的总体优化目标如下:

    在这里插入图片描述

    与Logistic回归不同的是,sigmoid函数输出的不是概率,而是直接输出0或者1。

    在这里插入图片描述

    直观理解SVM

    这是SVM的代价函数和图像:

    在这里插入图片描述

    下面我们来想一下如何让代价函数最小化。

    y = 1 y=1 y=1,则当 θ T x ≥ 1 \theta^{T}x≥1 θTx1时, C o s t 1 ( z ) = 0 Cost_1(z)=0 Cost1(z)=0.

    y = 0 y=0 y=0,则当 θ T x ≤ − 1 \theta^{T}x≤-1 θTx1时, C o s t 2 ( z ) = 0 Cost_2(z)=0 Cost2(z)=0.

    下面我们想象一下,如果将常数C设得比较大,例如C=100000,那么当进行最小化时,我们将迫切希望找到一个合适的值,使第一项等于0,那么现在我们试着在这种情况下来理解优化问题。

    在这里插入图片描述

    要使第一项为0,则有以下两种情况:

    y = 1 y=1 y=1,则 θ T x ≥ 1 \theta^{T}x≥1 θTx1,即 y = 1 y=1 y=1的样本点在超平面 H 1 : θ T x ≥ 1 H_1:\theta^{T}x≥1 H1:θTx1上。

    y = 0 y=0 y=0,则 θ T x ≤ − 1 \theta^{T}x≤-1 θTx1,即 y = 0 y=0 y=0的样本点在超平面 H 2 : θ T x ≤ − 1 H_2:\theta^{T}x≤-1 H2:θTx1上。

    如下图所示,在 H 1 、 H 2 H_1、H_2 H1H2上的点就是支持向量:

    在这里插入图片描述

    这里两个超平面 H 1 、 H 2 H_1、H_2 H1H2平行,它们中间没有样本点。 H 1 、 H 2 H_1、H_2 H1H2之间的距离成为间隔(margin)。

    间隔依赖于分离超平面的法向量 θ \theta θ,等于 2 ∣ ∣ θ ∣ ∣ \frac{2}{||\theta||} θ2 H 1 、 H 2 H_1、H_2 H1H2是间隔边界。

    核函数(kernel)

    简单介绍

    如下图,我们需要得到一个非线性的决策边界:

    在这里插入图片描述

    按我们之前学的方法,可以通过增加项数来进行拟合,如下:

    在这里插入图片描述

    现在我们用一些新的符号 f 1 , f 2 , f 3 . . . f_1,f_2,f_3... f1,f2,f3...来表示新的特征值:

    θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 + θ 4 f 4 + θ 5 f 5 + . . . ≥ 0 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3+\theta_4f_4+\theta_5f_5+...≥0 θ0+θ1f1+θ2f2+θ3f3+θ4f4+θ5f5+...0

    f 1 = x 1 , f 2 = x 2 , f 3 = x 1 x 2 , f 4 = x 1 2 . . . f_1=x_1,f_2=x_2,f_3=x_1x_2,f_4=x_1^2... f1=x1,f2=x2,f3=x1x2,f4=x12...

    现在我们用 f 1 , f 2 , f 3 f_1,f_2,f_3 f1,f2,f3来举例:

    如图,我们在图上选择三个标记 l ( 1 ) , l ( 2 ) , l ( 3 ) l^{(1)},l^{(2)},l^{(3)} l(1),l(2)l(3)

    在这里插入图片描述

    然后来定义新的特征:

    给定一个实例x,然后将 f 1 f_1 f1定义为度量实例 x x x与标记点 l ( 1 ) l^{(1)} l(1)的相似度

    f 1 = s i m i l a r i t y ( x , l ( 1 ) ) = e x p ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 2 σ 2 ) f_1=similarity(x,l^{(1)})=exp(-\frac{{||x-l^{(1)}||}^2}{2\sigma^2}) f1=similarity(x,l(1))=exp(2σ2xl(1)2)

    类似地,

    f 2 = s i m i l a r i t y ( x , l ( 2 ) ) = e x p ( − ∣ ∣ x − l ( 2 ) ∣ ∣ 2 2 σ 2 ) f_2=similarity(x,l^{(2)})=exp(-\frac{{||x-l^{(2)}||}^2}{2\sigma^2}) f2=similarity(x,l(2))=exp(2σ2xl(2)2)

    f 3 = s i m i l a r i t y ( x , l ( 3 ) ) = e x p ( − ∣ ∣ x − l ( 3 ) ∣ ∣ 2 2 σ 2 ) f_3=similarity(x,l^{(3)})=exp(-\frac{{||x-l^{(3)}||}^2}{2\sigma^2}) f3=similarity(x,l(3))=exp(2σ2xl(3)2)

    这种函数我们称为高斯核函数,后面我们还会学到其他的核函数。

    下面来看看这些核函数的表达式有什么含义。

    假设现在有一点非常接近与标记点 l ( 1 ) l^{(1)} l(1),那么欧氏距离 ∣ ∣ x − l ( 1 ) ∣ ∣ 2 {||x-l^{(1)}||}^2 xl(1)2就会接近于0,此时 f 1 ≈ e x p ( 0 ) = 1 f_1≈exp(0)=1 f1exp(0)=1

    相反,如果这点离 l ( 1 ) l^{(1)} l(1)很远,欧式距离 ∣ ∣ x − l ( 1 ) ∣ ∣ 2 {||x-l^{(1)}||}^2 xl(1)2会变得很大,此时 f 1 ≈ 0 f_1≈0 f10

    讲完了特征值的定义,接下来我们看看核函数是如何应用于决策边界的。

    给定一个训练样本,当 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 ≥ 0 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3≥0 θ0+θ1f1+θ2f2+θ3f30时,预测 y = 1 y=1 y=1

    假设我们已经得到了参数 θ \theta θ的值:

    θ 0 = − 0.5 , θ 1 = 1 , θ 2 = 1 , θ 3 = 0 \theta_0=-0.5,\theta_1=1,\theta_2=1,\theta_3=0 θ0=0.5,θ1=1,θ2=1,θ3=0

    现在我们有一个实例 x x x(蓝点),落在如图所示位置,显然,该实例与标记点 l ( 1 ) l^{(1)} l(1)间距离很近,故 f 1 = 1 f_1=1 f1=1,与标记点 l ( 2 ) , l ( 3 ) l^{(2)},l^{(3)} l(2)l(3)相距较远,故 f 2 , f 3 = 0 f_2,f_3=0 f2,f3=0,然后我们代入 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3 θ0+θ1f1+θ2f2+θ3f3 θ 0 + θ 1 = 0.5 > 0 \theta_0+\theta_1=0.5>0 θ0+θ1=0.50,所以预测 y = 1 y=1 y=1

    在这里插入图片描述

    若一个实例如绿点所示,与 l ( 1 ) , l ( 2 ) , l ( 3 ) l^{(1)},l^{(2)},l^{(3)} l(1),l(2),l(3)的距离都很远,此时 f 1 , f 2 , f 3 = 0 f_1,f_2,f_3=0 f1,f2,f3=0

    代入 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3 θ0+θ1f1+θ2f2+θ3f3 θ 0 = − 0.5 < 0 \theta_0=-0.5<0 θ0=0.50,所以预测 y = 0 y= 0 y=0

    在这里插入图片描述

    如此,便会得到一个可以区分正负样本的非线性的决策边界。

    那么现在大家可能会想如何去得到我们的标记点 l ( 1 ) , l ( 2 ) , l ( 3 ) l^{(1)},l^{(2)},l^{(3)} l(1),l(2),l(3),并且在一些复杂的分类问题中,也许我们需要更多的标记点。

    一般情况下,我们会直接选择训练样本作为标记点。

    如下给定 m m m个训练样本,然后选定与 m m m个训练样本完全一样的位置作为标记点。

    在这里插入图片描述

    转化为向量:

    f = [ f 0 f 1 f 2 f 3 . . . ] ∈ R m + 1 f=\left[ \begin{matrix} f_0 \\ f_1 \\ f_2 \\ f_3\\... \end{matrix} \right]∈R^{m+1} f=f0f1f2f3...Rm+1

    则当 θ T f ≥ 0 \theta^Tf≥0 θTf0时,预测 y = 1 y= 1 y=1.

    最小化函数

    在这里插入图片描述

    参数选择

    • 首先我们看看参数 C C C,前面我们知道 C C C 1 λ \frac{1}{\lambda} λ1作用一样,如果选择了较大的 C C C,则意味着选择了较大的 λ \lambda λ,则是一个高偏差,低方差的模型(欠拟合)。

      如果选择了较小的 C C C,则意味着选择了较小的 λ \lambda λ,则是一个高方差,低偏差的模型(过拟合)。

    • 还有一个参数 σ 2 \sigma^2 σ2,如果 σ 2 \sigma^2 σ2比较大,则高斯核函数 e x p ( − ∣ ∣ x − l ( i ) ∣ ∣ 2 2 σ 2 ) exp(-\frac{{||x-l^{(i)}||}^2}{2\sigma^2}) exp(2σ2xl(i)2)相对平滑,模型高偏差低方差。反之则相对陡峭,模型低偏差高方差

    在这里插入图片描述

    例题

    在本次代码练习中,我们先从基础的线性分类出发,再到非线性分类来熟悉SVM的工作原理,最后再构建区分垃圾邮件的分类器。

    import numpy as np
    import pandas as pd
    import seaborn as sb
    import matplotlib.pyplot as plt
    import scipy.io as sio
    

    线性SVM

    df = sio.loadmat('E:\\happy\\ML&DL\\My_exercise\\ex5-SVM\\data\\ex6data1.mat')
    data = pd.DataFrame(df['X'], columns=['X1', 'X2'])
    data['y'] = df['y']
    data.head()
    

    在这里插入图片描述

    fig = plt.subplots(figsize=(8,6))
    plt.scatter(data['X1'], data['X2'], s=50, c=data['y'], cmap='Spectral')
    plt.xlabel('X1')
    plt.ylabel('X2')
    plt.show()
    

    在这里插入图片描述

    from sklearn import svm
    

    C=1

    #C=1
    svc_1 = svm.LinearSVC(C=1, loss='hinge', max_iter=10000)
    svc_1.fit(data[['X1', 'X2']], data['y'])
    svc_1.score(data[['X1', 'X2']], data['y'])
    
    0.9803921568627451
    
    #C=1时,画图看看每个类别预测的置信度
    data['SVM1 Confidence'] = svc_1.decision_function(data[['X1', 'X2']])
    data.head()
    

    在这里插入图片描述

    fig = plt.subplots(figsize=(8,6))
    plt.scatter(data['X1'], data['X2'], s=50, c=data['SVM1 Confidence'], cmap='RdBu')
    plt.title('SVM (C=1) Decision Confidence')
    plt.show()
    

    在这里插入图片描述

    C=100

    #C=100时,画图看看每个类别预测的置信度
    data['SVM100 Confidence'] = svc_100.decision_function(data[['X1', 'X2']])
    fig = plt.subplots(figsize=(8,6))
    plt.scatter(data['X1'], data['X2'], s=50, c=data['SVM100 Confidence'], cmap='RdBu')
    plt.title('SVM (C=100) Decision Confidence')
    plt.show()
    

    在这里插入图片描述

    非线性SVM

    #高斯核函数
    def gaussian_kernel(x1, x2, sigma):
        return np.exp(-np.power(x1 - x2, 2).sum() / (2 * (sigma ** 2)))
    
    #测试一下
    x1 = np.array([1, 2, 3])
    x2 = np.array([2, 0, 1])
    sigma = 2
    gaussian_kernel(x1, x2, sigma)
    
    0.32465246735834974
    
    df = sio.loadmat('E:\\happy\\ML&DL\\My_exercise\\ex5-SVM\\data\\ex6data2.mat')
    data = pd.DataFrame(df['X'], columns=['X1', 'X2'])
    data['y'] = df['y']
    data
    
    fig = plt.subplots(figsize=(8,6))
    plt.scatter(data['X1'], data['X2'], s=30, c=data['y'], cmap='Spectral')
    plt.xlabel('X1')
    plt.ylabel('X2')
    plt.show()
    

    在这里插入图片描述

    #用内置的高斯核函数求解
    svc = svm.SVC(C=100, gamma=10, probability=True)
    
    svc.fit(data[['X1', 'X2']], data['y'])
    svc.score(data[['X1', 'X2']], data['y'])
    
    0.9698725376593279
    
    #选一类按照概率画出来
    prob = svc.predict_proba(data[['X1', 'X2']])[:, 0]
    
    fig = plt.subplots(figsize=(8,6))
    plt.scatter(data['X1'], data['X2'], s=30, c=prob, cmap='Reds')
    

    在这里插入图片描述

    网络搜索寻找最优参数

    #读取训练集和验证集
    df = sio.loadmat('E:\\happy\\ML&DL\\My_exercise\\ex5-SVM\\data\\ex6data3.mat')
    df.keys()
    

    在这里插入图片描述

    gamma = 1 2 σ 2 \frac{1}{2\sigma^2} 2σ21

    X = df['X']
    Xval = df['Xval']
    y = df['y']
    yval = df['yval']
    
    candidate = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30, 100]
    gamma_values = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30, 100]
    
    best_score = 0
    best_params = {'C': None, 'gamma': None}
    
    for C in candidate:
        for gamma in gamma_values:
            svc = svm.SVC(C=C, gamma=gamma)
            svc.fit(X, y)
            score = svc.score(Xval, yval)
            
            if score > best_score:
                best_score = score
                best_params['C'] = C
                best_params['gamma'] = gamma
    
    best_score, best_params
    
    (0.965, {'C': 0.3, 'gamma': 100})
    

    实现垃圾邮件过滤器

    train = sio.loadmat('E:\\happy\\ML&DL\\My_exercise\\ex5-SVM\\data\\spamTrain.mat')
    test = sio.loadmat('E:\\happy\\ML&DL\\My_exercise\\ex5-SVM\\data\\spamTest.mat')
    train.keys(),test.keys()
    

    在这里插入图片描述

    #X是一个二进制向量,1表示邮件中存在该单词,0表示不存在
    X = train['X']
    y = train['y'].ravel()
    Xtest = test['Xtest']
    ytest = test['ytest'].ravel()
    
    svc = svm.SVC()
    svc.fit(X, y)
    svc.score(Xtest, ytest)
    
    0.987
    

    例题数据和jupyter获取

    关注公众号“大拨鼠Code”,回复“机器学习”可领取上面例题的源文件,jupyter版本的,例题和数据也一起打包了,之前的练习也在里面,感谢支持。

    参考资料:

    [1] https://www.bilibili.com/video/BV164411b7dx

    [2] https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

    展开全文
  • 支持向量机原理(超详细)

    万次阅读 多人点赞 2020-08-27 23:46:40
    支持向量机(SVM)是机器学习算法之一,是二分类算法。给定一组训练样本集,如图,样本数据集是二维的,分散在平面上,需要找到一条直线将数据集分割开。可以分开的直线有很多,我们要找到其中泛化能力最好,鲁棒性...

    支持向量机(SVM)是机器学习算法之一,是二分类算法。给定一组训练样本集,如图,样本数据集是二维的,分散在平面上,需要找到一条直线将数据集分割开。可以分开的直线有很多,我们要找到其中泛化能力最好,鲁棒性最强的直线。这是在平面上的点,如果是在三维空间中,则需要找到一个平面;如果是超过三维以上的维数,则需要找到一个超平面。
    在这里插入图片描述在这里插入图片描述
    超平面的表达式为:
    在这里插入图片描述
    原理举例:wT取(w1,w2),x取(x1,x2)T, 则原式得 w1x1+w2x2+b=0 与传统直线 Ax+By+c=0 方程式
    相同,由二维三维空间推到更高维平面的一般式即为上式。
    W:为平面法向量,决定了超平面的方向
    b: 决定了超平面距原点的距离
    法向量与样本属性的个数、超空间维数相同。在超空间中我们要求的参数就是决定超平面的W和b值。

    在超空间中任意一点x到超平面的距离为:
    在这里插入图片描述
    我们可以由特殊到一般的理解一下这个式子,如果在二维空间即平面上,点到直线的距离为:
    在这里插入图片描述
    式子中A,B,C是直线的参数也就是W,x0和y0是x的坐标,这样r式是不是就好理解了,这个距离是几何距离,也就是人眼直观看到的距离。几何距离只有大小没有方向,因为式子是被套上绝对值的,将绝对值摘掉,现在我们就人为规定,样本数据中到超平面的距离为正的点为+1类的样本点,就是这类点给它打个标签+1,到超平面的距离为负的点标签为-1,为什么不是+2,-2其实都可以,取1是为了后续方便计算;

    现在假设这个超平面能够将样本正确分类,只不过这个超平面的wb值我们不知道,这正是我们要求的,但是这个平面是一定存在的,有:
    在这里插入图片描述
    将几何距离r式中的分子绝对值和分母拿掉以后(因为都为正)剩下的wT+b是能够判断出样本为+1还是-1类别的部分,定义函数距离(很重要)为:
    在这里插入图片描述
    函数距离就是样本类别乘wT+b。因为正样本类别为+1,且wT+b也为正;负样本类别为-1且wT+b为负。所以函数距离只有大小没有方向。
    函数距离就相当于几何距离的分子部分,在所有样本中每一个点都有一个函数距离和一个几何距离,几何距离是可观测到的直接的距离,函数距离具有如下性质:一个点到超平面的函数距离取决于这个超平面的法向量和b值,同一个超平面可以有多组w和b值,但每组值成比例。w和b值不同,点的函数距离也不同。
    三维空间举例:
    现有两个平面2x+3y+4z+2=0 与 4x+6y+8z+4=0
    有点:x(1,1,1)
    则点到平面的函数距离分别为:11,22。 但平面实质为一个平面,只有w和b值不同,也就是说我们可以通过放缩w和b值,来控制函数距离!!!

    重点:支持向量机数学模型原理,其实就是通过控制函数距离来求得最大几何距离。也就是函数距离为约束条件,几何距离为目标函数。具体往下看:
    通过放缩w和b,让两类中某一类点距超平面的函数距离分别为1(离超平面的距离相等,为1方便后续计算)。
    W和b值未知,但总存在一组值满足上述。如图:
    在这里插入图片描述
    中间最粗的平面为我们要求的超平面,两边的虚线为支撑平面,支撑平面上的点就是支持向量,通过放缩超平面的w和b值,使支持向量到超平面的函数距离为1,支持向量是距超平面最近的点,所以其他向量点到超平面的函数距离一定大于等于1。其实这时候就可以建立最初的模型了,为:
    在这里插入图片描述
    在这里插入图片描述
    解释一下这个模型,首先先不看目标函数,先看约束条件,约束添加表达的是所有样本点到超平面的距离要大于等于1,在支撑平面上的为1,其他的大于1,根据约束条件其实可以得到无数个平面,如下面两个:
    在这里插入图片描述
    但是,在这些平面中我们需要的是泛华能力最好,鲁棒性最强的那一个,也就是最宽的那一个(margin最大),这时候就需要通过定义目标函数来求得,宽度最大也就是几何距离最大,几何距离的分子是函数距离,而两个支撑平面的函数距离我们定义完了是2,所以才有了上面的数学模型。

    总的来说,就是通过函数距离作为约束条件得到无数个能把样本正确分开的平面,然后通过目标函数在这些平面中找最宽的!
    把上面的数学模型转化为:
    在这里插入图片描述
    把求最大转变为求最小,即把模型转化为凸函数,其实到这里已经是优化问题了,凸函数是比较容易找到最优解的,因为局部极值就等于全局极值。至于为什么加个二分之一的系数,加个平方,都是为了后续解模型时求导方便。这个模型即为支持向量机的基本型,后面涉及到的软间隔,支持向量回归都从这个形式出发。
    所建立的模型为凸二次规划(局部极值的全局极值、目标函数为二次约束条件为一次)。能直接用现成的优化计算包求解,但是可以有更高效的办法。利用拉格朗日乘子法,将两个参数的优化问题转化为一个参数的优化问题,进而求解模型。
    对所建立的模型使用拉格朗日乘子法,将约束条件转化为目标函数,即对每条约束添加拉格朗日乘子 ɑi>0。得到如下拉格朗日函数。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    对于等式约束可以直接使用拉格朗日乘子法求极值,对于不等式约束要满足KKT条件约束进行求解,模型对应的KKT条件为:
    在这里插入图片描述
    将w公式代入原函数有:
    在这里插入图片描述
    上面最后的那个式子可以看到已经不含w和b值了,就只有拉格朗日乘子。利用SMO算法将每个样本数据的乘子解出来,观察约束条件在这里插入图片描述

    总有 在这里插入图片描述
    在这里插入图片描述
    前者意味着向量点根本不会在求和中出现,后者意味着向量在支撑平面上,是一个支撑向量,训练完成后大部分样本都不需要保留。也就是训练完后大部分拉格朗日乘子都为零,只有在支撑平面上的样本的拉格朗日乘子不为0。
    至此,已经对支持向量机有一个基本认识,以上数学推理为支持向量机的硬间隔。记住这个模型:
    在这里插入图片描述
    支持向量机的软间隔、核函数方法、支持向量回归都是在这个模型的基础上的。上面讲的是样本完全线性可分,但是实际中,不可分的情况多谢,如果是线性不可分的如:
    在这里插入图片描述
    需要把数据映射到更高维空间,这时候用到核函数
    如果数据有噪声如:
    在这里插入图片描述
    那么用到的是支持向量机的软间隔
    如果你不是分类数据而是要有监督的预测数据,那么就是支持向量回归。
    在这里插入图片描述
    软间隔、核函数、支持向量回归我会以后写出来。

    展开全文
  • 监督学习 | SVM 之线性支持向量机原理 1. 非线性支持向量机 对解线性分类问题,线性分类支持向量机是一种非常有效的方法。但是,有时分类问题是非线性的,这时可以使用非线性支持向量机(non-linear support...
  • 为了提高大型零件超声波探伤过程中的缺陷辨识能力,提出一种基于概率支持向量机原理,结合经验模式分解和DS证据理论,采用多探头检测的一种超声缺陷识别模型。首先,对每个探头检测的含有缺陷的信号运用经验模式分解...
  • 本文介绍了SVM的基本原理以及求解SVM问题的算法,并结合了数学原理,使文章的可读性增加
  • 支持向量机(Support Vector Machine)是一种二分类模型,其基本模型定义为特征空间上间隔最大的线性分类器,其学习的策略便是间隔最大化,最终可以转化为一个凸二次规划问题的求解。经过多年的发展,SVM也适用于...
  • 支持向量机原理简介

    2012-08-27 09:49:22
    支持向量机SVM(Support Vector Machine)作为一种可训练的机器学习方法,依靠小样本学习后的模型参数进行导航星提取,可以得到分布均匀且恒星数量大为减少的导航星表。 本文介绍了SVM的基本原理,是不多得的入门教材。
  • 支持向量机原理PPT学习教案.pptx
  • 支持向量机做为传统二分类分类器,其能处理线性可分数据,也能处理线性不可分数据(利用核函数),是一种非常重要和受欢迎的分类算法. 支持向量机的决策边界可以做个形象的定义 决策边界:选出来离雷区最远的...
  • 根据支持向量机二分类博客所述,数据集合归一化后,某个元素到回归平面的距离为 。另外,由于数据不可能都在回归平面上,距离之和还是挺大,因此所有数据到回归平面的距离可以给定一个容忍值ε防止过拟合。该参数是...
  • 支持向量机SVM是一种二类分类模型,其基本模型是定义在特征空间上的间隔最大的线性分类器。 硬间隔:要求所有样本又必须划分正确 软j间隔:允许一些样本(不满足(w^t)x + b >= 1)出错。 当训练数据线性可分...
  • 支持向量机原理

    2013-07-12 20:46:58
    详细介绍了支持向量机原理以及应用.支持向量机广泛用于大量数据的处理,方便简洁
  • MATLBA中最小二乘支持向量机原理+实例分析

    千次阅读 多人点赞 2020-03-11 11:27:37
    1、最小二乘支持向量机LSSVM基本原理 最小二乘支持向量机支持向量机的一种改进,它是将传统支持向量机中的不等式约束改为等式约束, 且将误差平方和(SumSquaresError)损失函数作为训练集的经验损失,这样就把解二次...
  • SVM -支持向量机原理详解与实践之四

    千次阅读 2017-03-14 22:30:06
    SVM -支持向量机原理详解与实践之四 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部分...
  • 多核支持向量机原理及实现

    千次阅读 2020-09-07 15:18:59
    了解非线性支持向量机模型后,应该对支持向量机原理与核技巧都有掌握,本文在传统非线性支持向量机基础上向大家介绍多核支持向量机,这里就不对支持向量机原理与核函数花费太多笔墨了,主要介绍将单核支持向量机...
  • 支持向量机 比较完整的原理推导(论文)
  • 传统的SVM模型只能实现单输出,即输入多个特征,返回单一的特征。此代码实现输入多个特征输出多个特征。即多输入多输出SVM模型。
  • 支持向量机原理与实践

    千次阅读 2020-08-26 09:59:41
    支持向量机原理简介 支持向量机(Support Vector Machine,SVM)是一个非常优雅的算法,具有非常完善的数学理论,常用于数据分类,也可以用于数据的回归预测中,由于其优美的理论保证和利用核函数对于线性不可分...
  • 支持向量机通俗导论(理解SVM的三层境界) 作者:July 。致谢:pluskid、白石、JerryLead。 说明:本文最初写于2012年6月,而后不断反反复复修改&优化,修改次数达上百次,最后修改于2016年11月。 ...
  • SVM支持向量机原理及核函数

    万次阅读 多人点赞 2018-04-07 20:21:18
    SVM支持向量机原理详解及核函数 核函数的选择 分割超平面: 支持向量: 间距: SVM算法的原理就是找到一个分割超平面,它能把数据正确的分类,并且间距最大!
  • 支持向量机基本原理

    千次阅读 2019-12-23 16:37:20
    支持向量机原理简单概括来说,就是在样本空间寻找最佳分类面即超平面,将训练样本分开。对于样本空间,可能存在多个划分超平面将两类训练样本分开,如下图所示的情况: 那么从上图来看显然正中间的红色的超平面是...
  • 最小二乘支持向量机

    2017-11-30 11:48:04
    本次实验为使用LS-SVM预测,注意使用的为最小二乘方法,谢谢大家使用!另:本次实验为回归预测
  • 跳转链接 支持向量机(一)线性支持向量机 支持向量机(二)线性支持向量机的软间隔最大化模型 支持向量机(三)线性不可分支持向量机与核函数 支持向量机(四)SMO算法与原理 支持向量机(五)线性支持回归 一位博...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,490
精华内容 25,396
关键字:

支持向量机原理

友情链接: Cxm_Demo.zip