版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章SVM與XGBoost本章內容10.1SVM10.2XGBoost10.3課后習題10.1SVM10.1.1SVM的基本概念SVM名為支持向量機算法。它的工作原理很簡單,假設有一個二維特征數據集,數據分為兩類,一類是紅色,一類是藍色,將這個數據集映射在二維坐標系上,如左下圖所示。如何將這兩類進行區分呢?可以找到一條線,將數據集一分為二,左上角都是紅色點,右下角都是藍色點,再有其他數據進行預測時,就看這個點是落在分割線的什么位置,如果在左上,就屬于紅色點,在右下就屬于藍色點。10.1.1SVM的基本概念——最優超平面中間的這條分割線被稱為最優超平面,為什么叫超平面呢?是因為當數據集中的維度大于2時,用于分割數據集的就不是一條線了,而是一個高維平面。如右圖所示,中間的分割平面就是3維數據的最優超平面。可見圖左圖中的分割線是最優超平面的特例。為了便于理解,我們仍然以左圖所示的二維數據為例,介紹SVM的基本概念。10.1.1SVM的基本概念——最優超平面與支持向量何為“最優”呢?仔細觀察并思考,不難想象左圖中能將兩種點進行分割的線段很多,只要在紅藍兩堆節點之間的線都可以將兩類數據進行區分。可是哪個分割線才是最優呢?在保證超平面方向不變且不會出現錯分樣本的情況下移動超平面,會在原來的超平面兩側找到兩個極限位置,通過這些極限位置畫兩條平行虛線。虛線的位置由超平面的方向和距離原超平面最近的幾個樣本的位置決定,兩條虛線之間的垂直距離就是這個超平面對應的分類間隔,不同的超平面的分類間隔通常是不同的,那具有“最大間隔”的兩條平行虛線正中間的分界線就是SVM要尋找的最優超平面。兩條虛線所穿過的樣本點,就是SVM中的支持樣本點,稱為“支持向量”。10.1.2SVM的損失函數現有訓練樣本集(xij,yij),其中i表示樣本編號,j表示特征維度,xi表示樣本i的特征向量,yi是標簽(取值范圍只有-1和1兩種情況,表示兩種類別)。如圖左圖所示為二維特征特例,即將二維特征映射到平面坐標系里,其中一維特征作為橫坐標,另一維作為縱坐標。則最優超平面可以表示為:xi1=axi2+b。即:axi2-xi1+b=0。設w=(a,-1),xi=(xi2,xi1),則超平面可以表達為wxi+b=0,其中x是各個維度的特征向量。在有了最優超平面之后,如果有一個待遇測點xt,將其代入最優超平面公式,w·xt+b=t,可以根據t的符號判斷xt屬于哪一類。wxi+b=010.1.2SVM的損失函數在最優超平面上任取兩點xa和xb,則有
wxa+b=0
wxb+b=0二者相減則可以得到
w(xa-xb)=0前面提到x是各個維度的特征向量,點積為0,說明w和xa-xb是垂直的。因為xa和xb是在最優超平面上的點,所以二者相減之后的直線仍然是沿著最優超平面的,所以w應該是和最優超平面垂直的。xaxb10.1.2SVM的損失函數任意一個藍色的點xp代入最優超平面表達式有:
w·xp+b
=
p同樣,任意一個紅色點xa代入最優超平面表達式有:
w·xr+b
=
r我們可以知道xp和xr是最優超平面右下和左上的點,所以p和r一定不是同一符號。(前文介紹過:如果有一個待遇測點xt,將其代入最優超平面公式,w·xt+b=t,可以根據t的符號判斷xt屬于哪一類)p和r的符號怎么確定呢?我們知道xp點位于最優超平面的下方,是w·x+b=0向右下平移,也就是在截距b上減去一個正數得到的,即w·xp+b-k=0(k>0),因此有w·xp+b=k(k>0),同理對于xr點,w·xr+b+k=0(k>0),因此有w·xp+b=-k(k>0)。所以我們知道當w·xt+b=t且t大于0時,xt屬于最優超平面右下方的藍色類型,如t小于0時,xt屬于最優超平面左上方的紅色類型。xpxr10.1.2SVM的損失函數
可是,我們在各種材料中看到的SVM判斷依據是
如xt位于最優超平面之上,則有w·xr+b>1;
如xt位于最優超平面之下,則有w·xr+b<-1
符號正好與前頁結論相反,且比較標準是1和-1,這是為什么呢?仍假設有某個藍色點xp,有w·xp+b-k=0(k>0),則w·xp+b=k,此時兩邊同時除以-k,則有w·xp/(-k)+b/(-k)=k/(-k),此時規定w/(-k)為新的w,b/(-k)為新的-b,則有w·xp+b=-1,這樣符號就轉過來了。k是多少呢?K是間距的一半,也就是支持向量到最優超平面的距離。xpxr2d10.1.2SVM的損失函數xpxr2d換句話說,我們規定:
(1)對于最優超平面上方的支持向量xr,則有w·xr+b=1,如有點xt使得w·xt+b≥1則xt屬于最優超平面上面的類別;
(2)對于最優超平面下方的支持向量xp,則有w·xp+b=-1,如有點xt使得w·xt+b≤-1則xt屬于最優超平面下面的類別;對于最優超平面上下的支持向量xr、xp有w·(xr-xp)=2·(xr-xp)w線性代數中一個向量除以自身的模長就可以得到向量方向上的單位向量,因此
就是w方向上的單位向量,(xr-xp)得到r點和p點之間的向量,因此.(xr-xp)得到的就是r點和p點之間的向量在w方向上的投影。10.1.2SVM的損失函數不難看出,··(xr-xp)也就是兩倍的邊距。前面介紹過,SVM的中心目標就是找到邊距最大的超平面,即最優超平面,所以我們的目標就是找到
·(xr-xp)的最大值,又因為w·(xr-xp)=2所以
·(xr-xp)=因此SVM的中心目標就是找到
的最大值,也就是找到的最小值。又因為||w||本身是一個開方數,所以將求的
最小值修改為求
的最小值因此
就是SVM的損失函數。xpxr2dw10.1.3拉格朗日對偶函數詳見以下附件推導過程10.1.4核函數很多數據不是線性可分的,如下左圖所示,這些數據呈現環形,無法找到一個最優超平面將它們分成兩部分。當數據無法線性可分,SVM對將原本在低維空間線性不可分的數據映射到高維空間,即將下左圖經過一系列轉化變成下右圖,在高維空間中使其成為線性可分數據,最后尋找最大間隔分類超平面對數據進行劃分。10.1.4核函數由于從原低維空間到新高維空間的映射計算會使得維度發生爆炸似地增長,這給映射過程中的計算帶來了很大地困難,因此SVM引入了核函數,因為雖然也是將特征進行從低維到高維的轉換,但核函數事先在低維上進行計算,將實質上的分類效果表現在了高維上,避免了直接在高維空間中的復雜計算。核函數有二十余種,但常用的只有四種:10.1.4核函數一般情況,線性核函數在線性可分數據中表現非常好,但在非線性可分數據中表現糟糕;高斯徑向基核函數(簡稱RBF)在非線性可分核函數中表現非常好,在線性可分數據中表現也不錯。因此實戰時先選線性核函數,判斷數據集是否線性可分,如果非線性可分就使用高斯徑向基核函數。10.1.5軟間隔如左圖所示數據集,總體看是線性可分的,但是有極個別的藍色點位于紅色點內,也有極個別紅色點位于藍色點內。但為了這些許的異常點使用核函數升維,從而降低SVM整體運算速度又得不償失。10.1.5軟間隔為了處理這種數據,SVM引入了軟件隔概念。原損失函數最優解問題變為:
其中i是各個異常點(“亂入”另一類的點)的編號,ε是異常點到最優超平面的距離,這就相當于在原有損失函數基礎之上,增加考慮了異常點的“懲罰項”,C是懲罰項的重要程度,是一個超參數,其中默認值是1,C越大,懲罰力度越大,即異常點被考慮得越多,實際分錯的點越少,模型越復雜;C越小,懲罰力度越小,異常點被考慮得越少,模型越簡單。10.1.6SVM代碼實現#第一步:導入數據#導入numpy和pandas數據包importnumpyasnpimportpandasaspd#從boston_lishi.csv文件中導入原始數據df=pd.read_csv(r'E:\ruxian_lishi.csv',index_col='Patien')#X為原始數據中不包括target列部分,是由歷史數據中“非結果列”組成的數據X=df.loc[:,(df.columns!='target')]#Y為原始數據中target列部分,是由歷史數據中“結果列”組成的數據Y=df.loc[:,df.columns=='target']10.1.6SVM代碼實現#第二步:數據預處理#缺失值處理df.dropna()#數據標準化fromsklearn.preprocessingimportMinMaxScalerscaler=MinMaxScaler()X=scaler.fit_transform(X)#其他數據預處理將在第6次課介紹10.1.6SVM代碼實現#第三步,建模#將歷史數據按照8:2的比例分隨機分為訓練集和測試集fromsklearn.model_selectionimporttrain_test_splitXtrain,Xtest,Ytrain,Ytest=train_test_split(X,Y,test_size=0.2,random_state=420)#導入SVM工具包fromsklearn.svmimportSVC#創建模型clf=SVC()#訓練模型clf.fit(Xtrain,Ytrain)10.1.6SVM代碼實現#第四步,用測試集檢驗模型預測效果#使用predict方法,根據Xtest預測測試集的結果result=clf.predict(Xtest)#將測試集真實結果和預測結果進行對比df=pd.DataFrame({'真實結果':Ytest.loc[:,'target'],'預測結果':pd.Series(result,index=Ytest.index)})print(df)10.1.6SVM代碼實現#第四步,用測試集檢驗模型預測效果#可以使用一些指標來評價模型表現,例如使用R2值評價多元線性回歸score=clf.score(Xtest,Ytest)print(score)#其他指標(混淆矩陣、recall、AUC值等)與邏輯回歸中的實現方法完全一致,不再贅述10.1.7SVM主要參數kernel,內容為字符串,意為SVM使用何種核函數,例如rbf是指高斯徑向基核函數;gamma,內容是浮點數,意為高斯徑向基核函數公式中的γ;C,內容是浮點數,意為軟件隔“懲罰項”的重要程度。10.2XGBoost10.2.1XGBoost的基本思路XGBoost就是典型的Boosting類算法,它的漢語名稱為“極端梯度提升”,Boosting顧名思義就是“步步提升”,第二個基分類器針對第一個基分類器的結果進行改進,第三個基分類器針對第二個基分類器的結果進行改進,以此類推,預測結果越來越好。XGBoost,是在傳統GBDT(梯度提升算法)基礎之上進行了改進,通過正則化避免過擬合、可以處理稀疏矩陣、并且通過并行優化提升了模型的性能。一句話——好!!^_^XGBoost可以通過sklearn導入,也可以通過xgboost庫單獨導入(xgboost庫獨立與sklearn,由華裔學者陳天奇團隊開發,使用是在anaconda的prompt中通過pipinstallxgboost進行安裝)10.2.1XGBoost的基本思路——構建過程詳見以下附件10.2.2XGBoost實現回歸#XGBoost回歸的實現與其他回歸模型基本一樣,只是導入工具包和建模不同fromxgboostimportXGBRegressorasXGBRreg=XGBR()10.2.3XGBoost實現分類#XGBoost
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機軟件測試員崗位生產安全效果考核試卷含答案
- 固體廢物監測員崗中沖突解決考核試卷含答案
- 墨錠制作工安全技能考核試卷含答案
- 起重機械維修工崗位內部考核試卷含答案
- 高頻電感器制造工崗位安全責任制模擬考核試卷含答案
- 重力勘探工安全防護能力考核試卷含答案
- 腸衣加工工崗中應急能力考核試卷含答案
- 孕期健康宣教計劃模板
- 闌尾炎微創手術指導
- 全陪導游工作總結
- 成品交付保障方案
- 醫療美容外科診所制度完整版及目錄
- 城市更新項目資金申請報告-超長期特別國債投資專項
- 某研發中心工程施工組織設計
- 變壓器淋涂工藝
- 失業保險待遇申請表范本
- 女裝項目融資計劃書
- 鐵路軌道曲線正矢、付矢、超高、加寬(自動)計算表
- 人民警察詢問筆錄模板
- 裝修避坑指南
- 《全國應急廣播體系建設總體規劃》
評論
0/150
提交評論