机器学习及应用 第5章 支持向量机.pptx

上传人:b****9 文档编号:456306 上传时间:2022-10-10 格式:PPTX 页数:62 大小:5.70MB
下载 相关 举报
机器学习及应用 第5章 支持向量机.pptx_第1页
第1页 / 共62页
机器学习及应用 第5章 支持向量机.pptx_第2页
第2页 / 共62页
机器学习及应用 第5章 支持向量机.pptx_第3页
第3页 / 共62页
机器学习及应用 第5章 支持向量机.pptx_第4页
第4页 / 共62页
机器学习及应用 第5章 支持向量机.pptx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

机器学习及应用 第5章 支持向量机.pptx

《机器学习及应用 第5章 支持向量机.pptx》由会员分享,可在线阅读,更多相关《机器学习及应用 第5章 支持向量机.pptx(62页珍藏版)》请在冰豆网上搜索。

机器学习及应用 第5章 支持向量机.pptx

,学习目标,第05章支持向量机,函数间隔几何间隔对偶问题线性支持向量机非线性支持向量机序列最小优化算法,5.1引言,支持向量机(supportvectormachine,SVM)是一种基于统计学习理论(StatisticalLearningTheory,SLT)的监督学习方法。

支持向量机在各个领域内的模式识别问题中都有广泛应用,包括人脸识别、文本分类、笔迹识别等。

它不仅在解决小样本、非线性及高维模式识别等问题中表现出了许多特有的优势,同时在函数模拟、模式识别和数据分类等领域也取得了极好的应用效果,是机器学习最成功的算法之一。

台湾大学资讯工程研究所开发的LIBSVM是使用最广的SVM工具,包含标准SVM算法、概率输出、支持向量回归、多分类SVM等功能,其源代码由C编写,并有JAVA、Python、R、MATLAB等语言的调用接口等。

scikit-learn提供预封装的SVM工具,其设计参考了LIBSVM。

5.1引言,1963年,前苏联学者VladimirN.Vapnik和AlexanderY.Lerner在研究模式识别的广义肖像算法(generalizedportraitalgorithm)中提出支持向量方法。

1964年,他们进一步建立了函数间隔(硬边距)的线性SVM。

并于上世纪70年代,随着最大边距决策边界的理论研究、基于松弛变量的规划问题求解技术的出现,以及VC维的提出,SVM被逐步理论化并称为统计学习理论的重要组成部分。

1992年,BernhardE.Boser,IsabelleM.Guyon和VladimirN.Vapnik运用核技巧(kerneltrick)最大化边缘平面,解决非线性分类器的方法。

1995年,VladimirN.Vapnik提出了统计学习理论,较好地解决了线性不可分的问题,正式奠定了SVM的理论基础。

支持向量机解决不同类型的问题:

当训练数据线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;当训练数据近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;当训练数据不可分时,通过使用核技巧以及软间隔最大化,学习一个非线性支持向量机。

5.1引言,5.2线性分类,5.2线性分类,5.2线性分类,定义分类函数,示意图,5.2线性分类,5.2线性分类,可以用来表示分类(预测)的可信度。

问题:

只要成比例改变w和b,超平面并没有改变,但函数间隔却变了。

因此,虽然函数间隔能表示分类的正确性和可信度,但其无法表示出间隔的数量大小。

(定性表示),5.2.1函数间隔与几何间隔,5.2线性分类,补充知识:

范数,例如:

1-范数2-范数,5.2线性分类,补充知识:

凸函数,补充知识:

凸二次规划,若Q为正定矩阵,则该问题有唯一的全局最小值。

例如,最简单的正定矩阵就是单位矩阵。

5.2线性分类,或,凸二次规划问题,可以用QP(QuadraticProgramming)优化包进行求解。

通过最大化几何间隔,以达到最小化分类结构风险的目的。

H为最优分类超平面,H1和H2分别为上、下样本中离开分类超平面最小间隔的超平面,H1和H2上的样本点(为距离超平面最近的样本点)为支持向量。

5.2线性分类,5.2线性分类,即,5.2.2对偶问题求解线性可分支持向量机的最优化问题转化为最原始的最优化问题。

通过拉格朗日对偶变换(LagrangeDualityTransform)到对偶变量(DualVariable)的优化问题之后,可以找到一种十分有效的求解方法。

简单地说,通过给每一个约束条件加上一个拉格朗日乘子,便可以通过拉格朗日函数将约束条件融合到目标函数中:

5.2线性分类,5.2.2对偶问题,5.3线性支持向量机,5.3线性支持向量机,目标函数:

于是有,,,由于因此,规划问题演变为,5.3线性支持向量机,5.3线性支持向量机,5.3线性支持向量机,支持向量机是一种可构造唯一决策面的线性分类器,所构造的决策面能够将其到与其最近的训练实例(支持向量)的距离最大化。

复杂性参数C可用于调整容许的间隔错误的总数和严重程度sklean提供了线性分类支持向量机(LinearSVC)的实现,其函数原型为:

