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

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

时间:2025-01-22 15:59:10浏览次数:1  
标签:SVM 模型 GBM 分类器 房屋 超平面 数据 向量

全文链接:  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 。

标签:SVM,模型,GBM,分类器,房屋,超平面,数据,向量
From: https://www.cnblogs.com/tecdat/p/18686244

相关文章

  • 数学建模学习-朴素贝叶斯分类器(Naive Bayes Classifier)教程(31)
    数学建模学习-朴素贝叶斯分类器(NaiveBayesClassifier)教程(31)写在最前注意本文的相关代码及例子为同学们提供参考,借鉴相关结构,在这里举一些通俗易懂的例子,方便同学们根据实际情况修改代码,很多同学私信反映能否添加一些可视化,这里每篇教程都尽可能增加一些可视化方便同......
  • 用Python实现SVM搭建金融反诈模型(含调试运行)
    1.概述信用卡盗刷一般发生在持卡人信息被不法分子窃取后,复制卡片进行消费或信用卡被他人冒领后激活并消费等情况下。一旦发生信用卡盗刷,持卡人和银行都会遭受一定的经济损失。本节要运用支持向量机分类算法搭建一个金融反欺诈模型。2.数据集使用的数据集共有1000条客户信用......
  • 【大数据】机器学习------支持向量机(SVM)
    支持向量机的基本概念和数学公式:1.线性可分的支持向量机对于线性可分的数据集,其中(x_i\inR^d)是特征向量是类别标签,目标是找到一个超平面,使得对于所有的样本,对于所有(y_i=-1)的样本,(w^Tx_i+b\leq-1)。间隔(M)定义为:目标是最大化间隔,即最小化(\frac{1......
  • 高斯贝叶斯分类器实战
    目录前言实战前言面部皮肤区分数据集来自于UCI网站,该数据集含有两个部分,一部分为人类面部皮肤数据,该部分数据是由不同种族、年龄和性别人群的图片转换而成的;另一部分为非人类面部皮肤数据。两个部分的数据集一共包含245057条样本和4个变量,其中用于识别样本是否为人......
  • 机器学习之支持向量机SVM及测试
    目录1支持向量机SVM1.1概念1.2基本概念1.3主要特点1.4优缺点1.5核函数1.6常用的核函数1.7函数导入1.8函数参数2实际测试2.1二维可视化测试代码2.2多维测试1支持向量机SVM1.1概念支持向量机(SupportVectorMachine,简称SVM)是一种二分类模型,它的基本......
  • SVM支持向量机
    目录算法原理数学基础向量内积(向量点乘)范数对偶问题拉格朗日乘子法​线性可分与线性不可分线性可分线性不可分超平面超平面的定义超平面的作用如何寻找最优的超平面损失函数求解软间隔鲁棒性核函数算法优缺点优点缺点算法API算法原理数学基础向量......
  • 基于FPGA的SVM支持向量机二分类系统实现之Verilog编程设计
    实现基于FPGA的SVM(支持向量机)二分类系统是一项复杂而有前景的任务,尤其是在需要快速决策和低功耗的场景中。以下是对此主题的详细介绍。1.简介支持向量机(SVM)是一种常用于分类和回归分析的监督学习模型。通过使用核函数,SVM可以有效地处理线性不可分问题。在FPGA上实现SVM二......
  • 资料DRV8210PDSGR 12V 电机驱动器、THGBMJG6C1LBAB7 高性能e-MMC存储器、LAN7800-I/Y9
    DRV8210PDSGR12V、1AH桥电机驱动器说明:DRV8210P是一款集成电机驱动器,具有4个N沟道功率FET、电荷泵稳压器和保护电路。三倍电荷泵架构允许该器件在低至1.65V的电压下工作,以适应1.8V电源轨和低电池条件。电荷泵集成了所有电容器,以减小PCB上电机驱动器的整体解决方......
  • AI开发:支持向量机(SVM)鸢尾花模型入门教程- Python 机器学习
    最近接触了一些数据分析的任务,越来越多地听到支持向量机(SVM),之前我们也一起学习过 AI开发:支持向量机(SVM)入门教程-Python机器学习今天我们再由浅入深的地来重温和学习这个AI算法,以便我们进一步掌握如何熟悉和使用这一AI大杀器。SVM用在哪里 --文本分类垃圾邮件过滤:通......
  • R:SVM-RFE特征筛选与分类性能分析脚本
    #清理环境和设置工作目录rm(list=ls())setwd("C:\\Users\\Administrator\\Desktop\\machinelearning\\SVM-RFE\\CAZy")set.seed(127)#加载数据input<-read.table("matched_otu.txt",header=TRUE,row.names=1,sep="\t")......