【视频】R语言支持向量分类器SVM原理及房价数据预测应用及回归、LASSO、决策树、随机森林、GBM、神经网络对比可视化

news/2025/1/22 15:55:27/文章来源:https://www.cnblogs.com/tecdat/p/18686244

全文链接:  https://tecdat.cn/?p=38830

原文出处:拓端数据部落公众号

分析师:Yuqi Liu

在大数据时代,精准的数据分类与预测对各领域的发展至关重要。超平面作为高维空间中的关键概念,可将线性空间一分为二,为数据分类奠定了理论基石。基于此发展而来的最大边缘分类器,通过最大化边际距离,精准划分数据类别,而支持向量分类器则进一步优化,提升了分类的稳健性。

与此同时,在房地产市场中,房价预测一直是研究热点。R 语言凭借其强大的数据分析能力,成为房价预测的有力工具。本文深入剖析超平面、最大边缘分类器与支持向量分类器的原理,详细阐述其在 Khan 数据集上的应用。并创新性地将这些分类技术与 R 语言相结合,运用回归、LASSO、决策树等多种模型预测房价,旨在为数据分类与房价预测领域提供全新的研究思路与方法。

一、超平面

在高维空间中,超平面具有重要意义。在 (p) 维空间里,超平面是 (p - 1) 维的仿射子空间 ,其作用是将线性空间分割为不相交的两个部分。举例来说,在二维空间中,超平面呈现为一维子空间,即我们常见的直线;而在三维空间里,超平面是二维子空间,也就是一个平面。
在二维空间中,超平面的数学定义为:(B_0 + B_1x_1 + B_2x_2 = 0)。将其延伸至 (p) 维空间时,表达式变为 (B_0 + B_1X_1 + B_2X_2 + \cdots + B_pX_p = 0)。当向量 (x) 不满足此等式时,存在两种情况。若 (B_0 + B_1x_1 + B_2x_2 + \cdots + B_px_p > 0),这表明 (x) 处于超平面的一侧;若 (B_0 + B_1x_1 + B_2x_2 + \cdots + B_px_p < 0),则意味着 (x) 位于超平面的另一侧。所以,超平面能够把 (p) 维空间划分成两半。我们可以依据计算上述等式左侧所得到的符号,来判断某一点究竟位于超平面的哪一侧。
从分类的角度来看,可构建函数 (f(x^i)=B_0 + B_1x_1^i + B_2x_2^i + \cdots + B_px_p^i) 。若 (f(x^i)) 的符号为正,可将其判定为类别 (1);若 (f(x^i)) 的符号为负,则判定为类别 (-1) 。通过这样的方式,实现利用超平面对数据进行分类。

二、最大边缘分类器

最大边缘分类器的核心在于计算每个训练数据观测值到给定分割超平面的距离。其中,观测值到超平面的最小距离的长度被定义为边际。边际值最大的分割超平面,就被称作最大边缘超平面。也就是说,最大边缘超平面代表了训练观测数据到超平面最小距离的最大值。从某种程度而言,最大边缘超平面相当于在两类数据之间插入的最宽“板”的中线。
在实际操作中,距离超平面最近且满足一定条件的几个训练样本点被称作支持向量。这些支持向量支撑起了最大边缘超平面。只有当这些支持向量发生改变时,最大边缘超平面才会相应地改动,这意味着最大边缘超平面直接依赖于支持向量 。基于最大边缘超平面,我们能够对训练数据进行分类,这一过程就是最大边缘分类器的工作机制。
例如,图1展示了数据分布以及最大边缘超平面的位置关系。从图中可以直观地看到最大边缘超平面是如何在两类数据之间找到最宽的间隔,从而实现对数据的有效分类。
最大边缘超平面示例

三、支持向量分类器

支持向量分类器,也被称为软边缘分类器。由于最大边缘分类器对数据较为敏感,在实际应用中可能会出现过拟合等问题 。因此,支持向量分类器旨在建立一个对个体观测值更为稳健的模型,能够对大多数训练观测值进行更好的分类。它是以牺牲少部分数据为代价,来实现对剩下观测数据的更优分类。
在数学表达上,通过一系列约束条件来确定模型参数。
在实际应用中,可通过如下代码来实现支持向量分类器(这里仅展示关键部分代码,并非完整代码):

 
  1.  
    # 导入所需库
  2.  
    import numpy as np
  3.  
    from sklearn.svm import SVC
  4.  
    # 假设已有训练数据x_train和y_train
  5.  
    # 创建支持向量分类器对象,设置参数C(对应上述c)
  6.  
    clf = SVC(C = 0.5)
  7.  
    # 训练模型
  8.  
    clf.fit(x_train, y_train)
 