classsklearn.svm.LinearSVC(penalty=l2,loss=squared_hinge,dual=True,tol=0.0001,C=1.0,multi_class=ovr,fit_intercept=True,intercept_scaling=1,class_weight=None,verbose=0,random_state=None,max_iter=1000)penalty:

字符串,默认参数值为“l2”。

惩罚类型,指定“l1”或“l2”loss:

字符串,可选“hinge”或“squaredhinge”,默认参数值为“squaredhinge”。

损失函数。

主要参数如下:

C:

浮点数。

惩罚参数。

multi_class:

字符串。

多类分类问题的策略,取值可选“ovr”“crammer_singer”之一,默认参数值为“ovr”。

“ovr”采用one-vs-rest分类策略;“crammer_singer”采用多类联合分类策略。

fit_intercept:

布尔值。

如果为True,则计算截距,即决策函数中的常数项;否则忽略截距。

5.3线性支持向量机,示例:

首先创建可以分离的样本数据集(假定二分类),然后使用sklearn所提供的线性支持向量机(LinearSVC)方法对其进行分类,求取一个支持向量集并绘图,具体代码如下。

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.svmimportLinearSVCfromsklearn.datasetsimportmake_blobs#创建随机分布的,可以分离的400个样本点X,y=make_blobs(n_samples=400,centers=2,random_state=32)#创建LinearSVC对象clf=LinearSVC(C=1000)clf.fit(X,y)#创建LinearSVC对象clf=LinearSVC(C=1000),5.3线性支持向量机,5.3线性支持向量机,clf.fit(X,y)plt.scatter(X:

0,X:

1,c=y,s=30,cmap=plt.cm.Paired)#画出决策函数ax=plt.gca()xlim=ax.get_xlim()ylim=ax.get_ylim()#网格化评价模型xx=np.linspace(xlim0,xlim1,30)yy=np.linspace(ylim0,ylim1,30)YY,XX=np.meshgrid(yy,xx)xy=np.vstack(XX.ravel(),YY.ravel().TZ=clf.decision_function(xy).reshape(XX.shape)#画分类边界ax.contour(XX,YY,Z,colors=k,levels=-1,0,1,alpha=0.5,linestyles=-,-,-)plt.title(MaximummarginusingLinearSVC)plt.show(),sklearn.svm中SVC同样支持线性支持向量机,并且SVC方法中还提供了支持向量的输出。

5.3线性支持向量机,5.4非线性支持向量机,,通过将数据映射到高维空,对于非线性的情况,支持向量机选择一个核函数间,从而解决原始空间中线性不可分的问题。

分类函数定义为:

5.4.1核技巧,5.4非线性支持向量机,补充:

同构,5.4非线性支持向量机,常用的核函数:

5.4非线性支持向量机,5.4非线性支持向量机,当,时,核函数,其中:

一般说来,核函数,,对应的映射后特征维度为,5.4非线性支持向量机,5.4非线性支持向量机,核函数的性质:

5.4.2sklearnSVC,sklearn.svm提供了非线性分类支持向量机(SVC)的实现,其函数原型为classsklearn.svm.SVC(C=1.0,kernel=rbf,degree=3,gamma=auto,coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200,class_weight=None,verbose=False,max_iter=-1,decision_function_shape=ovr,random_state=None)主要参数如下:

C:

浮点数。

惩罚参数。

kernel:

字符串,默认参数值为“rbf”。

核函数,5.4非线性支持向量机,degree:

整数。

指定当核函数是多项式核函数时,多项式的系数gamma:

浮点数,默认参数值为“auto”。

参数。

当核函数为“poly”“rbf”和“sigmoid”时,核函数的系数。

如果为“auto”,则系数默认参数值为coef0:

浮点数,默认参数值为0.0。

核函数中的自由项decision_function_shape:

字符串或None,默认参数值为“ovr”。

决策函数的形状random_state:

整型、RandomState实例或None,5.4非线性支持向量机,5.4非线性支持向量机,示例:

运用特征脸(eigenface)和sklearn.svm.SVC进行人脸识别。

使用一个经过预处理的数据集“LabeledFacesintheWild”(http:

/vis-www.cs.umass.edu/lfw/lfw-funneled.tgz(233MB)),从数据集中找出最有代表性的前5人的预期结果。

主要代码如下:

importmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.model_selectionimportGridSearchCVfromsklearn.datasetsimportfetch_lfw_peoplefromsklearn.metricsimportclassification_reportfromsklearn.metricsimportconfusion_matrixfromsklearn.decompositionimportPCAfromsklearn.svmimportSVC,#下载人脸数据lfw_people=fetch_lfw_people(min_faces_per_person=70,resize=0.4)#introspecttheimagesarraystofindtheshapes(forplotting)n_samples,h,w=lfw_people.images.shape#formachinelearningweusethe2datadirectly(asrelativepixel#positionsinfoisignoredbythismodel)X=lfw_people.datan_features=X.shape1#thelabeltopredictistheidofthepersony=lfw_people.targettarget_names=lfw_people.target_namesn_classes=target_names.shape0#Splitintoatrainingsetandatestsetusingastratifiedkfold,5.4非线

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1