【LR学习笔记】Parallel Large Scale Feature Selection for Logistic Regression_2009

主要内容:

google的人写的,2009年发表在《society for industrial and applied mathematics》上面。主要是提出一种forword feature selection方法,给出一种计算feature score的度量,用来为LR模型选择feature。并将这种方法在hadoop上实现。


具体内容:


1. 综述

(1)高维数据处理比较好的模型是:LR、svm和随机森林。

(2)三种模型中,显然LR的效率是最高的。而且,当数据维度很高的时候,绝大部分样本在如此高维空间中都是线性可分的了。所以线性模型,如:LR,相比非线性模型,如:svm和随机森林,在效率上的优势就更加明显了。


2. forward feature selection

这个过程的思路很简单,最开始,selected feature的集合为空,有D个候选feature,选择一个加入到现有模型当中,在training set上重新训练,并在held-out test set上计算模型性能。如此,训练了D个模型,选择性能最高的那个模型,以及对应的feature。剩下D-1个feature,重复上面的过程。直到选择了足够多的feature,或者是模型性能的提升非常有限,为止。


3. single feature optimization (SFO)

在上面的过程中,动辄训练D-n个LR模型,每个模型有n个已经选择出的feature,计算量是很大的。为了减少计算量,修改LR的训练过程,仅仅针对“刚加进去”的那个待评估的特征,在training set上进行训练,而不是针对特征集合中所有n个特征都进行训练(更新参数)。文章后面的实验证明,理论上这个会损失信息,不过实践中,效果与完全训练的方法差别很小。


4. Scoring the Features

一句话,feature的好坏,由加入这个feature的模型来评价,而模型的评价方式就很多了。


5. Faster Optimization with Histograms

其实就是用了SFO,程序依然很慢,如何进一步提速?sigmoid的输出值是实数值,每个sample,LR都会给出一个实数值,同held-out test set的0-1离散值相比较,进一步再更新参数。这样,有多少个sample,比如N个,就要做多少次那样的更新计算。作者将[0,1]之间的实数值,映射到B个区间中,其中B<<N。那么,经过sigmoid计算的sample,如果落入到同一个区间中,就可以集中起来,统一更新权重,类似正常批量梯度下降(对比SGD,随机梯度下降)。而更新权重的方法采用牛顿法,效率的瓶颈在此。SFO的时间复杂度由O(N)下降到O(B)。

个人觉得,如果不用牛顿法,而是直接推导倒数公式,进行权重更新,则上面的方法基本上没有提升效率。


6. Parallelization

这部分就是怎么把SFO过程放到hadoop的MP编程模式当中。

分解SFO过程,在mapper中,遍历sample,对于批量feature,批量算梯度;在reducer中,计算权重更新,形成D个独立模型。

个人觉得,只是把单独SFO的一个过程MP化了,而不是把整个算法MP化,还要根据feature数目手动跑hadoop程序。在实际应用中并不理想。


7. 实验

实验中用了一个工具包:IRLS logistic regression package

结论自然是SFO效果并不差,效率有提升。


8. 相关工作

Della Pietra 1997 选择feature的依据是最小化模型与数据的KL距离

Fleuret 2004 用了一种过滤方法,计算候选特征与当前特征集合中特征之间的关系(互信息),选择关系最紧密(互信息最大)的特征加入


9. 个人评述

需要很多手动过程,不太实用。


(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值