加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【重要】利用libsvm对数据回归预测时,进行归一化处理总结

(2012-09-08 11:23:35)
标签:

缩放

准确率

参数

训练

a1

分类: 模型算法,高频交易

 

svm-scale有两点好处,第一点是加快训练速度,第二点是比没归一化前同样的条件训练出来的模型准确率更高。

 

该过程要用到libsvm软件包中的svm-scale.exe

svm-scale用法:

用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值: lower = -1,upper = 1,没有对y进行缩放) 其中, -l:数据下限标记;lower:缩放后数据下限; -u:数据上限标记;upper:缩放后数据上限; -y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为 –y -1 1 ) -s save_filename:表示将缩放的规则保存为文件save_filename; -r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放; filename:待缩放的数据文件(要求满足前面所述的格式)。

缩放规则文件可以用文本浏览器打开,看到其格式为:

y

lower upper

min max

x

lower upper

index1 min1 max1

index2 min2 max2

其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表 示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。

如果使用svm-scale,训练数据使用归一化后的数据(x,y都需要归一化),测试数据也必须使用归一化后的数据,最后回归结果也是归一化后的y值,所以需要了解y的反归一化才能知道实际的预测值。

归一化程序为:

SVM训练结果参数说明 <wbr><wbr>训练参数说明 <wbr><wbr>归一化加快速度和提升准确率 <wbr><wbr>归一化还原
上图对x进行归一化
SVM训练结果参数说明 <wbr><wbr>训练参数说明 <wbr><wbr>归一化加快速度和提升准确率 <wbr><wbr>归一化还原
上图对回归目标y进行归一化


以上两个截图是libsvm2.91版本中svm-scale.c文件里对y和x归一化的程序。

x的归一化程序:

value = lower + (upper-lower) * (value-feature_min[index])/(feature_max[index]-feature_min[index]);

y的归一化程序:

value = y_lower + (y_upper-y_lower) * (value - y_min)/(y_max-y_min);

上面代码是实现的以下归一化公式:

SVM训练结果参数说明 <wbr><wbr>训练参数说明 <wbr><wbr>归一化加快速度和提升准确率 <wbr><wbr>归一化还原

反归一化程序:

y=(((y`-y_lower)*(y_max-y_min)/(y_upper-y_lower))+y_min)

y`为归一化后预测出来的值,是归一化的值,不是实际的值,y是反归一化出来的实际值。

反归一化公式类似前面的归一化公式,只是将上面归一化公式的min和lower的位置交换,max和upper的位置交换

 

其中value为归一化后的值,其他参数与前面介绍的相同。

建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有