在这段代码中,首先导入了必要的库,其中 numpy 用于数值计算,sklearn.svm 中的 SVC 是支持向量分类器的实现类。然后创建了 SVC 对象,并设置了参数 C 为 (0.5),这里的 C 就是上述提到的调节参数 (c) ,它控制着模型对数据的容忍度。最后通过 fit 方法使用训练数据对模型进行训练 。
可以由松弛变量 (\xi_j) 确定第 (j) 个观测值的位置。若 (\xi_j = 0),说明观测值位于边际正确的一侧;若 (\xi_j > 0),则观测值位于边际错误的一侧;若 (\xi_j > 1),观测值位于超平面错误的一侧。在实际操作时,调节参数 (c) 一般通过交叉验证来获取,以此实现对偏差和方差的平衡。通常情况下,(c) 值小,容忍度小,边际窄,偏差小,方差大;(c) 值大,容忍度大,边际宽,偏差大,方差小 。
例如,从图2中可以看到不同 (c) 值对分类结果的影响。当 (c) 值较小时,模型对数据的容忍度低,边际较窄,分类边界更严格;而当 (c) 值较大时,模型对数据的容忍度高,边际变宽,分类边界相对更宽松。
不同c值对分类结果的影响

四、模拟与实证

本次模拟使用Khan数据集,该数据集由与四种不同类型的小圆蓝细胞肿瘤相对应的多个组织样本构成。对于每个组织样本,都能进行基因表达测量。数据集包含训练数据 (x_{train}) 和 (y_{train}) 以及测试数据 (x_{test}) 和 (y_{test}) 。该数据集涵盖了 (2308) 个基因的表达测量。训练集和测试集分别由 (63) 个和 (20) 个观察结果组成。如图3所示为数据集的相关信息可视化。
Khan数据集信息
通过对超平面、最大边缘分类器以及支持向量分类器的理论分析和在Khan数据集上的模拟,我们可以看到这些方法在数据分类中的有效性和各自的特点。超平面为分类提供了基础的划分依据,最大边缘分类器在寻找最优分类边界上具有独特的优势,而支持向量分类器则通过引入调节参数,在稳健性和分类效果之间找到了更好的平衡。在实际的科研和应用场景中,可根据具体的数据特点和需求,选择合适的分类方法,以实现对数据的准确分类和分析。

R语言软件对房价数据预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化

在房地产市场中,准确地预测房屋价格是至关重要的。过去几十年来,随着数据科学和机器学习的快速发展,各种预测模型被广泛应用于房屋价格预测中。而R语言作为一种强大的数据分析和统计建模工具,被越来越多的研究者和从业者选择用于房屋价格预测

本文将介绍帮助客户使用R语言软件进行房屋价格预测的几种常见方法,包括回归、LASSO、决策树、随机森林、GBM、神经网络和支持向量机(SVM)。通过这些方法的比较和分析,我们将探讨它们在房屋价格预测中的优势和不足,并通过可视化的方式展示它们的预测结果。

首先读取数据。

 
  1.  
    data=read.csv("Amsing.csv")
  2.  
     
 

查看原始数据(直接从Ames评估办公室获得)用于税务评估目的,但本身直接预测房屋售价。

首先查看部分数据,以观看数据中有哪些变量。

 
  1.  
    head(data)
  2.  
     
  3.  
     
 

获取数据的基本统计量。

 
  1.  
    summary(data)
  2.  
     
 

对房屋面积进行可视化,可以让我们对房屋的面积有一个直观的影响,从而也可以排除掉一部分异常点的影响。

从可视化结果来看,可以发现数据中存在较多的异常数据。可能会影响后续的预测过程,因此将它们去除。

查看数据结构

通过查看数据结构,我们可以了解到,哪些数据是数值变量比如房屋面积,总体质量建立年份,哪些数据是因此变量比如街道,土地坡度,房屋状况,哪些数据的因子有哪些。

str(data)

绘制相关散点图

通过绘制相关散点图,我们可以查看数值变量之间存在哪些关系?

