特征提取算法简单学习笔记

article/2025/9/28 15:40:09

update 2021.04.22

这几年的经验下来,以前以为特征提取的方法时共通的,注意力都在后续算法部分,现在的感受是,不同领域算法反而很多时候时共通的,特征提取差异很大,不能简单的一言以蔽之,这也是当初写完这个简单学习笔记之后感觉帮助不大的原因。

举例来说,CV方向,特征提取需要图像处理的相关知识,NLP方向是一些文本的计算方式,特征就是用数字描述样本,将算法应用到不同领域时候需要不同领域的先验知识,特征可以用一些常用的方法提取,也可以根据自己的相关知识,自定义特征,行业知识对特征提取来说很重要,最近正在信号处理里崩溃,有一种从头开始的感觉,不同行业算法工程师和算法工程师之间的知识储备很可能千差万别。

=============================================

2018.01.30

特征提取:利用已有的特征计算出一个抽象程度更高的特征集,也指计算得到某个特征的算法

特征选择:尝试从初始的特征集T中选择对文本描述效果最好的特征子集T’(重点是“选择”)

 

 

 

我的理解:

特征提取:需要进行特征变换,改变向量空间

特征选择:选择,保留原始特征意义

--------------------------------------------------------------------------------------

复制一段:

 

线性特征提取

PCA

LDA
ICA -独立成分分析
思想:ICA是将原始数据降维并提取出相互独立的属性;寻找一个线性变换z=Wx,使得z的各个分量间的独立性最大,I(z)=Eln(p(z)/p(z1)..p(zd))
注:PCA&ICA
ICA是找出构成信号的相互独立部分(不需要正交),对应高阶统计量分析。ICA理论认为用来观测的混合数据阵X是由独立元S经过A线性加权获得。ICA理论的目标就是通过X求得一个分离矩阵W,使得W作用在X上所获得的信号Y是独立源S的最优逼近,该关系可以通过下式表示:
Y = WX = WAS , A = inv(W)
ICA相比与PCA更能刻画变量的随机统计特性,且能抑制高斯噪声。

 

 

 

 

非线性特征提取
Kernel PCA  
Kernel FDA  
Manifold Learning 流形学习

以上来源 http://blog.csdn.net/lanbing510/article/details/40488787

并不完全是我想要的,好像哪里不太对。。

-----------------------------------------------------------------------------------------------

找篇论文:(CV的一篇)

几种特征提取算法性能的评估(魏英姿,刘源,不知道是哪年)http://www.docin.com/p-1230784467.html

1. 特征提取算法:

1.1 FAST(Features from Accelerated Segment Test)(从加快的segment测试中得到feature。。=.=)

1.2 SIFT(Scale Invariant Feature Transfrom)(比例不变特征转换。。=.=)(描述见后续。。图片特征提取部分)

1.3 PCA-SIFT

1.4 SURF( the Speed-up Robust Feature Detector)(加速鲁棒特征检测er。。=.=)(描述见后续。。图片特征提取部分)

1.5 ORB(Oriented Brief)(有方向的摘要。。=.=)

2. 随机抽样一致性算法(Random  Sample Consensus, RANSAC)

---------------------------------------------------------------------------------------------

网上复制一截,作为上述补充。。 来源:http://blog.csdn.net/zhangzhengyi03539/article/details/49945011

 

MDS(Muli-demision scaling) 
MDS也是一种无监督的特征映射方法。MDS建立一个原始高维输入空间样本到低维特征空间样本的一一映射,建立的原则是在输入空间距离近的样本在低维特征空间的距离也要近。

Isomap 
Isomap基于MDS。Isomap通过计算最段路径利用MDS进行降维。在利用Isomap的时候可以有两种方法确定原始输入空间样本之间知否有路径:一是设置阀值,两样本之间距离小于阀值的就认为是有边;另一种是设置邻居节点个数k,认为每个节点都与与它最近的k个样本之间存在边。

LLE 
LLE是局部化模型,通过对节点的临域建立OLS回归模型,然后根据OLS的权重构建特征空间样本。

SVD 
-----------------------------------------------------------------------------------------

网上又找一段。。来源:http://blog.csdn.net/rosenor1/article/details/52372788

 

先说一句题外的:

特征是什么样的。。

 

这篇文章里面说到了这句话:

分类变量通常用独热编码(One-of-K or One-Hot Encoding),通过二进制数来表示每个解释变量的特征。

想起来以前有一次面试的时候说到human detection,面试的人问我HoG特征是什么样的,当时觉得有一种无法言说的感觉,面试官后来解释了一下,觉得他说的也跟没说没差。。然后找到了这篇HoG特征简单梳理http://blog.csdn.net/coming_is_winter/article/details/72850511

 

复制正经的:

 

文字特征提取--词库模型(Bag-of-words model)

 

一批文档的集合称为文集(corpus)

文件的单词构成词汇表(vocabulary)

构成特征向量的元素数量称为维度(dimension)

一个词典(dictionary)来表示词汇表与特征向量索引的对应关系

 

将文档词块化(tokenize)。文档词块化是把句子分割成词块(token)或有意义的字母序列的过程。词块大多是单词,但是他们也可能是一些短语,如标点符号和词缀。

  词汇表里面有10个单词,但a不在词汇表里面,是因为a的长度不符合CountVectorizer类的要求。

  对比文档的特征向量,会发现前两个文档相比第三个文档更相似。如果用欧氏距离(Euclidean distance)计算它们的特征向量会比其与第三个文档距离更接近。两向量的欧氏距离就是两个向量欧氏范数(Euclidean norm)或L2范数差的绝对值:

  

  向量的欧氏范数是其元素平方和的平方根:

  

  有许多零元素的高维特征向量成为稀疏向量(sparse vectors)。

  第一个问题就是高维向量需要占用更大内存。NumPy提供了一些数据类型只显示稀疏向量的非零元素,可以有效处理这个问题。

  第二个问题就是著名的维度灾难(curse of dimensionality,Hughes effect),维度越多就要求更大的训练集数据保证模型能够充分学习。如果训练样本不够,那么算法就可以拟合过度导致归纳失败。下面,我们介绍一些降维的方法

  停用词过滤

  特征向量降维的一个基本方法是单词全部转换成小写。这是因为单词的大小写一般不会影响意思。词库模型并不在乎单词的位置和语法。

  另一种方法是去掉文集常用词。这里词称为停用词(Stop-word),像a,an,the等。

  词根还原与词形还原

  停用词去掉之后,可能还会剩下许多词,还有一种常用的方法就是词根还原(stemming )与词形还原(lemmatization)。

  词根还原与词形还原就是为了将单词从不同的时态、派生形式还原。

  词形还原:生成单词的形态学的词根

就是用来处理可以表现单词意思的词元(lemma)或形态学的词根(morphological root)的过程。词元是单词在词典中查询该词的基本形式。

通常需要词法资料的支持,比如WordNet和单词词类(part of speech)。

     词根还原:把附加的词缀都去掉,构成一个词块,可能不是一个正常的单词。

通常需要用规则产生词干(stem)并操作词块,不需要词法资源,也不在乎单词的意思。

  带TF-IDF权重的扩展词库。。作为统计学上的方法对于短文本的应用不是太好

  一个文档中某个词多次出现,相比只出现过一次的单词更能体现反映文档的意思。

这个统计量是可以提前算好的,使用时直接查表即可,不会存在效率问题。

  这种单词频率构成的特征向量为文档的意思提供了更多的信息,但是在对比不同的文档时,需要考虑文档的长度。

  很多单词可能在两个文档的频率一样,但是两个文档的长度差别很大,一个文档比另一个文档长很多倍。scikit-learn的TfdfTransformer类可以解决这个问题,通过对词频(term frequency)特征向量归一化来实现不同文档向量的可比性。默认情况下,TfdfTransformer类用L2范数对特征向量归一化:

  

  f(t,d)是第d个文档(document)t个单词(term)的频率,∥x∥是频率向量的L2范数。

       对数词频调整方法(logarithmically scaled term frequencies),把词频调整到一个更小的范围

       TfdfTransformer类计算对数词频调整时,需要将参数sublinear_tf设置为True。

       词频放大法(augmented term frequencies),适用于消除较长文档的差异

  

  maxf(w,d):w∈d是文档d中的最大词频。scikit-learn没有现成可用的词频放大公式,不过通过CountVectorizer可以轻松实现。

 

  归一化,对数调整词频和词频放大三支方法都消除文档不同大小对词频的影响。

 

