24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2963  |  回复: 20

rainbowguy

银虫 (正式写手)

[求助] 支持向量机参数一定要归一化么?

如题,支持向量机参数一定要归一化么?如果归一化,如有三个参数(x1,x2,x3)的样本数据共1000行,是分别对参数x1、x2、x3中每列数据进行归一化,还是对每行数据(x1,x2,x3)进行归一化?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
rainbowguy: 金币+7 2012-05-21 14:17:51
rainbowguy: 金币+10, ★★★很有帮助 2012-06-06 14:48:00
是否要归一化主要看两点:
1.输入的定义域/输出的值域是否在(0,1)?如果是,那么必须归一化;
2.有时候不同的输入/输出参数在数值上有数量级的差别,或者出现在函数的饱和(不敏感)区域,因此可能造成数值问题。这时候归一化有益于改善数值问题。
5楼2012-05-21 06:59:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

【答案】应助回帖

★ ★
rainbowguy: 金币+2, 有帮助 2012-06-06 14:49:12
引用回帖:
12楼: Originally posted by fluenter at 2012-06-06 14:38:08
您好,归一化以后,得到的输出也是0,1之间的数值吗?是否需要反归一化,还原为真实值?...

是的。需要反归一化,还原为真实值
13楼2012-06-06 14:41:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖
2楼2012-05-20 19:10:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangysu

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
rainbowguy: 金币+5, 有3组参数数据,对列归一就是只对每组参数中数据归一,对行归一就是每次对3个数据(x1,x2,x3)归一。 2012-05-21 14:17:35
rainbowguy: 金币+8, ★★★很有帮助 2012-06-06 14:48:13
不用,可以直接用。
当然也可以归一化。
不过你所说的对列还是行归一化,我不是很明白你的意思,不过我觉得应该是根据列进行归一化。
3楼2012-05-21 00:00:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mlanqiang

木虫之王 (文学泰斗)

蓝博士

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
rainbowguy: 金币+5 2012-05-21 14:17:44
感觉应该可以根据列进行归一吧。
蓝精灵
4楼2012-05-21 05:45:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙傲海

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
rainbowguy: 金币+3 2012-05-21 14:18:12
把每列数据归一化到[0,1]之间
6楼2012-05-21 07:28:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainbowguy

银虫 (正式写手)

rainbowguy: 回帖置顶 2012-05-21 14:26:33
我觉得归一化对于SVM还是很重要的。自己编写了一个SVM的程序,对没有归一化前的数据进行训练,很久没有达到KKT条件,导致运算时间过长而成了死循环;对数据归一化后,就没有出现这种问题了。同时,我觉得一些参数条件的设置也非常重要,比如kkt条件在程序中不能完全限定为y*f(x)==1,这样容易运算很长时间达不到条件要求而造成死循环;而是应该有一个范围 y*f(x)>1-r && y*f(x)<1+r, 其中0 请问各位大虾都有没有遇到这样的情况?都有哪些比较好的解决方法?谢谢了
7楼2012-05-21 14:26:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Go_home

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
rainbowguy: 金币+8, ★★★很有帮助 2012-06-06 14:48:30
不一定非要归一化。matlab中文论坛有个帖子专门讨论过这个问题,参考:http://www.ilovematlab.cn/thread-27021-1-1.html
归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。并不是任何问题都必须事先把原始数据进行规范化,要具体问题具体看待,测试表明有时候规范化后的预测准确率比没有规范化的预测准确率低很多.就最大最小值法而言,当你用这种方式将原始数据规范化后,事实上意味着你承认了一个假设就是测试数据集的每一模式的所有特征分量的最大值(最小值)不会大于(小于)训练数据集的每一模式的所有特征分量的最大值(最小值),但这条假设显然过于强,实际情况并不一定会这样.使用平均数方差法也会有同样类似的问题.
8楼2012-05-21 16:14:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainbowguy

银虫 (正式写手)

引用回帖:
8楼: Originally posted by Go_home at 2012-05-21 16:14:58:
不一定非要归一化。matlab中文论坛有个帖子专门讨论过这个问题,参考:http://www.ilovematlab.cn/thread-27021-1-1.html
归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。并不是任何问题都必须事

对于Go_home 大虾所说的也对,但对于测试数据集中不同特征分量的数据相差几个数量级时,个人觉得还是要归一化比较好。同时,对于这些相差几个数量级的测试数据集,其程序收敛明显得不到保证。针对我的实验数据,当归一化后,其程序收敛明显加快。看来,归一化还是有好的一方面,但也有不足的一方面(如Go_home 所说)。
9楼2012-05-21 16:59:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rainbowguy

银虫 (正式写手)

引用回帖:
9楼: Originally posted by rainbowguy at 2012-05-21 16:59:16:
对于Go_home 大虾所说的也对,但对于测试数据集中不同特征分量的数据相差几个数量级时,个人觉得还是要归一化比较好。同时,对于这些相差几个数量级的测试数据集,其程序收敛明显得不到保证。针对我的实验数据,当

归一化前,程序无法收敛,导致了死循环。
欢迎大虾们讨论解决方案。
10楼2012-05-21 17:01:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 rainbowguy 的主题更新
信息提示
请填处理意见