版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建省中小学教师招聘笔试备考试题及答案详解
- 2026年九江市庐山区中小学教师招聘笔试参考题库及答案详解
- 2026年晋中市榆次区街道办人员招聘笔试备考试题及答案详解
- 2025年郑州市管城回族区街道办人员招聘考试试题及答案详解
- 2026年专技人员继续教育公需课考试试题含参考答案
- 2026年计算机维修工五级模考试题与参考答案
- 2026年卫生院传染病及突发公共卫生事件、食源性疾病监测培训试题及答案
- 2026年山东农村信用社考试题库附答案
- 2026年电大《合同法》考试题库(含答案)
- 2026年共青团入团考试测试题库及答案
- T/ZBH 004-2018中空玻璃密封胶
- 半导体车间安全培训课件
- T-CASEI 014-2022在役立式圆筒形钢制焊接储罐检验技术规范
- 篮球培训地推话术
- 农产品分装物流服务协议(2024年版)
- 成品交付保障方案
- 医疗美容外科诊所制度完整版及目录
- 城市更新项目资金申请报告-超长期特别国债投资专项
- 失业保险待遇申请表范本
- 女装项目融资计划书
- 铁路轨道曲线正矢、付矢、超高、加宽(自动)计算表
评论
0/150
提交评论