Python機(jī)器學(xué)習(xí)項(xiàng)目化教程(微課視頻版)課件 第8章 支持向量機(jī)_第1頁
Python機(jī)器學(xué)習(xí)項(xiàng)目化教程(微課視頻版)課件 第8章 支持向量機(jī)_第2頁
Python機(jī)器學(xué)習(xí)項(xiàng)目化教程(微課視頻版)課件 第8章 支持向量機(jī)_第3頁
Python機(jī)器學(xué)習(xí)項(xiàng)目化教程(微課視頻版)課件 第8章 支持向量機(jī)_第4頁
Python機(jī)器學(xué)習(xí)項(xiàng)目化教程(微課視頻版)課件 第8章 支持向量機(jī)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第8章支持向量機(jī)目錄CONTENTS8.1SVM簡介8.2線性SVM算法實(shí)現(xiàn)8.3非線性SVM與核函數(shù)8.4SVM回歸8.5SVM算法實(shí)現(xiàn)8.6本章小結(jié)8.1SVM簡介學(xué)習(xí)基礎(chǔ)學(xué)習(xí)認(rèn)知能力信息素養(yǎng)高支持向量機(jī)是Cortes和Vapnik于1995年提出的一種基于統(tǒng)計(jì)學(xué)習(xí)的二分類模型。它是一種監(jiān)督學(xué)習(xí)方法,在學(xué)習(xí)過程中通過最大化分類間隔使得結(jié)構(gòu)風(fēng)險(xiǎn)最小化。從圖8-2可以看出,能將不同樣本分開的超平面有很多,但只有一條超平面位于兩類樣本的“正”中間,這個(gè)超平面通常用一個(gè)方程d(X)=0來表示,d(X)被稱為判決函數(shù)或決策函數(shù)。圖8-1所示是兩類線性可分的樣本數(shù)據(jù)分布及劃分的示例。圖中的線段就是對樣本分隔的超平面。8.1SVM簡介1.感知機(jī)模型假設(shè)輸入樣本空間,輸出空間是Y={+1,-1},輸入樣本表示樣本的特征向量,即輸入空間的樣本點(diǎn);輸出表示樣本的類別。從輸入樣本空間到輸出樣本空間的函數(shù)可表示為:該函數(shù)稱為感知機(jī)(Perceptron),其中,稱為權(quán)值(Weight)或權(quán)值向量(WeightVector),稱為偏置(Bias),sign為符號函數(shù),即8.1SVM簡介判決函數(shù)若f(x)>0,則屬于正例;若f(x)<0,則屬于負(fù)例。在特征空間中,令判決函數(shù)g(x)=

,線性方程是一個(gè)超平面S,其中w是超平面的法向量,b是超平面的截距。這個(gè)超平面將特征空間劃分為兩部分,這兩部分的樣本點(diǎn)分別被分成正、負(fù)兩例,超平面S就是分離超平面。8.1SVM簡介2模型參數(shù)學(xué)習(xí)任意一點(diǎn)(x,y)到直線的距離為,因此二維樣本點(diǎn)(x,y)到線性方程的距離為,其中,。,對于誤分樣本點(diǎn)(xi,yi),當(dāng)時(shí),有;當(dāng)時(shí),有。因此,

