特征选择(三)

转自july算法班:

为什么要进行特征选择?

原因:

1)冗余:部分特征的相关度太高了,消耗计算性能

2)噪声:部分特征对预测结果有负影响


--  特征选择  VS  降维

1. 前者只踢掉原本特征里和结果预测关系不大的,后者做特征的计算组合构成新特征

2. SVD或者PCA确实也能解决一些高维度问题


---常见的特征选择

------过滤型

评估单个特征和结果之间的相关程度,留下top相关的特征部分

Pearson相关系数、互信息、距离相关度量

缺点:没有考虑到特征之间的相互关联作用,可能把有用的关联特征误踢掉

sklearn-->selectKBest-->selectPercentile


----常见的特征选择方式--包裹型【适合线性模型】

1. 把特征看作一个特征子集搜索的过程,筛选各种特征子集,用模型评估效果

2. 典型的包裹型“递归特征删除算法”RFE

1)用全量特征跑一个模型

2)根据线性模型的系数(体现相关性),删除掉5-10%的弱特征,观察准确率/AUC的变化【用逻辑回归算theta,剔除掉theta小的特征】

3)逐步进行,直到AUC出现大的下滑停止

3. 如果是用LR呢?

特征选择(三)_第1张图片

----一般先做特征工程,再做特征选择

------常见的特征选择--嵌入型

1)根据模型来分析特征的重要性(有别于上面的方式,是从生产的模型权重等)

2)最常见的方式是用正则化来做特征选择

3)举个栗子,最早在电商用LR做CTR预估,在3亿-5亿维的系数特征上用L1正则化的LR模型,剩余2-3千万的feature,意味着其他的feature重要度不够

L1正则化是截断性效益

L2正则化是缩段性效益

线性模型的话可以用SelectFromModel

lsvc = LinearSVC(c=0.01,penalty="L1",dual=False).fit(X,y)

特征选择(三)_第2张图片

你可能感兴趣的:(特征选择(三))