在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
带上R语言,学习支持向量机
长话短说,R语言是一款集统计分析和作图于一体的自由、免费、可编程软件(R3.6.1下载地址:https://mirrors.tuna.tsinghua.edu.cn/CRAN/ )。Rstudio是R语言的IDE,在编程过程中有自动扩写、使用界面help、创建R-markdown、project、以及各种快捷方式的使用,所以大多都会用Rstudio进行工作。【tip:Rstuidio需要在安装R语言后才能正常工作,下载地址:https://rstudio.com/products/rstudio/download/#download 】 在R语言里,你想要实现t检验,方差分析,模型建立等,都要使用相应函数。那么,函数在哪里?在各个不同的安装包里:你需要使用的函数在哪个包,你就下载使用哪个包。在根据函数里的参数,设置相应条件即可。
那么,怎么知道需要使用安装包: 1)R语言是有base包的,这个包你不需要下载,里面就有很多基础函数供你选择。当你需要实现某个功能时,百度一下,你就知道需要应该使用哪个函数; 2)如果你输入的相应函数,R语言提示错误,那就说明,你需要安装相应的包。
R语言需要知道的安装包基础: 1)安装包:install.packages(“PackageName”)【有引号】 2)应用包:library(PackageName)【没有引号】 3)可以使用包里的自带函数了。 2 支持向量机2.1 简要说明l SVM是一种有监督二分类机器学习模型,包括线性可分SVM和非线性可分SVM; l 线性可分时,可用硬间隔和软间隔最大化学习SVM。线性不可分时,通过核技巧和软间隔最大化学习SVM; l 当SVM训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关; https://zhuanlan.zhihu.com/p/77750026 2.2 解释:什么是支持向量支持向量机的原理,是想要在分类数据中,找到一个平面,把两类数据分开。这样的平面可能有很多,但要找到一面最优的:两类数据中,距离分离平面最近的样本点的距离最大,就是最优的分离超平面(使margin最大),样本中距离超平面最近的一些点,就叫支持向量,如图:
带上R语言,学习支持向量机
1 R语言长话短说,R语言是一款集统计分析和作图于一体的自由、免费、可编程软件(R3.6.1下载地址:https://mirrors.tuna.tsinghua.edu.cn/CRAN/ )。Rstudio是R语言的IDE,在编程过程中有自动扩写、使用界面help、创建R-markdown、project、以及各种快捷方式的使用,所以大多都会用Rstudio进行工作。【tip:Rstuidio需要在安装R语言后才能正常工作,下载地址:https://rstudio.com/products/rstudio/download/#download 】 在R语言里,你想要实现t检验,方差分析,模型建立等,都要使用相应函数。那么,函数在哪里?在各个不同的安装包里:你需要使用的函数在哪个包,你就下载使用哪个包。在根据函数里的参数,设置相应条件即可。
那么,怎么知道需要使用安装包: 1)R语言是有base包的,这个包你不需要下载,里面就有很多基础函数供你选择。当你需要实现某个功能时,百度一下,你就知道需要应该使用哪个函数; 2)如果你输入的相应函数,R语言提示错误,那就说明,你需要安装相应的包。
R语言需要知道的安装包基础: 1)安装包:install.packages(“PackageName”)【有引号】 2)应用包:library(PackageName)【没有引号】 3)可以使用包里的自带函数了。 2 支持向量机2.1 简要说明l SVM是一种有监督二分类机器学习模型,包括线性可分SVM和非线性可分SVM; l 线性可分时,可用硬间隔和软间隔最大化学习SVM。线性不可分时,通过核技巧和软间隔最大化学习SVM; l 当SVM训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关;
2.2 解释:什么是支持向量支持向量机的原理,是想要在分类数据中,找到一个平面,把两类数据分开。这样的平面可能有很多,但要找到一面最优的:两类数据中,距离分离平面最近的样本点的距离最大,就是最优的分离超平面(使margin最大),样本中距离超平面最近的一些点,就叫支持向量,如图:
如果二维平面无法线性可分,则选用核函数将数据映射至三维层面,此时,也会找到一面最优的分离超平面,如图:
距离超平面最近的样本点,即为支持向量。 2.3 解释:最大间隔-硬间隔-软间隔线性可分支持向量机对应着能将数据正确划分并且间隔最大的直线,间隔最大是为了让离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点。以最小的成本保证最大的正确划分概率。那么,这个最大距离怎么算? 超平面划分可通过如下公式表示:
其中,为法向量,决定了超平面的方向,为位移量,决定了超平面与原点的距离。如果超平面能够将训练集数据()正确划分,应满足以下公式:
上面左边公式被称为最大间隔假设, 表示样本为正样本, 表示样本为负样本。满足以上右式的样本,即为支持向量。而不同类支持向量之间的间隔,等于两个异类支持向量的差在方向上的投影。所以,要想间隔最大化,就有了以下约束条件:
采用拉格朗日乘子法对其对偶问题求解(引入变量),对和进行偏导带入拉格朗日函数,就可以将原问题转为关于的问题。最终返回函数,即可得到进而求得。即得到最大间隔超平面。 硬间隔指:完全分类准确,其损失函数不存在;对数据质量和SVM要求很高; 软间隔:允许一定量的样本分类错误。在线性不可分的数据下,均使用软间隔最大化学习支持向量机模型。 2.4 核函数核函数是应对数据线性不可分情形产生的,如果原始空间维数是有限的,即属性有限,那么一定存在一个高维特征空间使样本可分。支持向量机包括5种核函数:线性核、多项式核、高斯核、拉普拉斯核及sigmoid核。其函数表达如下表所示:
令表示将映射后的特征向量,于是在特征空间中,划分超平面所对应的的模型可表示为:
与最大间隔算法步骤相同,得到约束函数:
其对偶问题运算涉及到特征空间之后的内积,而特征空间的维数可能很高,甚至是无穷维,所以此路不是一条好路,有可能会撞墙。因此,核函数就登场了。特征空间之后的内积此时可转化为在原始样本空间中通过函数 κ()计算的函数值。有了核函数,最终对超平面求解为:
实际操作中,样本量不同,参数设置不同,所以大家的核函数也不同。 3 R语言实现支持向量机(以影像组数数据为例)数据:使用工作中的影像数据为例,样本量85,特征数28(T2序列的影像特征经数据预处理及Lasso回归得到),预测变量五年生存率。 方法:支持向量机建立模型(svm)、Roc曲线表征模型(需要包:pRoc),采用70%样本进行训练,剩余30%样本进行预测。 结果:模型AUC值为0.88。 具体代码及结果如下: 3.1 需要包加载library(e1071) # 支持向量机建模 3.2 数据读入setwd("I:\\9-SWH论文合作") # 设置工作路径 3.3 建模,作图Rows
<- nrow(RadiomicsData) # 样本数【多少行即多少人】 解释:1:e1071包的函数svm用于支持向量机模型构建,可使用模型参数如下表所示:
2:predict函数是base包函数,第一个参数是建立的模型,第二个参数是输入的待预测数据集。因为模型是用全部因变量建立的,所以输入的数据集要将测试集的响应变量删去。Predict后的结果就是预测的响应变量值,将其与真实值作比较,就知道模型如何。 3.4 pRoc作图PicPRoc
<- roc(Presvm,Testsvm[,ncol(Testsvm)])
#运用pRoc包的roc函数计算roc plot(PicPRoc,xlim=c(1,0),ylim=c(0,1),main = "ROC Curve in Model SVM",xlab = "specitivity",ylab = "sensitivity") %>% print()
|
请发表评论