首页 > 其他 > 详细

卡方选择(chi-square)能用到logistic regression当中么?(二)

时间:2014-02-16 20:51:29      阅读:511      评论:0      收藏:0      [点我收藏+]

对不住看官,先写个草稿,明后天把具体数据补充上去。


继续前一篇写。


4. 实验准备和结果

采用前面Logistic regression中的 LROne projectLRTwo project,都是二值(0-1)分类,分别对应了二值输入和实值输入。简单把卡方值低的特征值置为零来去除该特征,代码参考《动手实现Logistic Regression (c++)_测试_再次》中的代码。实验结果,简单来说,发现效果并没有提升。相对直接去除绝对值小的权重对应的特征,如(一)中谈到的策略,用卡方值做指标来过滤特征,并没有获得性能提升,反而略有下降。因为LROne和LRTwo所采用的数据集合的数据量比较少,特征数目也比较少,其实所谓的性能“上升”和“下降”并不明显,都是小数点后三位的事情,对应于测试集合,也就是不超过十个测试样例的结果不同。至于具体数字,因为都是这两天断断续续在办公室和在家做的,而微软Skydrive的同步又是这么的屎,现在手头上也没有,就不列出来了。但结论是确定的,就是用卡方选择特征,在LR模型中并没有实质性的性能提升。对比《动手实现Logistic Regression (c++)_测试_再次》中的实验结果,用权重绝对值来过滤特征,如(一)中的策略,实验证明是能够缓解过拟合,得到性能的提升的。用卡方的方法,如果思路正确,即便性能不提升,也不至于下降啊。

这是为什么呢?难道我们最初的假设错了?


5. 查看数据

以 LROne project 中的训练数据为例,共10个特征,300个样本。对每个特征,它和两个类别的卡方计算结果如下:


。。。。。???---补充数据


因为只有两个类别,所以每个特征对这两个类别的卡方值计算结果一样。如果是多类别,如《第三次实现Logistic Regression(c++)_接口》中LRThree project的实验,特征和各个类别的卡方值就不同了,这就涉及到一个问题,即便是根据卡方值来选择特征,那么根据哪个卡方值来进行选择?可以参考我从前的博文《【朴素贝叶斯】实战朴素贝叶斯_代码实现_特征选择1》的处理方法。哦,又跑题了。


LROne project训练出来的特征权重如下:

2.5668
0.12814
-0.135231
2.55564
-0.0892993
-0.256378
-0.279498
-0.100414
-0.185509
-0.447792

粗略看一下,上面的特征权重的大小关系,和特征与类别的卡方值的相对大小关系,两者并没有什么关系。说起来比较拗口,我们看细节。在训练出的权重中,第1维和第4维的权重绝对值最大,都超过了2,一定要保留;第5维和第8维的权重最小,可以去除。而在计算出的卡方值中,。。。。???补充具体数据。。。。能看到两份数据在权重大小上,没有对应关系。


6. 查看数据——继续

我又不死心,因为卡方值是有明确物理意义的,只不过这种意义不是我从前想象的方式来映射到特征权重上面罢了。接下来我做了一个有意思的事情,我把LROne project训练出来的特征权重加和平均,均值是0.375646,是个正数——回头我们再说这个正数的物理含义。注意:我能把这些权重进行加和平均,这样做是有前提的,就是:这些特征的取值范围是相同的,即都是0-1取值,如果到了LRTwo,就都是[0, 1]区间内的取值。这样,才不用考虑特征值之间的scaling,才能够直接进行加和平均。取得平均值之后,我把每个特征的权重与这个平均值做差,再求绝对值,结果如下:


。。。???


如果做差再求平方的话,就是在计算标准差了。



(未完待续)


卡方选择(chi-square)能用到logistic regression当中么?(二)

原文:http://blog.csdn.net/xceman1997/article/details/19249241

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!