SVM模型的深入理解与运用(Python与C#实现)

今天在准备SVM的一个答辩。于是重新深入理解了SVM的原理,从去工作的学长那里了解到现在的面试都已经开始询问SVM的数学原理,而SVM 的学习难点可能在于算法的理解和理论推导,而几个月前由于数学水平的不足而一知半解,现重新回顾,也是有了不一样的体验。并运用C#和Python分别对SVM完成了一定场景情况下的实现预测。

现在机器学习的缺口已经接近饱和,深度学习也只剩于百分之八到九左右,相对于近些年的深度学习,SVM作为传统的机器学习现在仍然具有很深远的指导意义。

下面是对于SVM的简单介绍:

SVM Support Vector Machine 的简称,它的中文名为支持向量机,属于一种有监督的机器学习算法,可用于离散因变量的分类和连续因变量的预测。通常情况下,该算法相对于其他单一的 分类算法(如 Logistic 回归、决策树、朴素贝叶斯、 KNN 等)会有更好的预测准确率,主要是因 为它可以将低维线性不可分的空间转换为高维的线性可分空间。由于该算法具有较高的预测准确率,所以其备受企业界的欢迎,如利用该算法实现医疗诊断、图像识别、文本分类、市场营销等。
该算法的思想就是利用某些支持向量所构成的“超平面”,将不同类别的样本点进行划分。
不管样本点是线性可分的、近似线性可分的还是非线性可分的,都可以利用“超平面”将样本点以较高的准确度切割开来。需要注意的是,如果样本点为非线性可分,就要借助于核函数技术,实现样本在核空间下完成线性可分的操作。关键是“超平面”该如何构造,这在本章的内容中会有所介绍。
运用 SVM 模型对因变量进行分类或预测时具有几个显著的优点:例如,由于 SVM 模型最终所形成的分类器仅依赖于一些支持向量,这就导致模型具有很好的鲁棒性(增加或删除非支持向量 的样本点,并不会改变分类器的效果)以及避免“维度灾难”的发生(模型并不会随数据维度的提 升而提高计算的复杂度);模型具有很好的泛化能力,一定程度上可以避免模型的过拟合;也可以 避免模型在运算过程中出现的局部最优。当然,该算法的缺点也是明显的,例如模型不适合大样本 的分类或预测,因为它会消耗大量的计算资源和时间;模型对缺失样本非常敏感,这就需要建模前 清洗好每一个观测样本;虽然可以通过核函数解决非线性可分问题,但是模型对核函数的选择也同 样很敏感; SVM 为黑盒模型(相比于回归或决策树等算法),对计算得到的结果无法解释。
而SVM又可分为线性可分SVM、线性SVM、非线性可分SVM。当然对于绝大多数问题都是非线性的。 让我们先看一个利用Python实现的SVM预测问题的案例。
这个案例是一个关于森林火灾方面的预测,该数据集一共包含 517 条火灾记录和 13 个变量,其中变量 area 为因变量,表示火灾产生的森林毁坏面积,其余变量主要包含火灾发生的坐标位置、时间、各项火险天气指标、气温、湿度、风力等信息。接 下来利用 SVM 模型对该数据集的因变量做预测分析。所用数据集来自UCI网站。进行SVM预测分析时我们先得进行数据的处理。
# 读取外部数据
forestfires = pd.read_csv(r'C:\Users\Administrator\Desktop\forestfires.csv')
# 数据前 5 行
forestfires.head()

火灾发生的时间
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talentstars

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值