看变量之间的相关系数,我们可以找到相关性高的变量:

从相关系数和散点图来看,我们可以看到,房屋价格 和房屋的总体质量,建立年份,房屋面积,房屋层高 等变量存在相关关系。

然后我们查看数据中是否存在共线性问题

 
  1.  
    kappa(corr, exact = T)
  2.  
     
 

查看变量之间的boxplot图

正如我们从不同变量之间的箱线图和上面的房屋销售价格中看到的,高销售价格的房屋有更多的卧室、浴室和车库。

正如我们从房屋售价和质量之间的箱线图上看到的,高售价房屋的质量更高。

提取训练集,测试集

 
  1.  
    indices = sample(nrow(data), nrow(data)*0.7)
  2.  
     
  3.  
     
 

回归模型 linear regression

从回归模型的结果来看,我们可以看到部分变量是显著的,说明他们对房屋的价格,有很大的影响。显著的变量有车库面积,走廊,浴池,总体质量,房屋层高等等。从R方的结果来看,R方等于93%,因此,模型解释了房屋价格大部分的方差,可以说模型的拟合效果非常良好

残差表现来看模型的拟合好坏

左上方的图是一个散点图,用于表示拟合值和残差的关系。从图中可以看到,除了第二个异常值外,其余所有点都在纵坐标值-1和+1之间随机分布。

接下来的图是一个散点图,表示拟合值的标准化偏差和残差的关系,其意义与上述相似。右上方的图显示随机误差项服从正态分布,这是因为正态QQ图可以近似视为一条直线。

右下方的图进一步证实了第二个观察值是一个异常值,它对回归方程的影响相对较大。

lasso 模型

在建立lasso模型之后,我们绘制误差变化图

绘制系数变化图

LASSO回归复杂度调整的程度由参数λ来控制,λ越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。因此误差最小的点对应选取log(lamda)=9为最优模型。

regression trees 回归树模型

拟合模型

绘制决策树

从结果来看,房屋的价格主要受到总体质量,走廊,房屋层高,车库等因素影响

一般来说,车库面积越大,总体质量越高,层高越高,那么价格就越高

然后通过得到的决策树模型进行预测得到误差

random forests 随机森林模型

模型结果

从随机森林模型的结果来看, 一共生成了五百个随机树,房屋价格的方差被解释了76.75%

得到变量,重要性结果

从结果来看,可以得到和决策树类似的结论,可以看到,房屋建立的年份,以及车库面积房屋层高等因素对房屋的价格都有重要的影响。

对变量的重要性进行可视化

在得到模型之后,对测试集进行预测,并且得到误差

GBM模型

从模型结果来看,可以得到和决策树随机森林类似的结果。上面是相对重要性变量的图,可以看到建立年份,车库面积,房屋层高对房屋的价格有重要的影响

neural network 神经网络

建立神经网络模型

从结果来看,得到一个三层的神经网络以及641个神经元,得到的结果已经完全converged。因此模型拟合较好,所以对测试集进行预测,并且得到误差结果

SVM模型

用svm建立分类模型

使用回归核函数数据进行支持,向量机建模

从结果来看,可以得到它的最优参数以及支持向量的个数124个。在得到模型结果后,对测试集进行预测,并且得到误差结果。

总结评估

在对数据进行六个模型建模后,分别得到了每个模型的误差结果,然后我们将所有的误差结果进行汇总,并且比较每个模型的优劣。

测试误差:随机森林最小,回归次之,其他模型较大。准确度:随机森林最优,但训练复杂。效率:回归模型较高。解释度:决策树模型可解释,神经网络不可解释。其他模型需提高准确度。综上,推荐随机森林预测房屋价格。

关于分析师


在此对 Yuqi Liu对本文所作的贡献表示诚挚感谢,她在浙江财经大学完成了应用统计专业的硕士学位,专注机器学习、数据挖掘、数据分析领域。擅长 R 语言、Python、MySQL 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873284.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【信息化】一个IT主管/经理/总监的该做什么?-读图解 CIO 工作指南上半IT管理总结

在这个IT人日益技术焦虑的年代,为了缓解一下学习的焦虑,看各路推荐开始学习一下《图解CIO工作指南》。我的初衷很简单,学习一下IT架构设计的思路,日常IT管理工作怎么优化,以及未来MBA毕业写IT规划论文。 一开始,当我拿到这本看似“老旧”的书籍时,心里确实犯了点嘀咕…