但是,另一个问题仍然存在,那就是特征向量里高频词的权重更大,即使这些词在文集内其他文档里面也经常出现。这些单词并没有突出代表单个文档的意思。逆向文件频率(inverse document frequency,IDF)就是用来度量文集中单词频率的。

  

  其中,N是文集中文档数量,d∈D:t∈d表示包含单词tt的文档数量。单词的TF-IDF值就是其频率与逆向文件频率的乘积。

  通过TF-IDF加权之后,我们会发现在文集中较常见的词被调整了。

  通过哈希技巧实现特征向量

  前面我们是用包含文集所有词块的词典来完成文档词块与特征向量的映射的。这么做有两个缺点。首先是文集需要被调用两次。第一次是创建词典,第二次是创建文档的特征向量。另外,词典必须储存在内存里,如果文集特别大就会很耗内存。通过哈希表可以有效的解决这些问题。可以将词块用哈希函数来确定它在特征向量的索引位置,可以不创建词典,这称为哈希技巧(hashing trick)。scikit-learn提供了HashingVectorizer来实现这个技巧:

  fromsklearn.feature_extraction.textimportHashingVectorizercorpus=['the','ate','bacon','cat']vectorizer=HashingVectorizer(n_features=6)print(vectorizer.transform(corpus).todense())

  [[-1. 0. 0. 0. 0. 0.] [ 0. 0. 0. 1. 0. 0.] [ 0. 0. 0. 0. -1. 0.] [ 0. 1. 0. 0. 0. 0.]]

  哈希技巧是无固定状态的(stateless),它把任意的数据块映射到固定数目的位置,并且保证相同的输入一定产生相同的输出,不同的输入尽可能产生不同的输出。它可以用并行,线上,流式传输创建特征向量,因为它初始化是不需要文集输入。n_features是一个可选参数,默认值是220220,这里设置成6是为了演示。另外,注意有些单词频率是负数。由于Hash碰撞可能发生,所以HashingVectorizer用有符号哈希函数(signed hash function)。特征值和它的词块的哈希值带同样符号,如果cats出现过两次,被哈希成-3,文档特征向量的第四个元素要减去2。如果dogs出现过两次,被哈希成3,文档特征向量的第四个元素要加上2。

  用带符号哈希函数可以把词块发生哈希碰撞的概率相互抵消掉,信息损失比信息损失的同时出现信息冗余要好。哈希技巧的一个不足是模型的结果更难察看,由于哈希函数不能显示哪个词块映射到特征向量的哪个位置了。

图片特征提取

 通过像素值提取特征

  数字图像通常是一张光栅图或像素图,将颜色映射到网格坐标里。一张图片可以看成是一个每个元素都是颜色值的矩阵。表示图像基本特征就是将矩阵每行连起来变成一个行向量。光学文字识别(Optical character recognition,OCR)是机器学习的经典问题。

  和TF-IDF特征向量不同,大部分图像都不是稀疏的。这种表示法的缺点不只是特征向量的维度灾难,还有就是某个位置的学习结果在经过对图像的放缩,旋转或变换之后可能就不对了,非常敏感,缺乏稳定性。另外,这种方法对图像的亮度也十分敏感。所以这种方法在处理照片和其他自然景色图像时不怎么有用。现代计算机视觉应用通常手工实现特征提取,或者用深度学习自动化解决无监督问题。

创建的特征矢量包含了图像的每个像素,既包含了图像特征的有用信息,也包含了一堆噪声。

 对感兴趣的点进行特征提取

