R 支持向量机①

简介: 机器学习R语言有很多包可以做机器学习(Machine Learning)的任务。机器学习的任务主要有有监督的学习方式和无监督的学习方式。有监督学习:在正确结果指导下的学习方式,若是正确结果是定性的,属于分类问题;若正确结果是定量的,属于回归问题。

机器学习

  • R语言有很多包可以做机器学习(Machine Learning)的任务。机器学习的任务主要有有监督的学习方式和无监督的学习方式。
  • 有监督学习:在正确结果指导下的学习方式,若是正确结果是定性的,属于分类问题;若正确结果是定量的,属于回归问题。
  • 无监督学习:在没有正确结果指导下的学习方式,例如:聚类分析、降维处理等

支持向量机

  • 支持向量机(Support Vector Machine,常简称为SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。支持向量机属于一般化线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。

  • 支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。

  • 假设给定一些分属于两类的2维点,这些点可以通过直线分割, 我们要找到一条最优的分割线,如何来界定一个超平面是不是最优的呢?


    img_37f9cad5394ed1076162bdaef7528b95.png
    image

R包

  • R的函数包e1071提供了libsvm的接口。使用e1071包中svm函数可以得到与libsvm相同的结果。write.svm()更是可以把R训练得到的结果写为标准的Libsvm格式,以供其他环境下libsvm的使用。下面我们来看看svm()函数的用法。有两种格式都可以。
svm(formula,data=NULL,…,subset,na.action=na.omit,sacle=TRUE)

或者

svm(x, y = NULL, scale = TRUE, type = NULL, kernel =

"radial", degree = 3, gamma = if(is.vector(x)) 1 else 1 / ncol(x),

coef0 = 0, cost = 1, nu = 0.5,

class.weights = NULL, cachesize = 40, tolerance =0.001, epsilon = 0.1,

shrinking = TRUE, cross = 0, probability = FALSE,fitted = TRUE,

..., subset, na.action = na.omit)

参数详解

主要参数说明如下:

  • subset:可以指定数据集的一部分作为训练数据。
  • na.cation:缺失值处理,默认为删除缺失数据。
  • scale:将数据标准化,中心化,使其均值为0,方差为1,将自动执行。
  • type:svm的形式。为:C-classification ,nu-classification,one-classification(for novelty detection) ,eps-regression, nu-regression 五种形式。后面两者为做回归时用到。默认为C分类器。
  • kernel:在非线性可分时,我们引入核函数来做。默认为高斯核。顺带说一下,在kernel包中可以自定义核函数。
  • degree:多项式核的次数,默认为3
  • gamma:除去线性核外,其他核的参数,默认为1/数据维数
  • coef0:多项式核与sigmoid核的参数,默认为0.
  • cost:C分类中惩罚项c的取值
  • nu:Nu分类,单一分类中nu的值
  • cross:做k折交叉验证,计算分类正确性。
  • 代码
> if(!suppressWarnings(require(e1071)))
+ {
+   install.packages('e1071')
+   require(e1071)
+ }
> setwd("E:\\Rwork")
> data(iris)
> 
> ir<-iris
> 
> set.seed(123)
> 
> index <- sample(nrow(ir),0.75*nrow(ir))
> data_train <- ir[index,]
> data_test <- ir[-index,]
> sv<-svm(Species~.,data=data_train,cross=5,type='C-classification',kernel='sigmoid')
> 
> summary(sv)  #查看支持向量机sv的具体信息,发现做5倍交叉验证的正确率为92%

Call:
svm(formula = Species ~ ., data = data_train, cross = 5, type = "C-classification", kernel = "sigmoid")


Parameters:
   SVM-Type:  C-classification 
 SVM-Kernel:  sigmoid 
       cost:  1 
      gamma:  0.25 
     coef.0:  0 

Number of Support Vectors:  47

 ( 6 19 22 )


Number of Classes:  3 

Levels: 
 setosa versicolor virginica

5-fold cross-validation on training data:

Total Accuracy: 88.39286 
Single Accuracies:
 81.81818 95.45455 91.30435 86.36364 86.95652 



> 
> 
> pre<-predict(sv,data_test)#对测试样本作预测。pre是一个类别向量。
> 
> dim(data_test[data_test$Species!=pre,])[1]/dim(data_test)[1]#计算错误率
[1] 0.1315789


> table(pre,data_test$Species)
            
pre          setosa versicolor virginica
  setosa         11          0         0
  versicolor      0         10         2
  virginica       0          3        12


plot(sv, iris, Petal.Width ~
+        
+        Petal.Length, slice = list(Sepal.Width = 3,
+                                   
+                                   Sepal.Length = 4))
img_09d73d51ea6bdbea777d618cb8d64cb7.png
目录
相关文章
|
11月前
|
人工智能 安全 算法
上交大、上海人工智能实验室开源首个多轮安全对齐数据集 SafeMTData
最近,以 OpenAI o1 为代表的 AI 大模型的推理能力得到了极大提升,在代码、数学的评估上取得了令人惊讶的效果。OpenAI 声称,推理可以让模型更好的遵守安全政策,是提升模型安全的新路径。
|
自然语言处理 测试技术 人工智能
Meta等最新研究:多token预测,提升大模型推理效率
【6月更文挑战第2天】Meta等机构的研究人员提出了一种新的大型语言模型训练方法——多token预测,以提高样本效率和推理速度。该方法要求模型同时预测多个接下来的token,而非传统的单一token预测,从而减少局部模式依赖,提高模型的宏观决策能力。实验表明,这种方法在提升模型性能和推理速度方面效果显著,尤其在编程任务中表现出色。然而,多token预测可能需要更多计算资源,并不适用于所有NLP任务,其在自然语言处理领域的应用仍有待深入研究。论文链接:https://arxiv.org/abs/2404.19737
511 7
|
机器学习/深度学习
大模型中的Scaling Law是什么?
【2月更文挑战第9天】大模型中的Scaling Law是什么?
17109 3
大模型中的Scaling Law是什么?
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
321 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1331 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。