【特征工程】特征选择与特征学习

2023-11-15

特征选择与特征学习

在机器学习的具体实践任务中,选择一组具有代表性的特征用于构建模型是非常重要的问题。特征选择通常选择与类别相关性强、且特征彼此间相关性弱的特征子集,具体特征选择算法通过定义合适的子集评价函数来体现。
在现实世界中,数据通常是复杂冗余,富有变化的,有必要从原始数据发现有用的特性。人工选取出来的特征依赖人力和专业知识,不利于推广。于是我们需要通过机器来学习和抽取特征,促进特征工程的工作更加快速、有效。

特征选择

特征选择的目标是寻找最优特征子集。特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化模型,协助理解数据产生的过程。
特征选择的一般过程如下图所示:

图中,(1)子集产生:按照一定的搜索策略产生候选特征子集;(2)子集评估:通过某个评价函数评估特征子集的优劣;(3)停止条件:决定特征选择算法什么时候停止;(4)子集验证:用于验证最终所选的特征子集的有效性。

特征选择的搜索策略

特征选择的搜索策略分为:完全搜索策略、启发式策略以及随机搜索策略。
特征选择本质上是一个组合优化问题,求解组合优化问题最直接的方法就是搜索,理论上可以通过穷举法来搜索所有可能的特征组合,选择使得评价标准最优的特征子集作为最后的输出,但是n个特征的搜索空间为2n,穷举法的运算量随着特征维数的增加呈指数递增,实际应用中经常碰到几百甚至成千上万个特征,因此穷举法虽然简单却难以实际应用。其他的搜索方法有启发式的搜索和随机搜索,这些搜索策略可以在运算效率和特征子集质量之间寻找到一个较好的平衡点,而这也是众多特征选择算法努力的目标。
* 完全搜索(Complete)

  • 广度优先搜索( Breadth First Search )
    广度优先遍历特征子空间。枚举所有组合,穷举搜索,实用性不高。
  • 分支限界搜索( Branch and Bound )
    穷举基础上加入分支限界。例如:剪掉某些不可能搜索出比当前最优解更优的分支。
    其他,如定向搜索 (Beam Search ),最优优先搜索 ( Best First Search )等
  • 启发式搜索(Heuristic)

    • 序列前向选择(SFS,Sequential Forward Selection)
      从空集开始,每次加入一个选最优。
    • 序列后向选择(SBS,Sequential Backward Selection)
      从全集开始,每次减少一个选最优。
    • 增L去R选择算法 (LRS,Plus-L Minus-R Selection)
      从空集开始,每次加入L个,减去R个,选最优(L>R)或者从全集开始,每次减去R个,增加L个,选最优(L

特征选择算法

特征选择和机器学习算法两者存在紧密的联系,根据特征选择中子集评价标准和后续学习算法的结合方式可分为嵌入式(Embedded)、过滤式(Filter)和封装式(Wrapper)式三种。

嵌入式特征选择
在嵌入式特征选择中,特征选择算法本身作为组成部分嵌入到学习算法里。最典型的即决策树算法,如ID3、C4.5以及CART算
法等,决策树算法在树增长过程的每个递归步都必须选择一个特征,将样本集划分成较小的子集,选择特征的依据通常是划分后子节点的纯度,划分后子节点越纯,则说明划分效果越好,可见决策树生成的过程也就是特征选择的过程。

过滤式特征选择
过滤式特征选择的评价标准从数据集本身的内在性质获得,与特定的学习算法无关,因此具有较好的通用性。通常选择和类别相关度大的特征或者特征子集。过滤式特征选择的研究者认为,相关度较大的特征或者特征子集会在分类器上可以获得较高的准确率。过滤式特征选择的评价标准分为四种,即距离度量、信息度量、关联度度量以及一致性度量。
过滤式特征选择算法的优缺点分别是:

优点:算法的通用性强;省去了分类器的训练步骤,算法复杂性低,因而适用于大规模数据集;可以快速去除大量不相关的特征,作为特征的预筛选器非常合适。
缺点:由于算法的评价标准独立于特定的学习算法,所选的特征子集在分类准确率方面通常低于Wrapper方法。

封装式特征选择
封装式特征选择是利用学习算法的性能来评价特征子集的优劣。因此,对于一个待评价的特征子集,Wrapper方法需要训练一个分类器,根据分类器的性能对该特征子集进行评价。Wrapper方法中用以评价特征的学习算法是多种多样的,例如决策树、神经网络、贝叶斯分类器、近邻法以及支持向量机等等。
封装式特征选择算法的优缺点分别是:

优点:相对于Filter方法,Wrapper方法找到的特征子集分类性能通常更好。
缺点:Wrapper方法选出的特征通用性不强,当改变学习算法时,需要针对该学习算法重新进行特征选择;由于每次对子集的评价都要进行分类器的训练和测试,所以算法计算复杂度很高,尤其对于大规模数据集来说,算法的执行时间很长。

有效性分析

对特征的有效性进行分析,得到各个特征的特征权重,根据是否与模型有关可以分为:
1.与模型相关特征权重,使用所有的特征数据训练出来模型,看在模型中各个特征的权重,由于需要训练出模型,模型相关的权重与此次学习所用的模型比较相关。不同的模型有不同的模型权重衡量方法。例如线性模型中,特征的权重系数等。
2.与模型无关特征权重。主要分析特征与label的相关性,这样的分析是与这次学习所使用的模型无关的。
与模型无关特征权重分析方法包括(1)交叉熵,(2)Information Gain,(3)Odds ratio,(4)互信息,(5)KL散度等。

特征学习

特征学习可以分为监督特征学习和无监督特征学习:
监督特征学习包括监督字典学习、神经网络、多层感知机;无监督特征学习包括无监督字典学习、主成分分析、独立成分分析、自编码器、矩阵分解和各种形式的聚类算法。

监督特征学习

监督字典学习
字典学习是从输入数据中学习一组代表元素的字典,其中每个数据都可以表示为代表元素的加权和。通过最小化带有L1正则项的平均误差来确定字典元素和权重,并保证权重稀疏。
监督字典学习利用输入数据和标签的隐含结构来优化字典元素。

神经网络
神经网络是用来描述一系列学习算法,通过相互关联的节点构成的多层网络。它是受神经系统的启发,其中节点可以看做是神经元,边可以看成是突触。每个边都有相对应的权重,网络定义了计算规则,将数据从输入层传递到输出层。
多层神经网络可以用来进行特征学习,因为它们可以学习在隐藏层中的输出的表示。

非监督特征学习

非监督特征学习的目标是捕捉高维数据中的底层结构,挖掘出低维的特征。
K-means聚类
K-means聚类是一种矢量量化的方法,给定一组向量,K-means算法将这些数据组织成k个子集,使得每个向量属于最近的均值所在的子集。
在特征学习中,K-means算法可以将一些没有标签的输入数据进行聚类,然后使用每个类别的质心来生成新的特征。
最简单的方法是在每个输入样本中加入K个二元特征,其中当且仅当第j个质心距离采样数据最近时,第j个特征置为1。另一种方式是利用到子集的距离作为特征,或者是经过径向基函数进行转换的子集距离。

主成分分析(Principal component analysis)
主成分分析主要用于降维。给定无标签的数据集,PCA生成p个奇异值向量(p远远小于数据的维度),对应数据矩阵中p个最大的奇异值。这p个奇异值向量是从输入数据中学习的特征向量,它们代表了数据具有最大方差的方向。
PCA是一种线性特征学习方法,因为p个奇异指向量是数据矩阵的线性方程。
PCA有几点局限:首先,它假设最大方差的方向是最感兴趣的,而实际上很多应用中可能不是。PCA依赖于原始数据的正交变换,它只挖掘了数据的一阶、二阶矩,这并没有很好的表征数据分布。最后,PCA只有在输入数据向量是相关的情况下才能很好地降维。

局部线性嵌入(Local linear embedding)
局部线性嵌入(LLE)是一种非线性的非监督学习方法,用来从未标注的高维输入中生成低维的近邻保持表征。
LLE的一般思想是,通过保持原有数据集的部分集合特性的低维数据来重构原始高维数据。LLE包含两个主要步骤,第一步是近邻保持(neighbor-preserving),其中每个输入数据Xi通过K近邻数据点的加权和重构,并且通过最小化平均平方重构误差(average squared reconstruction error)找到最优权重;第二步是降维(dimension reduction),在低维空间中寻找向量,该向量使用第一步的权重可以最小化表示误差。
相比PCA,LLE对于利用数据的隐含结构能力更强大。

独立成分分析(Independent component analysis)
独立成分分析是利用独立非高斯成分的加权和学习数据表示的技术。非高斯前提的强制条件是因为当所有成分满足高斯分布时权重无法唯一确定。

无监督字典学习(Unsupervised dictionary learning)
与监督字典学习不同的是,非监督字典学习不利用数据的标签,只是利用数据的潜在结构来优化字典元素。无监督字典学习的例子是稀疏编码,它用来重无标签数据中学习用于数据表示的基函数(即字典元素)。稀疏编码可以用来学习超完备字典(overcomplete dictionary),其中字典元素的数目要远远大约输入数据的维度。K-SVD是用于从无标记数据中学习数据稀疏表示的字典。

深度学习

分层结构的神经系统启发了由简单学习模块构成的多层深度学习架构来进行特征学习。
在深度学习体系中每个中间层的输出可以看做是原始输入数据的一种表示,每层利用上一层中产生的表示作为输入,生成新的表示作为输出,提供给更高层。输入的底层是原始数据,而最终层输出的是最后的低维特征或表征。

受限玻尔兹曼机(Restricted Boltzmann Machine)
首先玻尔兹曼常常用来构建多层学习结构。它可以用包含一组二元隐含变量、一组可见变量、连接隐含节点和可见节点的边的无向二分图(undirected bipartite graph)来表示,它是无内节点连接的广义玻尔兹曼机的特例。RBM的每个边有一个权重,这些权重联系在一起定义了一个能量方程,该方程基于可见和隐含节点的联合分布。基于RBM的拓扑学,隐含变量和可见变量是条件独立的,这一特性便于RBM的计算。
RBM可以看做是无监督特征学习的一层,可见变量对应输入数据,隐含变量对应特征探测器(feature detectors)。利用对比散度算法(contrastive divergence)来最大可见变量的概率,训练权重。
一般而言,上述RBM的训练问题得到的是非稀疏的表示,而稀疏RBM,作为RBM的一种修正版本,是通过在数据似然的目标函数中添加正则化方法,来惩罚小常量中期望隐含变量的偏差。

自编码器(Autoencoder)
自编码器有编码器和解码器组成。编码器使用原始数据作为输入,生成特征或表征,解码器利用编码器抽取的特征来作为输入,重建原始输入数据并输出。编码器和解码器是由多层RBM构成。结构中的参数通过层与层的贪婪方式训练得到:在一层特征探测器学习之后,它们被提供给上层作为可见变量用于响应RBM的训练,该过程一直重复直到停止条件满足方结束。

转载请注明作者Jason Ding及其出处
Github博客主页(http://jasonding1354.github.io/)
GitCafe博客主页(http://jasonding1354.gitcafe.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354进入我的博客主页

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【特征工程】特征选择与特征学习 的相关文章

  • 机器学习——建筑能源得分预测

    前言 编码之前是了解我们试图解决的问题和可用的数据 在这个项目中 我们将使用公共可用的纽约市的建筑能源数据 目标是使用能源数据建立一个模型 来预测建筑物的Enerqy Star Score 能源之星分数 并解释结果以找出影响评分的因素 数据
  • Cascade network——multi-stage refinement

    文章目录 List Preview AttractioNet 2016 CRAFT CRAFT Objects from Images 2016 CC Net chained cascade network for object detec
  • 特征筛选10——MIC最大信息系数(有监督筛选)

    理论部分可以参考 https blog csdn net qq 27586341 article details 90603140 互信息也是通过衡量x与y的线性关系 来判断特征的重要性 整个算法的思路是 x与y构成二维平面 对平面进行切分
  • SVM —— 在复杂数据上应用核函数

    对于非线性可分的数据 我们需要使用一种称为核函数 kernel 的工具将数据转换成易于分类器理解的形式 目录 利用核函数将数据映射到高位空间 径向基核函数 利用核函数将数据映射到高位空间 对于非线性可分的数据 我们要将数据从一个特征空间转换
  • 特征工程——归一化处理不适用情况

    哪些机器学习算法不需要做归一化 Normalization 处理 概率模型不需要归一化 因为它们不关心变量的值 而是关心变量的分布和变量之间的条件概率 如决策树 随机森林rf 而像AdaBoost svm Ir KNN KMeans之类的最
  • 机器学习之梯度提升树(机器学习技法)

    梯度提升树模型 Gradient Boosted Decision Tree 与随机森林的对比 前面提到的随机森林使用Bagging的方式融合起来 也就是使用bootstrapping进行抽样得到不同的样本再加上不同的特征选择训练出不同的决
  • 特征选择-过滤式选择

    过滤式方法先按照某种规则对数据集进行特征选择 然后再训练学习器 特征选择过程与后续学习器无关 这相当于先用特征选择过程对初始特征进行 过滤 再用过滤后的特征来训练模型 某种规则 按照发散性或相关性对各个特征进行评分 设定阈值或者待选择阈值的
  • [机器学习与scikit-learn-46]:特征工程-特征选择(降维)-2-常见的特征降维的方法大全

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123953894 目录 前言 第1章
  • 指数分布的定义形式及应用

    转载请注明出处 http blog csdn net ningyaliuhebei article details 46409941 指数分布是连续型随机变量 指数分布具有无记忆性 指数分布是特殊的gamma分布 指数分布 Exponent
  • SMOTE过采样技术原理与实现

    1 这种操作的原理是什么 目的是什么 目的是合成分类问题中的少数类样本 使数据达到平衡 其中 样本数量过少的类别称为 少数类 原理和思想 合成的策略是对每个少数类样本a 从它的最近邻中随机选一个样本b 然后在a b之间的连线上随机选一点作为
  • 特征工程(1)--特征工程是什么?

    机器学习领域的大神Andrew Ng 吴恩达 老师曾说 Coming up with features is difficult time consuming requires expert knowledge Applied machin
  • 特征工程是什么?

    特征工程是指对原始数据进行预处理和转换 以提取出对机器学习算法建模有用的特征的过程 特征工程是机器学习中非常重要的一步 它可以显著影响模型的性能 下面是一些常见的特征工程技术和方法 数据清洗 处理缺失值 异常值和重复值 确保数据的质量和完整
  • 不均衡数据集采样1——SMOTE算法(过采样)

    SMOTE Synthetic Minority Over sampling Technique 论文地址 https www jair org index php jair article download 10302 24590 SMO
  • 随机森林详解

    原文链接 机器学习之随机森林 RF 详解 文章目录 一 bagging算法 1 简介 2 bagging算法流程 二 随机森林 1 简介 2 CART分类树的生成 3 总结 常用集成学习包括Bagging Boosting Stacking
  • 机器学习简介

    介绍 机器学习是人工智能 AI 的一个子领域 机器学习的目标通常是理解数据的结构并将该数据拟合到人们可以理解和利用的模型中 尽管机器学习是计算机科学的一个领域 但它与传统的计算方法不同 在传统计算中 算法是计算机用来计算或解决问题的显式编程
  • 基于LendingClub数据的信贷分析和建模报告

    一 课题分析 二 数据获取 三 数据探索 主要特征含义理解 特征分布 目标特征分布 分类变量的分布 连续数值特征分布 时序特征分布 文字特征分布 两两特征的协方差 四 数据预处理 数据集划分 特征缺失值识别与处理 严重缺失值的处理 缺失值填
  • 感知机分类学习

    感知机 perceptron 是一种二类分类的线性分类模型 也就是说 使用于将数据分成两类的 并且数据要线性可分的情况 线性可分是指存在一个超平面能够将空间分成两部分 每一部分为一类 感知机的目的就在于找这样的一个超平面 假设输入数据形式为
  • 机器学习可视化:模型评估和参数调优

    本篇文章详细阐述机器学习模型评估和参数调优 将主要围绕两个问题来阐述 知其所以然 当你选择的一个机器学习模型运行时 你要知道它是如何工作的 青出于蓝 更进一步 你得知道如何让此机器学习模型工作的更优 模型评估的方法 一般情况来说 F1评分或
  • Several Machine Learning Problems

    Classification Classification algorithms are algorithms that learn topredict theclass orcategory of an instance of data
  • 机器学习里的 kernel 是指什么?

    转自我的知乎回答 机器学习里的 kernel 是指什么 我换个角度来解释这个问题 机器学习在做回归或者分类时有一个很朴实的想法 预测 x 的值 那就在训练集 X 中寻找那些与 x 相似的样本 再把这些样本的值加权作为预测值 这里有两个问题

随机推荐

  • 如何使用OpenAI进行embedding句子后,输入新句子比较

    import openai import numpy as np from sklearn metrics pairwise import cosine similarity Set up OpenAI API credentials op
  • 权衡问题---学习了微服务各大常用组件的一点思考

    1 没有什么技术可以完全通用 只要深度使用一定需要从业务出发对技术进行权衡 从几个例子出发 1 ES的分片机制天生支持分布式 同时也带来了分布式了弊端 排序和算分问题 搜索的场景需要严格的定制化 通过对mapping的修改可以支持算分的调整
  • vtk9.2.6编译记录

    1 cmake gui打开 搜索qt相关 将默认选项改成yes 重新configure之后 会出现新的选项 比如Qt目录 确认没有问题之后 Generate生成sln解决方案后 用vs编译 2 配置CMAKE INSTALL PREFIX
  • Git 将已有项目上传新建仓库

    Git 将已有项目上传新建仓库 一 gitee或github创建空白仓库 记得保留下git链接 https gitee com huadeng863 git 二 在已有项目目录内删除已有git readme 如果有的话 将项目中的 git
  • buildroot 编译出错

    编译buildroot的时候出现如下错误 Incorrect selection of kernel headers expected 4 1 x got 4 0 x package pkg generic mk 228 recipe fo
  • phpstudy 8.1下载安装和简单使用教程

    phpstudy下载 去官网下载PHPStudy 选择自己电脑对应的系统版本 在首页导航选择windows版 弹出下拉框点击phpStudy 客户端 进入下载界面 点击下载 接着选择64位 然后就开始下载了 PHPStudy安装 解压下载好
  • stm32---用外部中断实现红外接收器

    一 红外遥控的原理 红外遥控是一种无线 非接触控制技术 具有抗干扰能力强 信息传 输可靠 功耗低 成本低 易实现等显著优点 被诸多电子设备特别是 家用电器广泛采用 并越来越多的应用到计算机系统中 红外遥控通信系统一般由红外发射装置和红外接收
  • 无意中发现的方法:一招让你的 IntelliJ Idea 飞起来

    一 引言 最近工作中使用到了 IntelliJ Idea 说实在的 不太熟悉这个 IDE 不知道为什么 对比 Eclipse 和 IntelliJ Idea 在我的电脑上 竟然是 IntelliJ Idea 比 Eclipse 运行的更卡一
  • python炫酷gui界面_如何炫酷的使用Python

    Python很酷 真的很酷 但是 我们中的很多人都是从不同的编程语言开始的 尽管我们确实很容易地掌握了Python 但是我们仍然不擅长以pythonic的方式做事 本文介绍了我几年来学到的一些技巧和相同的实际示例 希望你喜欢它 1 有用的键
  • android aidl出现无法import

    当采用eclipse 写aidl时出现couldn t find import for class 原因是你import的包没有在framework aidl里parcelable过 所以解决办法很简单 找到对应api level的fram
  • 软件开发十本书

    几年前 总结了 软件测试十本书 对从事软件质量验证和确认工作的基础知识进行简介 软件花钱最多 耗时最长 投入人力和精力最大的 是在开发过程 根据个人经验 推荐软件开发相关的十本书 供入门和进阶参考 坐等拍砖员 1 代码大全 软件开发世界的
  • Java 多线程同步:volatile 关键字

    多线程基础知识 Java 内存模型 Java 中的堆内存用来存储对象的实例 堆内存是被所有线程共享的运行时内存区域 因此 它存在可见性的问题 而局部变量 方法定义的参数则不会在线程之间共享 它们不会有内存可见性问题 也不受内存模型的影响 J
  • MySQL Cluster

    MySQL Cluster数据分布 分区 两阶段提交协议及事务资源 2013 12 11 15 00 28 分类 MySQL FROM http www zrwm com p 3210 Posted on 2013 年 3 月 8 日 by
  • https网络编程——openssl安装(两个软链接库libssl、libcrypto)、openssl命令行方式实现CA和证书、介绍SSH

    参考 openssl安装方式 Ubuntu下 地址 https qingmu blog csdn net article details 115454254 spm 1001 2014 3001 5502 目录 官方网站 1 解压 2 编译
  • stable diffusion webui安装与使用(官方超简单教程)

    预备依赖 下载miniconda 教程参考 https blog csdn net weixin 43828245 article details 124768518 安装git 参考教程 https blog csdn net weixi
  • js 实现多重罗盘转动

    引子 这几天一直在忙一个可滑动的转盘的demo 网上也有类似的例子 但是根据老板的需求来改他们的代码 还不如重新写个完全符合需求的插件 想法很美好 但是新手上路 效果链接文末 需求 image 这个demo给的非常简单 能转动的地方有三处
  • 方差、标准差、均方差、均方误差区别总结

    转载 http blog csdn net Leyvi Hsing article details 54022612 一 百度百科上方差是这样定义的 variance 是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量 概率论中方差
  • Flutter 重写原生App -- 02 基础知识 一路踩坑

    Pubspec Assist 插件 快速添加 pubspec yaml 的依赖 device info 0 4 0 3 可查看当前 链接的设备是 Ios Android 并且获得设备信息 Dart 语法 https dart dev gui
  • SVN配置

    1 SVN插件下载地址 http subclipse tigris org update 1 4 x http subclipse tigris org servlets ProjectDocumentList expandFolder 2
  • 【特征工程】特征选择与特征学习

    特征选择与特征学习 在机器学习的具体实践任务中 选择一组具有代表性的特征用于构建模型是非常重要的问题 特征选择通常选择与类别相关性强 且特征彼此间相关性弱的特征子集 具体特征选择算法通过定义合适的子集评价函数来体现 在现实世界中 数据通常是