有信息量的属性,称为兴趣点(points of interest),是由丰富的纹理包围,基本可以重建图像。边缘(edges)和角点(corners)是两种常用的兴趣点类型。边是像素快速变化的分界线(boundary),角是两条边的交集。

  当图片的亮度发生统一变化时,这些兴趣点依然存在。

  SIFT和SURF

  尺度不变特征转换(Scale-Invariant Feature Transform,SIFT)是一种特征提取方法,相比前面使用的方法,SIFT对图像的尺寸,旋转,亮度变化更不敏感。每个SIFT特征都是一个描述图片上某个区域边缘和角点的向量。和兴趣点不同,SIFT还可以获取每个兴趣点和它周围点的综合信息。加速稳健特征(Speeded-Up Robust Features,SURF)是另一个抽取图像兴趣点的方法,其特征向量对图像的尺寸,旋转,亮度变化是不变的。SURF的算法可以比SIFT更快,更有效的识别出兴趣点。

  数据标准化

  确保解释变量的数据都是同一量级,均值为0的标准化数据。许多评估方法在处理标准化数据集时可以获得更好的效果。标准化数据均值为0,单位方差(Unit Variance)。均值为0的解释变量是关于原点对称的,特征向量的单位方差表示其特征值全身统一单位,统一量级的数据。解释变量的值可以通过正态分布进行标准化,减去均值后除以标准差。

-------------------------------------------------------------------------------------------

查了查,还有一些,梳理在下面:

CHI开方检验

TFIDF可以用于任意文本集合,而CHI则需要文本有分类标签的标记才能计算。

 

textrank

 

本身是基于pagerank 算法而来的,词作为顶点,可以用有向图也可以无向图,最开始textrank是就是作为关键词抽取和相关权重计算而出生的。最初是作为关键词抽取方法提出来的,后来也有人尝试作为权重计算方法,但需要注意的是TextRank的计算复杂度很高。

-------------------------------------------------------------------------------------------------------------------------------------------

 

图像特征提取与特征选择基本方法总结

 

 

 

http://blog.csdn.net/zx799959906/article/details/39369543

-------------------------------------------------------------------------------------------------------------------------------------------

链接:特征工程到底是什么? - 城东的回答

这个太长了。。暂时没空看了

----------------------------------------------------------------------------------------

and finally

 


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

相关文章

脑电数据的特征提取算法详解

脑电信号的特征工程。 作者做了什么 做这件事有什么意义 作者是用什么方法去做的 这个方法(思路)的每一步具体怎么操作,每一步都有什么目的,为了解决一个什么样的小问题 在做的过程中,有哪些难点,作者是如何…

特征提取算法(1)——纹理特征提取算法LBP

模式识别中进行匹配识别或者分类器分类识别时,判断的依据就是图像特征。用提取的特征表示整幅图像内容,根据特征匹配或者分类图像目标。 常见的特征提取算法主要分为以下3类: 基于颜色特征:如颜色直方图、颜色集、颜色矩、颜色聚合向量等;基于纹理特征:如Tamura纹理特征、…

深度学习理论——特征提取算法

大家好,继续理论学习,今天介绍几种最常见的特征提取算法。 1.LBP算法(Local Binary Patterns,局部二值模式) LBP算子是一种用来描述图像局部纹理特征的算子,具有灰度不变性。 其主要思想是在目标像素周围…

特征提取算法的总结

在前面的blog中,我们已经讲了SIFT的原理,这里我们再详细讲解SIFT的变体:PCA-SIFT和GLOH。 – Scale invariant feature transform (SIFT): Lowe, 2004. – PCA-SIFT: SIFT: Ke and Sukthankar 2004 Ke and Sukthankar, 2004. – Gradient l…

常见的几种图像特征提取算法

