1、去掉取值变化小的特征。
如某个特征取值为0,1,在样本中存在95%的取值为1,那么这个特征的作用不大
2、单变量特征的选择。
Pearson相关系数:权衡的是变量之间的线性相关性。它要求两个变量的变化是单调的,如y1=x和y2=x^2,Pearson系数为0,但其实两者并不是独立的。取值方位为:[-1,1],且可表征更加丰富的关系。负数表示负相关,正数表示正相关,0表示独立
距离相关系数:可以克服Pearson相关系数的弱点,但其计算速度没有Pearson快
基于学习模型的特征排序:直接使用你要用的机器学习算法,针对每个独立的特征和响应变量建立预测模型。对于非线性的,多采用树的方法。树的深度越深,则容易产过拟合。有些机器学习模型本身就对特征进行打分的机制(属于Wrapper),如回归模型、SVM、决策树、随机森林等。
特征越独立,模型训练的结果也会越来越好。
3、线性模型和正则化
越是重要的特征在模型中对应的系数就越大,不重要的特征系数接近0.
正则化就是把额外的约束或惩罚项加到已有的模型(损失函数)上,以防止过拟合并提高泛化能力。即损失函数由原来的E(x,y)变为E(X,Y)+alpha||W||
L1正则化/Lasso:惩罚项系数是1次,由于正则项非零,则是的那些弱特征所对应的系数变成0,因此正则化往往会使学到的模型很稀疏,这个特点使得L1正则化成为一种很好的特征选择方法。
L2正抓/Ridge regression:惩罚项系数是2次方,它会使得系数的取值变得均匀。
随机森林:准确率高、鲁棒性好、易于使用。
这里特征得分实际上采用的是 Gini Importance 。使用基于不纯度的方法的时候,要记住:
1、这种方法存在 偏向 ,对具有更多类别的变量会更有利;
2、对于存在关联的多个特征,其中任意一个都可以作为指示器(优秀的特征),并且一旦某个特征被选择之后,其他特征的重要度就会急
剧下降,因为不纯度已经被选中的那个特征降下来了,其他的特征就很难再降低那么多不纯度了,这样一来,只有先被选中的那个特征重要度很高,其他的关联特征重要度往往较低。在理解数据时,这就会造成误解,导致错误的认为先被选中的特征是很重要的,而其余的特征是不重要的,但实际上这些特征对响应变量的作用确实非常接近的(这跟Lasso是很像的)。特征随机选择方法稍微缓解了这个问题,但总的来说并没有完全解决。
正则化的线性模型对于特征理解和特征选择来说是非常强大的工具。L1正则化能够生成稀疏的模型,对于选择特征子集来说非常有用;相比起L1正则化,L2正则化的表现更加稳定,由于有用的特征往往对应系数非零,因此L2正则化对于数据的理解来说很合适。由于响应变量和特征之间往往是非线性关系,可以采用basis expansion的方式将特征转换到一个更加合适的空间当中,在此基础上再考虑运用简单的线性模型。
随机森林是一种非常流行的特征选择方法,它易于使用,一般不需要feature engineering、调参等繁琐的步骤,并且很多工具包都提供了平均不纯度下降方法。它的两个主要问题,1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。尽管如此,这种方法仍然非常值得在你的应用中试一试