您的位置:首页 > 其它

使用libsvm进行回归预测

2016-09-10 10:48 316 查看

如何使用libsvm进行回归预测
http://www.matlabsky.com/thread-12390-1-1.html

(出处: MATLAB技术论坛)

强烈建议您看这个之前先好好看看这个:

如何使用libsvm进行分类
http://www.matlabsky.com/thread-12379-1-1.html

这里将这个帖子记为(帖子*)

其实我个人感觉分类和回归本质一样的,分类搞清楚了的话,回归也就应该会的了。但有好多朋友对于使用libsvm进行分类会了,但使用libsvm进行回归就行不明白,我也搞不懂,道理都一样的啊,我最开始接触libsvm的时候就是弄明白分类然后回归自然而然就明白了的啊!

好吧,不管了,还是在这里把使用libsvm进行回归预测也说说吧~。

回归和分类本质都是一样,就是有一个输入(属性矩阵或者自变量)然后有输出(分类是分类标签,回归是因变量),也就是相当于一个函数:

                Y = f(x)
利用训练集合已知的x,y来建立回归模型model,然后用这个model去预测。
这里面的x就相当于帖子*中的那个属性矩阵data,y相当于帖子*中的label,这样理解就很简单了。我们看下面一个简单的利用libsvm进行回归的例子:

%% HowToRegressUsingLibsvm

% by faruto @ faruto's Studio~

% http://blog.sina.com.cn/faruto
% Email:faruto@163.com

% http://www. href="http://www.matlabsky.com/" target=_blank>MATLABsky.com

% http://www.mfun.la
% http://video.ourmatlab.com
% last modified by 2010.12.28

%% a litte clean work

tic;

close all;

clear;

clc;

format compact;

%%

% 生成待回归的数据

x = (-1:0.1:1)';

y = -x.^2;

% 建模回归模型

model = svmtrain(y,x,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');

% 利用建立的模型看其在训练集合上的回归效果

[py,mse] = svmpredict(y,x,model);

figure;

plot(x,y,'o');

hold on;

plot(x,py,'r*');

legend('原始数据','回归数据');

grid on;

% 进行预测

testx = 1.1;

display('真实数据')

testy = -testx.^2

[ptesty,tmse] = svmpredict(testy,testx,model);

display('预测数据');

ptesty

%%

toc

复制代码
运行结果:



回归.jpg (55.06 KB, 下载次数: 866)

下载附件  保存到相册

2010-12-28 10:14 上传

Mean squared error = 9.52768e-005 (regression)

Squared correlation coefficient = 0.999184 (regression)

真实数据

testy =

   -1.2100

Mean squared error = 0.0102555 (regression)

Squared correlation coefficient = -1.#IND (regression)

预测数据

ptesty =

   -1.1087

Elapsed time is 0.133552 seconds.

复制代码
上面的代码是对于二次函数y = x^2在[-1,1]上进行回归,并对于testx=1.1进行预测,这里面由于我们知道真实的因变量testy = -1.21,按道理说做预测是不知道待预测的目标量是什么的,否则还预测什么?这里就有好多朋友产生疑惑,说如果不知道待预测的目标量是什么怎么办?答曰:那就随便写一个就行啊!然后又有的朋友会说,那这样生成的回归指标(mse均方根误差,和平方回归系数很不理想啊),操~本身真实的因变量都不知道,这些参考指标在真实的因变量不知道的情况下是没有参考价值的。以前我看到这样的问题,真的抓狂,就不能自己动脑子稍微想一下吗!?

上面使用的参数说明:

 -s svm类型:SVM设置类型(默认0)

  0 -- C-SVC

  1 --v-SVC

  2 – 一类SVM

  3 -- e -SVR

  4 -- v-SVR

  -t 核函数类型:核函数设置类型(默认2)

  0 – 线性:u'v

  1 – 多项式:(r*u'v + coef0)^degree

  2 – RBF函数:exp(-r|u-v|^2)

  3 –sigmoid:tanh(r*u'v + coef0)

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)

-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)

-p p:设置e -SVR 中损失函数p的值(默认0.1)

更多关于libsvm 参数的说明请看

libsvm 参数说明【中英文双语版本】
http://www.matlabsky.com/thread-12380-1-1.html

如果对于标签设置问题您还没有搞懂可以再看看这个:

【转】Matlab中使用libsvm进行分类预测时的标签问题再次说明
http://www.matlabsky.com/thread-12396-1-1.html

更多关于SVM的东西请看:

关于SVM的那点破事[长期更新整理 by faruto]
http://www.matlabsky.com/thread-10966-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习 算法
相关文章推荐