继续年前Logistic regression的尝试。
1. 回顾一下论文中对Logistic regression的特征选择方法
两种思路,都很简单且粗暴:
(1)已选择的特征集合是个空集,对候选特征,每一个建立一个LR模型,用建立的LR模型的性能来评价每一个候选特征的好坏,选择一个最好的特征加入已选择的特征集合中;继续选择第二个特征,直到模型的性能没有显著变化为止(以模型性能作为终止条件)或者已选择特征集合到达上限(以选择特征数目为终止条件)。
(2)是(1)的反过程,即开始把所有特征加入到已选择的特征集合,然后逐渐去掉对模型性能影响不大的特征。
候选特征总数是n,要选择其中m个特征出来,上述方法的时间复杂度是O(m*n)。注意,这个时间复杂度的原子操作是训练一遍LR模型,而LR的训练也不是件容易的事情,尤其是当特征多、样本多的时候。而且,选择用LR模型,一定都是特征多、样本多的情况。所以上面的过程,只能在部分样本集合(抽样)上做,不可能在全样本集合上做。抽样的好坏,也会影响到特征的选择。
2. 从前我个人的思路
前面两种简单粗暴,我的似乎更加简单粗暴——用所有特征把模型训练出来,看哪些特征的绝对值接近0.0,删掉就行了。这样做的依据是,训练出的权重越小,这个权重的特征对模型分类结果贡献就越小,就越微不足道——可以想几个极端的case来进一步理解:如果所有特征的权重都是0,则无论样本中特征如何取值,这些特征的线性加权值都是0.0,sigmoid函数计算出来的值都是0.5,则样本无法被分类;如果某个特征的权重是正无穷或者负无穷,当这个特征在样本中存在的时候(特征取值为1),则样本中所有特征线性加权的值是正无穷或者负无穷,sigmoid函数计算出来的值是1.0或者0.0,即样本肯定是正例或者肯定是反例,此时其他特征不起作用。
相比paper中的方法,时间复杂度由O(m*n)降低到了O(1)。当然,这种方法的实际操作通常也是建立在样本抽样的基础上。不过如果条件允许,不抽样也可以。
3. 为什么要尝试卡方选择?
另一个思路是用文本分类中的特征选择方法来对LR模型进行特征选择。那些方法在文本分类中好用,在LR中如何呢?首先是要看各个方法的基本原理、物理意义。拿卡方选择来说,计算的是特征与类别之间的联系程度,计算出来的卡方值越大,说明特征对当前类别的区分度越大;而特征对类别的区分度越大,我们直观上也就月应该选择这个特征。这样,当新样本过来的时候,有了这个特征的帮助,我们才更容易判断样本的类别。这是我想尝试卡方选择方法的初衷。
码字好累啊,分两篇写吧。
完。
卡方选择(chi-square)能用到logistic regression当中么?(一)
原文:http://blog.csdn.net/xceman1997/article/details/19247651