特征选择的几种方法

article/2025/11/5 12:55:12

目录

1、 过滤法(Filter)

1.1 方差选择法

1.2 相关系数法

1.3 卡方检验

1.4 互信息法

1.5 relief算法

2、包裹法(Wrapper)

2.1 递归特征消除法

2.2 特征干扰法

3、嵌入法(Embedded)

3.1 基于惩罚项的特征选择法

3.2 基于树模型的特征选择法

4、机器学习中的特征选择和优缺点


1、 过滤法(Filter)

1.1 方差选择法

  使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。使用feature_selection库的VarianceThreshold类来选择特征的代码如下:

from sklearn.feature_selection import VarianceThreshold#方差选择法,返回值为特征选择后的数据
#参数threshold为方差的阈值
VarianceThreshold(threshold=3).fit_transform(iris.data)

1.2 相关系数法

  使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下:

from sklearn.feature_selection import SelectKBest
from scipy.stats import pearsonr#选择K个最好的特征,返回选择特征后的数据
#第一个参数为计算评估特征是否好的函数,该函数输入特征矩阵和目标向量,输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。在此定义为计算相关系数
#参数k为选择的特征个数
SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

1.3 卡方检验

  经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:

  不难发现,这个统计量的含义简而言之就是自变量对因变量的相关性。用feature_selection库的SelectKBest类结合卡方检验来选择特征的代码如下:

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2#选择K个最好的特征,返回选择特征后的数据
SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)

1.4 互信息法

  经典的互信息也是评价定性自变量对定性因变量的相关性的(例如决策树ID3算法),互信息计算公式如下:

  为了处理定量数据,最大信息系数法被提出,使用feature_selection库的SelectKBest类结合最大信息系数法来选择特征的代码如下:

 from sklearn.feature_selection import SelectKBestfrom minepy import MINE#由于MINE的设计不是函数式的,定义mic方法将其为函数式的,返回一个二元组,二元组的第2项设置成固定的P值0.5def mic(x, y):m = MINE()m.compute_score(x, y)return (m.mic(), 0.5)#选择K个最好的特征,返回特征选择后的数据
