天天减肥网,内容丰富有趣,生活中的好帮手!
天天减肥网 > 特征工程: 特征 特征提取和特征选择

特征工程: 特征 特征提取和特征选择

时间:2022-12-02 17:09:40

相关推荐

特征工程: 特征  特征提取和特征选择

文章目录

机器学习中的特征特征的重要性 特征提取和特征选择去除方差较小的特征单变量特征选择 (Univariate feature selection)F检验与互信息 其他特征选择方法重复性特征删除:用模型选择: 并入pipeline

机器学习中的特征

在机器学习和模式识别中,特征是在观测现象中的一种独立、可测量的属性。选择信息量大的、有差别性的、独立的特征是模式识别、分类和回归问题的关键一步。

最初的原始特征数据集可能太大,或者信息冗余,因此在机器学习的应用中,一个初始步骤就是选择特征的子集,或构建一套新的特征集,减少功能来促进算法的学习,提高泛化能力和可解释性。

在机器视觉中,一幅图像是一个观测,但是特征可能是图中的一条线;在自然语言处理中,一个文本是一个观测,但是其中的段落或者词频可能才是一种特征;在语音识别中,一段语音是一个观测,但是一个词或者音素才是一种特征。

特征的重要性

在特征选择时, 经常根据重要性, 将重要的特征选择出来放入训练集合. 相关系数和独立变量方法是常用的方法。

在构建模型的过程中, 有时候也会用到一些复杂的预测模型进行特征的重要性评价和选择, 例如多元自适应回归样条法( Multivariate Adaptive Regression Splines, MARS), 随机森林( Random Forest), 梯度提升机( Gradient Boosted Machines)等.

特征提取和特征选择

特征提取

对原始观测进行降维以便于建模的过程, 对于表格式的数据, 可以用主成分分析PCA, 聚类等方法; 对于图像数据, 可以用线(line)/边缘(edge)提取, 对于视频, 音频数据, 很多数字信号处理的方法都可以用于特征提取.特征选择

特征选择是自动地选择出对于问题最重要的特征子集的过程. 由于不同特征对模型准确度的影响程度不同, 特征选择算法用评分排序, 或者用反复实验来搜索出特征子集, 自动创建并评估模型得到最佳特征子集. 另外还有一些方法将特征选择作为模型的附加功能, 例如逐步回归法( stepwise regression)

sklearn的feature_selection模块在特征选择和样本集合降维上, 用来提高模型的正确率或者提高他们在高维度数据上的表现.

特征选择的方法可以大致分为:

Filter: 过滤法, 按照方差或者相关性对特征评分, 根据阈值选择特征Wrapper: 包装法, 根据目标函数(预测效果评分), 选择/排除若干特征

特征选择的目的:

降维, 增强模型泛化能力, 减少过拟合便于理解特征和标签之间的关系

去除方差较小的特征

VarianceThreshold是一个简单的特征选择基准方法, 该方法就是去除所有没有达到指定阈值的特征. 默认是去除所有零方差的数据, 例如那些在所有样本中都一样的特征.

举例来说, 我们有一个数据集合, 所有的数据都是布尔值, 我们想去掉80%的概率上不是0就是1的特征维度, 对于布尔型的数据来说, 服从伯努利分布, 理论方差为:

Var[X]=p(1-p)

from sklearn.feature_selection import VarianceThresholdX=[[0 0 1], [0 1 0], [1 0 0], [0 1 1], [0 1 0], [0 1 1]]sel = VarianceThreshold(threshold=(0.8*(1-0.8)))sel.fit_transform(X)

单变量特征选择 (Univariate feature selection)

单变量特征选择是对每个变量单独做统计分析, 之后再根据统计指标来判断变量是否重要.

其他形式:

SelectKBest: 仅保留得分K名以内的所有特征(TOP k)SelectPercentile 仅保留指定前k百分比的数据(TOP k%)单变量检验, 例如假阳性比例SelectFpr, 伪发现率 SelectFdr, 族系误差率SelectFwe.GenericUnivariateSelect 允许设置特征选择参数, 不同的选择策略可以使用超参数调优, 从而找到最佳单变量特征选择策略.

总的来说, 基于F检验的算法是用F检验估计来计算不同变量之间的线性依赖度(degree of linear dependency), 基于互信息的算法可以捕获到任意一种统计依赖关系, 但是作为一种非参数检验方法, 需要大量的样本才能得到比较准确的结果.

如果数据的稀疏性很强, 可以选择chi2, mutual_info_regression, mutual_info_classif 这些特征选择方法.

F检验与互信息

sklearn的官方教程给出了关于F检验和互信息区别的说明. 假设有3个特征 x1, x2, x3 都服从[0,1]正态分布,

目标函数如下:

y=x_1+sin(6pix_2)+0.1*N(0,1)

显然, y的取值与x_3完全不相关. 下面这段代码用了F检验和互信息两种方法给出了x与y之间的依赖关系.

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.feature_selection import f_regression, mutual_info_regressionnp.random.seed(0)X = np.random.rand(

如果觉得《特征工程: 特征 特征提取和特征选择》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。