支持向量机

目录

最大间隔与分类

对偶问题

核函数

软间隔与正则化

支持向量回归

核方法

支持向量机应用

总结


最大间隔与分类

最大间隔分类是一种基于支持向量机(SVM)的分类方法,它的目标是找到一个最大间隔的超平面,将不同类别的数据点分开。这个超平面被称为决策边界,位于两个不同类别之间。最大间隔分类器的优点是对于新样本的分类具有很高的准确性和鲁棒性。

在最大间隔分类中,数据点被视为一个向量,在高维空间中进行分类。分类的过程是通过寻找一个超平面,使得不同类别的数据点距离该超平面的距离最大化。这个距离被称为间隔。因此,该方法也被称为最大间隔分类。

通常情况下,数据点不可能线性可分,即不能完全用一个超平面来区分不同的类别。因此,最大间隔分类器使用一种被称为核函数的技术,将数据点从低维空间映射到高维空间,以使它们更容易在高维空间中被分开。


对偶问题

对偶问题是一种将原始优化问题转换为另一个等价问题的技术。对于某些优化问题,求解原始问题可能比较困难,但是通过对偶问题可以更容易地求解。

具体地说,在最大间隔分类的情况下,原始问题是要找到一个超平面,使得所有训练样本都被正确地分类,并且该超平面与不同类别的样本之间的距离最大。这是一个凸优化问题,可以使用现代优化算法来解决。然而,如果使用对偶问题,可以将原始问题转化为另一个等价的问题,其中变量的数量较少,从而更容易求解。


核函数

核函数是一种用于将低维特征空间映射到高维特征空间的技术。这种技术在最大间隔分类(如支持向量机)等算法中广泛应用。

核函数的目的是通过非线性映射将数据从原始空间转换到一个更高维的特征空间,以便更好地进行分类或回归分析。通过使用核函数,我们可以在不直接计算高维特征空间中的内积的情况下,隐式地在高维空间中执行计算。

核函数的特点是能够在高维空间中有效地计算内积,而无需显式地进行高维特征空间的计算。这样可以避免高维计算的复杂性,并且在某些情况下甚至可以避免出现维度灾难的问题。

核函数的选择对于模型的性能和泛化能力至关重要。合适的核函数可以提高分类器的准确性和鲁棒性。在实际应用中,根据数据的特点和问题的需求,选择合适的核函数是一个重要的任务。


软间隔与正则化

软间隔指的是在最大间隔分类时允许一些训练样本被错误分类。而硬间隔则要求所有训练样本都被正确分类。软间隔可以提高模型的鲁棒性和泛化能力,因为它可以在一定程度上容忍噪声或离群点。然而,软间隔的缺点是可能导致过拟合问题,因此需要采取措施来避免这种情况。

正则化是一种常见的技术,用于避免过拟合问题。在SVM中,通常使用L2正则化或L1正则化来约束模型参数。L2正则化将一个惩罚项添加到目标函数中,该惩罚项是模型参数向量的平方和的乘积与一个系数之积。L1正则化将一个惩罚项添加到目标函数中,该惩罚项是模型参数向量的绝对值的和与一个系数之积。这些惩罚项可以限制模型参数的大小并防止过拟合。


支持向量回归

支持向量回归(Support Vector Regression,简称SVR)是一种使用支持向量机(SVM)框架进行回归任务的方法。与传统的线性回归方法相比,SVR具有更强的非线性建模能力和更好的鲁棒性。

SVR的目标是通过找到一个最优的超平面,使得样本点和该超平面的间隔尽可能地小,并且在给定的容忍度(ε)内允许一些样本点超出间隔。这样可以在尽可能保持样本点与超平面之间的接近性的同时,容忍一定的误差。

SVR的训练过程可以概括为以下几个步骤:

  1. 将输入特征进行合适的映射,例如使用核函数将其映射到高维特征空间。
  2. 基于训练数据,构建一个目标函数,包括间隔最大化项和误差限制项。
  3. 求解目标函数,得到最优的超平面以及对应的模型参数。
  4. 在预测阶段,根据新的输入特征,通过计算其与超平面的距离来预测输出值。

SVR在许多领域都有广泛的应用,例如金融预测、股票价格预测、医学数据分析等。它具有良好的鲁棒性和泛化能力,并且对离群点具有一定的容忍性。


核方法

核方法(Kernel Methods)是一种常用的机器学习方法,广泛应用于模式识别、数据挖掘和统计学习等领域。它通过使用核函数来处理非线性问题,并在高维特征空间中进行线性操作,从而提高分类或回归任务的性能。

核方法的核心思想是通过将输入特征映射到一个更高维度的特征空间,使得原本线性不可分的问题变得线性可分。这个映射的计算通常是隐式进行的,无需显式地计算高维特征空间的映射结果。

核方法的优点:

  1. 非线性建模能力:通过核函数将输入特征映射到高维特征空间,核方法可以处理非线性问题,提供更强大的建模能力。
  2. 鲁棒性:核方法对噪声和离群点具有一定的鲁棒性,可以处理复杂的实际数据。
  3. 计算效率:由于核方法在高维特征空间中进行线性操作,可以避免直接计算高维特征空间的映射结果,从而减少计算复杂度。

核方法最常见的应用之一是支持向量机(SVM)。SVM使用核函数来将样本映射到高维特征空间,然后在该空间中进行线性操作,从而实现非线性分类或回归。常用的核函数包括线性核函数、多项式核函数和径向基函数(RBF核函数)等。


支持向量机应用

# -*- coding: utf-8 -*-
import numpy as np
import pylab as plt
from sklearn import svm

#随机生成两组数据
np.random.seed(0)#使每次产生随机数不变

X = np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]]
#np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等
Y = [0] * 20+[1] * 20

#拟合模型
clf = svm.SVC(kernel='linear')
clf.fit(X,Y)

# 获得分隔超平面
w = clf.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(-5,5)#产生-5到5的线性连续值,间隔为1
yy = a * xx - (clf.intercept_[0]) / w[1]  #(clf.intercept_[0])/w[1]指的是直线的截距
#clf.intercept_[0]指的是w3,即为公式a1*x1+a2*x2+w3中的w3。

#得出支持向量的方程
b = clf.support_vectors_[0]
yy_down = a * xx + (b[1] - a * b[0])#(b[1]-a*b[0])就是计算截距
b = clf.support_vectors_[-1]
yy_up = a * xx +(b[1] - a * b[0])

print("w:",w) #打印出权重系数
print("a:",a) #打印出斜率
print("suport_vectors_:",clf.support_vectors_)#打印出支持向量
print("clf.coef_:",clf.coef_)  #打印出权重系数

#绘制图形
plt.figure()
plt.plot(xx,yy,'k-')
plt.plot(xx,yy_down,'k--') #绘制下边界
plt.plot(xx,yy_up,'k--') #绘制上边界
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,0],s = 30,facecolors='none')
plt.scatter(X[:,0],X[:,1],c=Y,cmap=plt.cm.Spectral)
plt.axis('tight')
plt.show()

实验结果:


总结

支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,广泛应用于分类和回归问题。SVM的核心思想是寻找一个最优的超平面,将不同类别的样本分隔开来,并且使得两侧距离最近的样本点到超平面的距离最大化。支持向量机是一种强大的机器学习算法,具有非线性分类能力、鲁棒性、适用性于高维数据以及强大的泛化能力等优势。然而,在应用SVM时需要注意参数选择和计算复杂度,并且在处理缺失数据时需要进行特殊处理。通过合理的参数选择和优化,SVM可以在许多实际问题中取得良好的分类效果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值