Advertisement

基于支持向量机SVM的房价预测,基于支持向量机SVM的回归分析

阅读量:

支持向量机(SVM)是一种二分类模型,基于间隔最大化的线性分类器,通过核技巧扩展到非线性分类。其学习策略是间隔最大化,可形式化为凸二次规划问题。SVM在数据集上进行最大间隔超平面求解,支持非线性分类并通过核函数实现。应用实例中,基于SVM的MATLAB代码用于股票价格预测,效果图显示了预测与实际值的对比,结果分析表明SVM在房价预测中表现优异,扩展了其应用范围并解决了小样本训练问题。

目录

SVM的深入解析及其在房价预测问题中的实践应用

支持向量机SVM的详细原理

SVM的定义

支持向量机(Support Vector Machines, SVM)是一种对数据进行二分类的广义线性分类器,其核心模型是通过最大化间隔实现的线性分类器。与感知机相比,SVM通过引入核技巧实现了非线性分类能力。其学习策略基于间隔最大化原则,可被建模为一个凸二次规划问题的求解,同时等价于一种正则化合页损失函数的最小化问题。SVM的学习算法则基于求解凸二次规划的最优化算法。

(2)SVM通过采用损失函数来估计其经验风险,并在求解系统中引入正则化项以优化结构风险,其稀疏性和稳健性使其在分类任务中表现出色。

(3)SVM可以通过引入核函数进行非线性分类。

SVM理论

1,线性可分性

在这里插入图片描述

2,损失函数

在这里插入图片描述
在这里插入图片描述

3,核函数

在这里插入图片描述
在这里插入图片描述

SVM应用实例

基于SVM的股票价格预测MATLAB代码

tic
%% 加载数据
clc
clear
close all
format long
format compact%% 网络结构建立
%读取数据
data=xlsread(‘最终数据.xlsx’,‘B2:N97’);
input=data(:,2:end);%输入
output=data(:,1);%输出
% 归一化
[inputn,inputns]=mapminmax(input’,0,1);
data=inputn’;
[outputn,outputns]=mapminmax(output’,0,1);
output1=outputn’;
%% 随机划分数据集 86组为训练集 剩下10组为测试集
rand(‘seed’,0)
[~,n]=sort(rand(size(output1)));
m=86;
P_train=data(n(1:m)😅;
T_train=output1(n(1:m)😅;
P_test=data(n(m:end)😅;
T_test=output1(n(m:end)😅;

基于训练集参数的SVM网络训练。已知最佳参数为bestc=2和bestg=10.8。构建训练命令字符串cmd,具体设置为s=3和t=2。通过指定cmd参数进行SVM模型训练。计算预测结果及其准确率。(反归一化处理)将预测结果进行反归一化处理,同时对原始数据进行相应的归一化还原。

figure
绘制预测值的红色实线标记图
继续绘制当前图形
绘制实际值的蓝色圆圈标记图
设置x轴标签为'训练集样本编号'
设置y轴标签为'参数'
设置图形标题为'SVM训练集'
添加图例,标注输出参数和实际参数

%% SVM测试集
x = zeros(size(T_test,1),1);
[predict,fit] = svmpredict(T_test,P_test,model);
% 反归一化
predict1 = mapminmax('reverse',predict,outputns);
T_test = mapminmax('reverse',T_test,outputns);
%% 结果分析
disp('显示结果')
bestc
bestg
%
error = predict1 - T_test;
mse_svm = mse(error);
toc
figure('Position',[100,100,800,800])
plot(predict1,'r-*')
hold on
plot(T_test,'b-o')
xlabel('测试集样本编号')
ylabel('参数')
title('SVM测试集')
legend('输出参数','实际参数')

效果图

在这里插入图片描述
在这里插入图片描述

结果分析

通过图像结果可以看出,SVM在房价预测任务中展现出良好的预测能力。相较于传统二分类SVM,libsvm工具箱不仅支持多分类任务,还具备回归分析能力,显著提升了SVM的适用范围。尤其在小样本难以有效训练的问题上,SVM展现出卓越的优势。

全部评论 (0)

还没有任何评论哟~