LCD-RGB屏幕学习(二)ESP32驱动RGB屏幕

ESP32是国内比较火的IOT芯片厂商,在个人玩家圈子里备受好评1.器件准备40pin RGB 通用接口屏幕这里的通用接口指的是市面上最常见的接口,并不属于某种标准 我拆开了吃灰已久的树莓派便携HDMI屏幕,在屏库上查看此型号,刚好满足需求,又剩下一笔大洋ESP32N16R8选用带有pasram的…

OM6621F低功耗低成本蓝牙芯片支持BLE5.1和2.4G私有协议集成了电源管理单元(PMU)BMS电池管理领域首选方案

OM6621Fx是一款专为蓝牙低功耗和专有2.4GHz应用设计的功率优化的真系统级芯片(SOC)解决方案。它集成了高性能和低功率的射频收发器,具有蓝牙基带和丰富的外围I0扩展。OM6621Fx还集成了电源管理单元(PMU),以实现高效率的电源管理。它针对2.4GHz蓝牙低功耗系统、专有2.4GHz系统…

Jetpack架构组件学习(6)——使用Glance实现桌面小组件

原文地址: Jetpack架构组件学习(6)——使用Glance实现桌面小组件-Stars-One的杂货小窝公司陆续整了几个Compose写的app,有个小组件的功能,顺便试了下Jetpack库里的Glance框架 感觉与原来的Remoteview差点意思,不过点击事件的使用比Remoteview要方便不少PS: 如果想看Remoteview实…

《操作系统真象还原》第九章 线程(二) 多线程轮转调度

本文是对《操作系统真象还原》第九章(二)学习的笔记,欢迎大家一起交流第九章 线程(二) 多线程轮转调度 本文是对《操作系统真象还原》第九章(二)学习的笔记,欢迎大家一起交流,目前所有代码已托管至 fdx-xdf/MyTinyOS 。 上一节中成功创建了线程并运行,这一节要实现的…

Cisco APIC 6.0(8e)M - 应用策略基础设施控制器

Cisco APIC 6.0(8e)M - 应用策略基础设施控制器Cisco APIC 6.0(8e)M - 应用策略基础设施控制器 Application Policy Infrastructure Controller (APIC) 请访问原文链接:https://sysin.org/blog/cisco-apic-6/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org思科…

clickhouse本地表和分布式表说明(3分片单副本)

环境: clickhouse:24.8.11.51.创建本地表和分布式表 在一个节点上执行即可,我这里配置的分片使用了 defaultclickhouse-client --host 192.168.1.102 --port=9000 use db_test CREATE TABLE tb_test_local ON CLUSTER default (id Int32,name String,timestamp DateTime DEFAUL…

分发测试

协程的IO asyncio 作为实现异步编程的库,任务执行中遇到系统IO的时能够自动切换到其他任务。协程的IO asyncio 作为实现异步编程的库,任务执行中遇到系统IO的时能够自动切换到其他任务。协程使用的IO模型是IO多路复用。在 asyncio 低阶API 一篇中提到过 “以Linux系统为例,I…

【图】数场功能架构图

【图】数场功能架构图(来源:国家数据基础设施建设指引) (1)点:参与方之间的自身数据安全能力约定; (2)线:涉及到网络高可用,可以根据DSMM评估域进行统一约定; (3)面:DSMM中数据生存周期安全,场景化能力约定;

hyperledger

https://topgoer.cn/docs/blockchain_guide/blockchain_guide-1emut2dv80st1Hyperledger 所有项目代码托管在 Github上。目前,主要包括如下顶级项目(按时间顺序)。Fabric:包括 Fabric、Fabric CA、Fabric SDK(包括 Node.Js、Java、Python 和 Go 语言)等,目标是区块链的基…

【图】数联网功能架构图

【图】数联网功能架构图(来源:国家数据基础设施建设指引)

米尔瑞芯微第二代8nm高性能AIOT平台-RK3576开发板怎么样?

文章来源公众号:电子开发学习 瑞芯微近期推出了第二代8nm高性能AIOT平台——RK3576。 RK3576应用方向指向工业控制及网关,云终端,人脸识别设备,车载中控,商显等等。参数方面,内置了四核Cortex-A72+四核Cortex-A53,频率最高2.2GHz,内置ARM G52 MC3 GPU,NPU算力高达6TO…