SelectKBest(lambda X, Y: array(map(lambda x:mic(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

1.5 relief算法

      Relief算法最早由Kira提出. 基本内容:从训练集D中随机选择一个样本R, 然后从和R同类的样本中寻找k最近邻样本H,从和R不同类的样本中寻找k最近邻样本M, 最后按照公式更新特征权重.

        

Relief算法python实现:https://blog.csdn.net/qq_40871363/article/details/86511843 

2、包裹法(Wrapper)

2.1 递归特征消除法

  递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。使用feature_selection库的RFE类来选择特征的代码如下:

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression#递归特征消除法,返回特征选择后的数据
#参数estimator为基模型
#参数n_features_to_select为选择的特征个数
RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

2.2 特征干扰法

特征选择原理:用加上噪声的特征和原特征下的误差对比来评价特征重要性,误差越大,说明特征越重要。以随机森林为例:

  1. 对随机森林中的每一颗决策树,用OOB(袋外数据)计算误差errOOB1;
  2. 对OOB所有样本特征X加上噪声干扰,再次计算误差errOOB2;
  3. N棵树,特征X的重要性=\frac{\sum (errOOB1-errOOB2)}{N}
  4. 若某个特征加上噪声后,袋外的准确率大幅度降低,说明此特征对于样本的分类结果影响很大,即重要程度越高。

sklearn中会对每个特征赋予一个分数,分数越大,特征越重要,因此,可以根据特征重要性排序,然后选择最佳特征组合;

RandomForestClassifier(n_estimators=200,oob_score=True)oob_score : bool (default=False) Whether to use out-of-bag samples to estimate the generalization accuracy.oob_score:  bool(默认=False) 是否使用袋外样品进行估算 泛化精度。

3、嵌入法(Embedded)

嵌入特征选择方法和算法本身紧密结合,在模型训练过程中完成特征选择。例如,

决策树算法每次都选择分类能力最强的特征;

线性回归+L2正则化:某些信号比较弱的特征权重减小;

线性回归+L1正则化:某些信号比较弱的特征权重为0;

弹性网络:L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要。

3.1 基于惩罚项的特征选择法

  使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维。使用feature_selection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型,来选择特征的代码如下:

from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression#带L1惩罚项的逻辑回归作为基模型的特征选择
SelectFromModel(LogisticRegression(penalty="l1", C=0.1)).fit_transform(iris.data, iris.target)

3.2 基于树模型的特征选择法

  树模型中GBDT也可用来作为基模型进行特征选择,使用feature_selection库的SelectFromModel类结合GBDT模型,来选择特征的代码如下:

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier#GBDT作为基模型的特征选择
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)

4、机器学习中的特征选择和优缺点

参考:https://blog.csdn.net/piaodexin/article/details/77203696

——————————————————————

参考:

https://www.cnblogs.com/bonelee/p/8632866.html 


http://chatgpt.dhexx.cn/article/oplh4idv.shtml

相关文章

特征选择-嵌入式选择

嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。 基于惩罚项的特征选择法 给定数据集 D { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x n , y n ) }…

特征选择案例

特征降维(P443) 特征降低维度分两种方法:特征选择和特征抽取。 特征选择:选择全部特征的一个子集作为特征向量。 特征抽取:通过已有特征的组合建立一个新的特征子集。 主成分分析方法(PCA)就…

机器学习-特征选择

特征选择 1、简述特征选择的目的。 减轻维数灾难问题:特征个数越多,模型也会越复杂,其泛化能力会下降。 降低学习任务的难度: 特征个数越多,分析特征、训练模型所需的时间就越长。 特征选择能够明显的改善学习器的精…

lasso特征选择python_特征选择怎么做?这篇文章告诉你

原标题:特征选择怎么做?这篇文章告诉你 照片由 Clem Onojeghuo 发布在 Unsplash 上面 作者 | Pier Paolo Ippolito 翻译 | Skura 编辑 | 唐里 原文标题:Feature Selection Techniques 原文链接:https://towardsdatascience.com/feature-selection-techniques-1bfab5fe0784 …

python方差特征选择_特征选择-Filter过滤法(方差)

3.1 Filter过滤法 过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。它是根据各种统计检验中的分数以及相关 性的各项指标来选择特征。 3.1.1 方差过滤 3.1.1.1 VarianceThreshold 这是通过特征本身的方差来筛选特征的类。比如一个特征本身的方差很小,就表示…

特征选择与特征提取

目录 一、 特征选择1、特征2、特征选择3、扩展——特征选择算法(有兴趣和精力可了解)拓展--完全搜索:拓展--启发式搜索:拓展--随机搜索:拓展--遗传算法: 二、 特征提取三、特征提取主要方法——PCA(主成分分析)1、PCA算法是如何实现的?PCA--零均值化(中心…

特征选择简述

目录 一、 特征选择的意义 二、特征选择的方法 1. 排序方法(Ranking methods) 2. 过滤方法(Filter approaches) 3.包装器方法(wrapper methods) 4.混合方法(Hybrid methods) …

特征提取与特征选择

特征抽取和特征选择是DimensionalityReduction(降维)的两种方法,针对于the curse of dimensionality(维度灾难),都可以达到降维的目的。但是这两个有所不同。 特征提取(Feature Extraction):Cre…

特征选择方法总结

问题 在数据处理中经常会遇到特征太多造成的计算负担和一些其他的影响,如过拟合等,不但使得预测结果不准确,还消耗计算时间。所以特征选择就显得非常重要了。 特征选择:从给定的特征集合中选取出相关特征子集的过程成为“特征选择…

利用sklearn进行特征选择

3种特征选择 Filter 过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。 (先对数据集进行特征选择,然后再训练学习器) Wrapper 包装法,根据目标函数&…

如何进行特征选择

如何进行特征选择 原文地址: http://blog.csdn.net/u010670689/article/details/73196546 特征选择对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、…

光谱特征选择

光谱特征选择(谱特征选择) 简介算法框架算法推导总结 Spectral feature selection可翻译为谱特征选择,之前的特征提取学习中陷入了光谱特征选择翻译的误区。 参考论文为"Spectral feature selection for supervised and unsupervised le…

模型特征选择

RF、GBDT、XGboost都可以做特征选择,属于特征选择中的嵌入式方法。比如在sklearn中,可以用属性feature_importances_去查看特征的重要度, 比如: from sklearn import ensemble#grd ensemble.GradientBoostingClassifier(n_estimators30)grd …

sklearn 数据处理与特征工程

1、数据处理的流程 2 数据预处理 Preprocessing & Impute 2.1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”。譬如梯度…

特征选择

一、特征选择基本问题 我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature)。 从给定的特征集…

特征选择(筛选特征)

根据特征选择的形式可以将特征选择方法分为3种: Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。Wrapper:包装法,根据目标函数(通常…

机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(一)

0.说明 本文也许比较乱,请看目录再食用。 后续会 出文 机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(二) 将 分类问题 和 回归问题 分开总结。 以及或将出文 机器学习 基础理…

三种常见的特征选择方法

特征选择 特征选择是特征工程里的一个重要问题,其目标是寻找最优特征子集。特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。并且常能听到“数据和特征决定…

特征选择方法最全总结!

上个月扫读完《阿里云天池大赛赛题解析》[1]后,看到书中对特征选择的讲述,于是便打算借此机会,系统梳理下各种特征选择方法。如有不足,还望指正。 一、背景介绍 在处理结构型数据时,特征工程中的特征选择是很重要的一个…

运行时错误 '-2147467259 (80004005)'

运行时错误 -2147467259 (80004005)方法 getFooterColor 作用于对象 IFPLayoutRegion 时失败遇到这样的错误主要是因为在 VBA 访问布局表格时,没有启用表尾。解决方法:在布局表格设置中启用表尾。注:同样的错误和解决方法也适用于表首。