常见的几种图像特征提取算法 1. LBP算法(Local Binary Patterns,局部二值模式)2.HOG特征提取算法(Histogram of Oriented Gradient)3.SIFT算子(Scale-invariant feature transform,尺度不变特征变换) 1. LBP算法(Local…

SIFT特征提取算法实验

SIFT特征提取算法实验 SIFT特征提取算法 1.1 算法定义 1.2 SIFT特征提取算法实验: 1.3 构造数据集 检测提取感兴趣点 2.1代码实现: 2.2.绘制特征点代码分析: 提取数据集中每张图片的SIFT特征并展示 3.1实现对比: 3.2代码实现: 4.计算两张图片间的SIFT特征匹配结果 4.1匹配…

SIFT、SURF等关键点特征提取算法代码

文章目录 1.关键点特征提取算法2.SIFT代码(pythonopencv)2.SURF代码(pythonopencv)3.SIFT和SURF的比较 1.关键点特征提取算法 特征提取是提取出物体(如图片)的特征,用数学的向量、矩阵等对物体…

HOG图像特征提取算法

HOG图像特征提取算法 HOG简介HOG特点HOG计算步骤HOG参数计算HOG提取特征效果HOG代码实现 HOG简介 HOG全称:方向梯度直方图(Histogram of Oriented Gradient),发表于2005年的CVPR,是一种图像特征提取算法,和…

SURF特征提取算法详解

上一节我们已经介绍了SIFT算法,SIFT算法对旋转、尺度缩放、亮度变化等保持不变性,对视角变换、仿射变化、噪声也保持一定程度的稳定性,是一种非常优秀的局部特征描述算法。但是其实时性相对不高。 SURF(Speeded Up Robust Features)算法改进了特征了提取…

图像特征提取算法—HOG

图像特征提取算法—HOG 一 图像基本概念 1.1特征 边缘,角,区域。但不同的目的对应着的不同的特征,边缘特征,颜色特征,梯度方向分布等。 每个物体,我们总可以用一些词语或部件来描述它,比如人…

时域特征提取_EEG信号特征提取算法

点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 时域分析与频域分析 EEG信号特征提取就是以脑电信号作为源信号,确定各种参数并以此为向量组成表征信号特征的特征向量。 特征參数主要包括时域信号(如幅值)和频域信号(如频率)两大类,相应的特征提取方法也…

特征提取算法

特征提取 1、背景2、边界预处理Moore boundary tracing algorithmChain CodesFreeman Chain Codesslope chain codes (SCCs) minimum-perimeter polygon (MPP)signaturesskeletons 3、Region Feature Descriptors3.1 区域描述子和特征向量3.2 Topological Descriptors3.3 Textu…

深度学习之特征提取算法

目录 前言 二、LBP(Local Binary Patterns,局部二值模式) 三、HOG算法(Histogram of Oriented Gradient, 方向梯度直方图) 四、SIFT算子(Scale-invariant feature transform ,尺度不变特征变换) 五、H…

idea如何使用git关联远程仓库

1.git的配置 一般本地安装了git,idea会自动检索, 2.创建git本地仓库 一般以你要上传的项目为根目录 3.将文件提交至本地仓库 4.提交至远程仓库 点击VCS选择git点击push提交,第一次连接会让你输入远程仓库的地址。 我们先将github上的地…

git 将本地项目关联到远程仓库

原文链接:https://www.jianshu.com/p/2a8b4e627991 参考链接: https://blog.csdn.net/baidu_35085676/article/details/53456884 1.首先在项目目录下初始化本地仓库 git init 2.添加所有文件( . 表示所有) git add . 3.提交所有文件到本地仓库 git comm…

git创建本地仓库远程仓库,并关联。全过程

1.在网页中自己的github账号下,创建仓库project 2.在本机创建文件夹project。 进入文件夹project. (1) git init (2) git add README.md (3) git commit -m "first commit" (4) git branch -M master (5) git remote add origin https://github.co…

Git本地仓库与远程仓库关联

一、前提条件 1、本地一个仓库:本地仓库已经经过git init 初始化 2、远程一个仓库:已经存在了一个远程的仓库 3、GitHub已经添加了SSH Keys 二、建立远程与本地仓库的关联 本地仓库与远程仓库关联有两种方法,一种是通过IDE(比…

使用git命令,本地仓库关联到远程仓库

本地仓库关联到远程: 创建成功会得到一个url地址和git全局设置的两行命令,下面从本地链接远程时会用到。 git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2、选择本地文件夹,在…

git关联两个远程仓库,一个仓库(github)拉取代码,另一个仓库(gitlab)推送代码

有这种情况,小伙伴们在github上下载的开源项目(该开源项目还在继续开发维护),然后自己下载下来进行二次开发,然后又要把项目推送自己的gitlab私服上,这个时候不得不本地代码关联两个远程仓库。接下来我将一…

IDEA本地项目关联远程Git远程仓库

IDEA本地项目关联远程Git远程仓库 下面介绍几种方法: 一、代码 clone 到本地 这种方法是直接 clone 代码,这样不需要在手动关联仓库。 1、本地创建空白文件夹 2、右键 Git Bash Here 打开控制台 3、直接 clone 远程仓库的代码 git clone 远程地址&…