24小时热门版块排行榜    

查看: 1946  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xmcrobbie

银虫 (小有名气)

[求助] 样本数据归一化的问题求助! 已有5人参与

libsvm自带一个模板里头有个:
a_template_flow_usingSVM_class.m,在进行数据归一化的时候,是调用scaleForSVM(train_data,test_data,0,1);把训练样本和测试样本合在一起进行归一化。最终准确率可以达到98%。这合理吗?我做了测试,如果把训练样本和测试样本分开归一化,准确率会大幅度降低,只有60%多。哪个才是真正的结果呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xmcrobbie

银虫 (小有名气)

引用回帖:
5楼: Originally posted by ilmeiyi at 2014-01-22 13:01:34
极端例子
训练 0 100
测试 25 50

那么分开归一,0当0,100当1,25当0,50当1
统一归一,0当0,100当1,25当0.25,50当0.5

对吗?

我今天无意中用非线性函数log2进行归一化,训练样本和测试样本分开,竟然发现效果很好,但是不知道为什么!

[ 发自小木虫客户端 ]
10楼2014-01-23 11:53:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

yongcailiu

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
以我的了解,两个结果应该都是正确的。原因是,前者中把测试样本进行了训练,所以准确率就高。打个比方,就像我们学习新知识,对于已经学习过的东西,掌握的程度当然好了(98%),而运用已有的知识(只训练训练样本)再来学习新知识,掌握的程度自然会差很多(60%)
2楼2014-01-22 10:32:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xmcrobbie

银虫 (小有名气)

引用回帖:
2楼: Originally posted by yongcailiu at 2014-01-22 10:32:48
以我的了解,两个结果应该都是正确的。原因是,前者中把测试样本进行了训练,所以准确率就高。打个比方,就像我们学习新知识,对于已经学习过的东西,掌握的程度当然好了(98%),而运用已有的知识(只训练训练样本 ...

测试样本只是用来归一化,根本没参与训练!

[ 发自小木虫客户端 ]
3楼2014-01-22 12:14:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stxiahu

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
我觉得是训练样本涵盖的区域没有测试样本大,导致学习测试样本的能力下降。如果把训练和测试样本混合,然后10折交叉验证,只用选作训练的那部分样本归一化,我想得到的测试结果应该有高有低,高的应该接近98%吧。。
4楼2014-01-22 13:00:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见