于是誤分樣本點(diǎn)到超平面S的距離為:若超平面S的誤分樣本點(diǎn)個(gè)數(shù)為N,則誤分樣本點(diǎn)到超平面S的總距離為:8.1SVM簡介采用隨機(jī)梯度下降法(StochasticGradientDescent,SGD)學(xué)習(xí)參數(shù)w和b:參數(shù)w和b的迭代更新公式:8.1SVM簡介輸入:訓(xùn)練數(shù)據(jù)集D={(x1,y1),(x2,y2),…,(xN,yN)}、迭代次數(shù)、學(xué)習(xí)率,其中:,Y={+1,-1}。過程:(1)初始化參數(shù):,b=0。(2)對于j=1,2,…,N,當(dāng)為空集,即沒有誤分樣本點(diǎn),則結(jié)束循環(huán),否則轉(zhuǎn)到第(3)步執(zhí)行。(3)任意取X中的樣本點(diǎn)(xi,yi)更新參數(shù)。輸出:感知機(jī)模型參數(shù)w和b,并利用計(jì)算分類的準(zhǔn)確率。8.1SVM簡介利用以上感知機(jī)算法對樣本進(jìn)行分類,其散點(diǎn)圖及分類結(jié)果如圖8-4所示。8.1SVM簡介1.間隔最大化在對樣本數(shù)據(jù)分類時(shí),超平面離數(shù)據(jù)點(diǎn)的間隔越大,產(chǎn)生誤差的可能性就會(huì)越小,也就是分類的確信度越大。因此,為了使分類的確信度盡可能高,需要讓選擇的超平面盡可能地最大化這個(gè)間隔。以最大間隔把兩類樣本分開的超平面,稱之為最大間隔超平面。分類問題中的最大間隔、支持向量表示如圖8-5所示。8.1SVM簡介支持向量就是離最大間隔超平面最近的樣本點(diǎn),根據(jù)前面得到的支持向量到超平面的距離為將上式進(jìn)行變換,進(jìn)而有:8.1SVM簡介SVM算法的目標(biāo)就是最大化這個(gè)幾何間隔d:間隔最大化問題就是求最優(yōu)化問題:8.1SVM簡介這是一個(gè)凸二次規(guī)劃問題,不容易求解,可用拉格朗日乘子法對其對偶問題進(jìn)行求解。對上面的公式構(gòu)造拉格朗日函數(shù):其中,。原問題與對偶問題有相同的解:調(diào)整w和b,使拉格朗日函數(shù)取最小值。8.1SVM簡介將上式代入拉格朗日函數(shù):下面調(diào)整參數(shù),使目標(biāo)函數(shù)取得最大值:對任意的支持向量(xs,ys),有:8.1SVM簡介輸入:訓(xùn)練數(shù)據(jù)集D={(x1,y1),(x2,y2),…,(xN,yN)}、迭代次數(shù)、懲罰因子C、學(xué)習(xí)率,其中:,

。過程:(1)初始化參數(shù):,b=0。(2)對于j=1,2,…,N:①計(jì)算誤差向量,其中。②取出誤差最大的一項(xiàng),即。③如果,則退出循環(huán);否則對該樣本數(shù)據(jù)利用隨機(jī)梯度下降算法進(jìn)行優(yōu)化:

輸出:SVM模型參數(shù)w和b,并利用計(jì)算分類的準(zhǔn)確率。8.2線性SVM算法實(shí)現(xiàn)1分別隨機(jī)生成兩類樣本數(shù)據(jù)各20條,繪制散點(diǎn)圖#生成二維正態(tài)分布的樣本數(shù)據(jù)mu=np.array([3,5])Sigma=np.array([[1,0],[0,2]])#半正定矩陣Q=np.linalg.cholesky(Sigma)sigma=np.array([2,4])x1=np.random.normal(0,1,(20,2))8.2線性SVM算法實(shí)現(xiàn)為了訓(xùn)練SVM算法中的w和b參數(shù),可利用cvxopt模塊庫中的solvers.qp函數(shù)求解,其格式為cvxopt.solvers.qp(P,q[,G,h[,A,b[,solver[,initvals]]]])。二次規(guī)劃問題的標(biāo)準(zhǔn)形式如下:Gx≤b表示的是所有的不等式約束,同樣,若存在諸如x≥0的限制條件,也可以通過乘以?1轉(zhuǎn)換為≤的形式。Ax=b表示所有的等式約束。8.2線性SVM算法實(shí)現(xiàn)#y的內(nèi)積r=np.inner(y,y)#定義凸優(yōu)化pq方法p=matrix(r*m)#目標(biāo)函數(shù)q=matrix(np.ones(40)*-1)A=matrix(y.reshape(1,-1))#定義等式約束b=matrix(0.)#定義不等式約束g=matrix(np.vstack((np.eye(40)*-1,np.eye(40))))h=matrix(np.vstack((np.zeros(len(y)).reshape(-1,1),np.ones(len(y)).reshape(-1,1)*C)))8.3非線性SVM與核函數(shù)所謂線性不可分,是指用線性分類器進(jìn)行劃分時(shí),存在一些樣本會(huì)被誤分類的情況。對于在有限維度向量空間中線性不可分的樣本,我們將其映射到更高維度的向量空間里,再通過間隔最大化的方式,學(xué)習(xí)得到支持向量機(jī),就是非線性SVM。8.3非線性SVM與核函數(shù)對于圖8-7中線性不可分問題,在原空間中無法用一條直線將正例和副例正確分隔開來,但可通過一個(gè)圓形曲線分隔開來,這就屬于非線性分類問題。而求解分隔超曲面要比求解分隔超平面復(fù)雜得多,但我們可以將這樣的非線性分類問題通過非線性變換,將原空間中的數(shù)據(jù)映射到高維的空間H中8.3非線性SVM與核函數(shù)序列最小優(yōu)化(SequentialMinimalOptimization,SMO)算法作為非線性SVM的典型代表,于1998年由JohnPlatt提出,目前被廣泛應(yīng)用于各領(lǐng)域。SMO算法的思想是將大的優(yōu)化問題轉(zhuǎn)換為多個(gè)小優(yōu)化問題,這些小的優(yōu)化往往很容易求解,并且對其進(jìn)行順序求解和作為整體求解的結(jié)果是完全一致的。輸入:訓(xùn)練數(shù)據(jù)集D={(x1,y1),(x2,y2),…,(xN,yN)}、迭代次數(shù)、容錯(cuò)誤差,其中:,={+1,-1}。過程:(1)初始化參數(shù):,,計(jì)算核矩陣:

