基于SVM-支持向量机解决波士顿房价预测回归问题

简介: 基于SVM-支持向量机解决波士顿房价预测回归问题

认识SVM——支持向量机


什么是支持向量机


支持向量机(SVM),Supported Vector Machine,基于线性划 分,输出一个最优化的 分隔超平面,该超平面不但能将两类正确分开,且使分类间隔 (margin)最大



所有训练数据点距离最优分类超平面的距离都要大于支持向量距 离此分类超平面的距离

支持向量点到最优分类超平面距离越大越好

注意: SVM的终极目标是求出一个最优的线性分类超平面


SVM的核函数


       当在低维空间中,不能对样本线性可分时,将低维空间中的点 映射到高维空间中,使 它们成为线性可分的,再使用线性划分的原理来判断分类边界。 这里有个问题:如果直接采用这种技术在高维空间进行分类或 回归,可能在高维特征 空间运算时出现"维数灾难"!采用核函数技术(kernel trick)可以有效 地解决这样的问题 直接在低维空间用核函数,其本质是用低维空间中的更复杂的 运算代替高维空间中的普 通内积。


常用的核函数


linear:线性核函数 当训练数据线性可分时,一般用线性核函数,直接实现可分

poly:多项式核函数

rbf:径向基核函数/高斯核函数(Radial Basis Function Kernel) gamma值越小,模型越倾向于欠拟合 gamma值越大,模型越倾向于过拟合

sigmod:sigmod核函数

SVM的"硬间隔"与"软间隔"


硬间隔


当支持向量机(SVM)要求所有样本都必须划分正确,这称为 “硬间隔”(hard margin)。


软间隔


到目前为止,我们一直假定存在一个超平面能将不同类的样本 完全划分开。然而,在现 实任务中往往很难确定合适的核函数使得训练样本线性可分(即使 找到了,也很有可能 是在训练样本上由于过拟合所造成的) 缓解该问题的一个办法是允许支持向量机在一些样本上出错, 这称为"软间隔"(soft margin)。



软间隔支持向量机的数学表达式为(L1正则):



或者(L2正则)



注意: 正则项前面的常数C,C越大说明相应的容错空间越小,若C 取正无穷,则"逼迫"着每个ζ(也称为“松弛变量”)都必须等于 0,此时的Soft Margin SVM就变成了Hard Margin SVM.



实战——SVM解决房价预测回归问题


SVM解决回归问题的关键思想


SVM解决回归问题的时候,期望margin里的样本点越多越好。



sklearn中使用SVM解决回归问题,使用sklearn.svm.SVR(可以传 入不同的核函数)

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
# 加载数据集
boston = datasets.load_boston()  # 加载波士顿房子数据集
X = boston.data  # 样本特征
y = boston.target  # 样本标签(房价)
# 拆分数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
# 使用SVR回归
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
def SVRCode():
    return Pipeline([
        ("std",StandardScaler()),   # 特征标准化
        ("svr",SVR(kernel="rbf",C=15))  # SVM解决回归问题
    ])
pipe = SVRCode()
pipe.fit(X_train,y_train)   # 按照Pipeline封装的操作顺序对训练集处理
pipe.score(X_test,y_test)   # 测试集上进行回归效果评价

目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
机器学习-线性模型(波士顿房价预测)
机器学习-线性模型(波士顿房价预测)
|
6月前
|
机器学习/深度学习 算法 数据挖掘
数据分享|WEKA信贷违约预测报告:用决策树、随机森林、支持向量机SVM、朴素贝叶斯、逻辑回归
数据分享|WEKA信贷违约预测报告:用决策树、随机森林、支持向量机SVM、朴素贝叶斯、逻辑回归
|
机器学习/深度学习 传感器 算法
【SVM回归预测】基于支持向量机的数据回归预测(libsvm)附matlab代码
【SVM回归预测】基于支持向量机的数据回归预测(libsvm)附matlab代码
|
机器学习/深度学习 数据挖掘
knn 线性回归 决策树房价预测实战
knn 线性回归 决策树房价预测实战
84 0
|
机器学习/深度学习 算法 API
机器学习梯度下降法应用波士顿房价预测
机器学习梯度下降法应用波士顿房价预测
175 0
|
机器学习/深度学习 传感器 算法
【SVM回归预测】基于支持向量机实现航线预测附matlab代码
【SVM回归预测】基于支持向量机实现航线预测附matlab代码
|
机器学习/深度学习 传感器 算法
【预测模型-SVM预测】基于粒子群算法结合支持向量机SVM实现Covid-19风险预测附matlab代码
【预测模型-SVM预测】基于粒子群算法结合支持向量机SVM实现Covid-19风险预测附matlab代码
|
机器学习/深度学习 算法 TensorFlow
机器学习:线性回归梯度下降预测波士顿房价
机器学习:线性回归梯度下降预测波士顿房价
409 0
机器学习:线性回归梯度下降预测波士顿房价
|
算法 数据挖掘 数据建模
线性回归实战【房价预测】(二)
本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)
165 0
线性回归实战【房价预测】(二)
|
算法 数据挖掘 Python
线性回归实战【房价预测】(一)
本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)
329 0
线性回归实战【房价预测】(一)