8.3非線性SVM與核函數(shù)2)對于j=1,2,…,N:①選擇違反KKT條件最嚴(yán)重的樣本點(diǎn)(xi,yi),若違反程度小于容錯(cuò)誤差,則退出循環(huán)。②否則,選擇其他任何一個(gè)樣本點(diǎn),其對應(yīng)下標(biāo)為j,針對和,構(gòu)造一個(gè)新的只有兩個(gè)變量的二次規(guī)劃問題,并求出解析解。具體地說,就是更新參數(shù):8.3非線性SVM與核函數(shù)③利用更新、b1:④利用和進(jìn)一步更新b1、b2和ei:⑤利用和更新預(yù)測向量:8.3非線性SVM與核函數(shù)根據(jù)SMO算法描述,我們來實(shí)現(xiàn)SVM分類器。在構(gòu)造SVM分類器之前,首先加載樣本數(shù)據(jù),觀察散點(diǎn)圖的分布情況,如圖8-8所示。#利用測試樣本進(jìn)行評測error_count=0test_dat_mat=np.mat(test_data)test_label_mat=np.mat(test_label).transpose()rows,cols=np.shape(test_dat_mat)foriinrange(rows):kernel_eval=kernel_value(sv_sample,test_dat_mat[i,:],('rbf',k))pre=kernel_eval.T*np.multiply(sv_label,lambdas[sv_index])+b#預(yù)測值

ifnp.sign(pre)!=np.sign(test_label[i]):error_count+=1accuracy=100*(1-float(error_count)/rows)print("準(zhǔn)確率:%%%f"%(accuracy))總迭代次數(shù):141[01256712192023343637384143454651]有19個(gè)支持向量準(zhǔn)確率:%100.0000008.4SVM回歸SVM也可以用于解決回歸問題。假定訓(xùn)練數(shù)據(jù)集D={(x1,y1),(x2,y2),…,(xN,yN)},回歸模型就是要讓與y盡可能接近,以確定w和b的值。f(x)-與f(x)+之間的區(qū)域稱為街道或管道區(qū)域。最小化誤差函數(shù)的優(yōu)化目標(biāo)為:8.5SVM算法實(shí)現(xiàn)──鳶尾花的分類SVM可分為兩類:支持向量機(jī)分類(SupportVectorClassification,SVC)和支持向量機(jī)回歸(SupportVectorRegression,SVR)。data_X,data_y=load_data()X_train,X_test,y_train,y_test=split_data(data_X,data_y)show_data(X_train,y_train)#使用linear線性核函數(shù),C越大分類效果越好,但可能會(huì)過擬合

linear_svm=svm.SVC(C=1,kernel='linear',decision_function_shape='ovr').fit(X_train,y_train)#使用rbf徑向基核函數(shù)rbf_svm=svm.SVC(C=1,kernel='rbf',gamma=1).fit(X_train,y_train)#使用poly多項(xiàng)式核函數(shù)

poly_svm=svm.SVC(kernel='poly').fit(X_train,y_train)defSVC(C=1.0,kernel='rbf',degree=3,gamma='auto_deprecated',coef0=0.0,shrinking=True,probability=False,tol=1e-3,cache_size=200,class_weight

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論