分类算法之二——特征提取与特征选择

article/2025/10/14 14:03:00

典型应用——文本分类   


1)文本信息的表示,从原始的文本转化为结构化的可处理信息;

2)目前常采用向量空间模型来描述文本向量,通常文本向量维度较高,使得分类效率低下;

3)必须对特征向量进行降维处理,最有效的方法是特征选择。


文本特征向量提取


1)空间向量模型:将文本内容转化为向量空间中的向量运算,以空间上的相似度表示语义上的相似度。

2)文本处理中常用的相似性度量方式是余弦距离。

3)设D为一个包含m个文档的文档集合,Di为第i个文档的特征向量,则有:

    D={D1,D2,…,Dm}, 其中 Di=(di1,di2,…,din),i=1,2,…,m,dij(i=1,2,…,m;j=1,2,…,n)为

    文档Di中第j个词条tj的权值,它一般被定义为tj在Di中出现的频率tij的函数,例如采用TF-IDF函数,

     即dij=tij*log(N/nj)其中,N是文档数据库中文档总数,nj是文档数据库含有词条tj的文档数目。

4)通过上述的空间向量模型,文本数据转化成了计算机可处理的结构化数据,文本之间的相似性问题也转化成了向量之间的相似性问题。


文本特征向量选择


1. TF-IDF的局限性

TF-IDF可以有效评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。因为它综合表征了该词在文档中的重要程度和文档区分度。但在文本分类中单纯使用TF-IDF来判断一个特征是否有区分度是不够的。

1)它没有考虑特征词在类间的分布。也就是说该选择的特征应该在某类出现多,而其它类出现少,即考察各类的文档频率的差异。如果一个特征词,在各个类间分布比较均匀,这样的词对分类基本没有贡献;但是如果一个特征词比较集中的分布在某个类中,而在其它类中几乎不出现,这样的词却能够很好代表这个类的特征,而TF-IDF不能区分这两种情况。

2)没有考虑特征词在类内部文档中的分布情况。在类内部的文档中,如果特征词均匀分布在其中,则这个特征词能够很好的代表这个类的特征,如果只在几篇文档中出现,而在此类的其它文档中不出现,显然这样的特征词不能够代表这个类的特征。

特征提取的目的在于降维。即使随机选取一部分词,分类效果也不会差到惊人的地步。采用了TF-IDF方法的分类效果当然也能有不错的效果。当然,TF-IDF用于向量空间模型,进行文档相似度计算是相当有效的。


2.卡方检验(Chi-square)

    卡方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。具体做的时候常常先假设两个变量确实是独立的(“原假设”),然后观察实际值(观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时就接受原假设;如果偏差大到一定程度,使得这样的误差不太可能是偶然产生或者测量不精确所致,我们就认为两者实际上是相关的,即否定原假设,而接受备择假设。理论值为E,实际值为x,偏差程度的计算公式为:

    这个式子就是卡方检验使用的差值衡量公式。当提供了数个样本的观察值x1,x2,……xi,……xn之后,代入到式中就可以求得开方值,用这个值与事先设定的阈值比较,如果大于阈值(即偏差很大),就认为原假设不成立,反之则认为原假设成立。

    在文本分类的特征选择阶段,一般使用“词t与类别c不相关”来做原假设,计算出的开方值越大,说明对原假设的偏离越大,我们越倾向于认为原假设的反面情况是正确的。选择的过程为每个词计算它与类别c的开方值,从大到小排个序(此时开方值越大越相关),取前k个就可以。

例如,N篇文档,分类有体育和非体育,考察特征词“篮球”与类别“体育”的相关性。


特征选择

1.属于“体育”

2.不属于“体育”

总 

1.包含“篮球”

A

B

A+B

2.不包含“篮球”

C

D

C+D

总 

A+C

B+D

    N

根据原假设,“体育”类别中包含“篮球”的文档比例应与所有文档中包含“篮球”的文档比例相同。故A的理论值应为:

差值:

同样计算剩下三种情况的差值D12,D21,D22。最后计算“篮球”与“体育”类文章的开方值:

    进一步化简,注意如果给定了一个文档集合(例如我们的训练集)和一个类别,则N,M,N-M(即A+C和B+D)对同一类别文档中的所有词来说都是一样的,而我们只关心一堆词对某个类别的开方值的大小顺序,而并不关心具体的值,因此把它们去掉是完全可以的,故实际计算的时候我们都使用

卡方检验的缺点是:它只统计文档是否出现词,而不管出现了几次。这会使得他对低频词有所偏袒(因为它夸大了低频词的作用)。这就是开方检验著名的“低频词缺陷”。因此卡方检验也经常同其他因素如词频综合考虑来扬长避短。


3.信息增益

信息熵(信息量)(系统的)


意思就是一个变量可能的变化越多(反而跟变量具体的取值没有任何关系,只和值的种类多少以及发生概率有关),它携带的信息量就越大。

一个一个特征t,系统有它和没它的时候信息量各是多少,两者的差值就是这个特征给系统带来的信息量统越是有序,信息熵就越低;反之,一个系统越乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个衡量。

信息增益(特征的)是指期望信息或者信息熵的有效减少量

对于一个特征t,系统有它和没它的时候信息量各是多少,两者的差值就是这个特征给系统带来的信息量。有它即信息熵,无它则是条件熵。

条件熵:计算当一个特征t不能变化时,系统的信息量是多少。

对于一个特征X,它可能的取值有n多种(x1,x2,……,xn),计算每个值的条件熵,再取平均值。

在文本分类中,特征词t的取值只有t(代表t出现)和clip_image006(代表t不出现)。那么

最后,信息增益

但信息增益最大的问题还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而无法做“本地”的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。


4.特征提取步骤

1. 卡方检验

 

    1.1 统计样本集中文档总数(N)。

    1.2 统计每个词的正文档出现频率(A)、负文档出现频率(B)、正文档不出现频率)、负文档不出现频率。

    1.3 计算每个词的卡方值,公式如下:

   

    1.4 将每个词按卡方值从大到小排序,选取前k个词作为特征,k即特征维数。

2. 信息增益

    2.1 统计正负分类的文档数:N1、N2。

    2.2 统计每个词的正文档出现频率(A)、负文档出现频率(B)、正文档不出现频率)、负文档不出现频率。

    2.3 计算信息熵

    

    2.4 计算每个词的信息增益

 
    2.5 将每个词按信息增益值从大到小排序,选取前k个词作为特征,k即特征维数。

特征向量归一化方法

1、线性函数转换,表达式如下:

    y=(x-MinValue)/(MaxValue-MinValue)

2、对数函数转换,表达式如下:

    y=log10 (x)

3、反余切函数转换 ,表达式如下:

    y=arctan(x)*2/PI

4、减去均值,乘以方差:

    y=(x-means)/ variance



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

相关文章

机器学习5种特征选择的方法!

我们知道模型的性能会随着使用特征数量的增加而增加。但是,当超过峰值时,模型性能将会下降。这就是为什么我们只需要选择能够有效预测的特征的原因。 特征选择类似于降维技术,其目的是减少特征的数量,但是从根本上说,它…

特征选择算法分类

坊间常说:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 首先,从特征开始说起&am…

特征选择基本思想与relieff算法

特征选择 如果特征参数不足,则很容易引发数据重叠的现象,所有分类器都将不起作用;如果特征参数太多,则可能会消耗大量时间和计算资源。特征选择可以通过消除冗余的特征来提高分类算法的准确性,并减少其计算复杂度。特…

特征选择算法总结

1 综述 (1) 什么是特征选择 特征选择 ( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ) ,或属性选择( Attribute Selection ) ,是指从全部特征中选取一个特征子集,使构造出来的模型更好。 (2) 为什么要做特征选择 …

特征选择算法 | Matlab实现基于互信息特征选择算法的回归数据特征选择 MI

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab实现基于互信息特征选择算法的回归数据特征选择 MI 部分源码 %--------------------

如何进行特征选择?

特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、算法都有着重要作用。 特征选择主要有两个功能: 减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和…

用遗传算法进行特征选择

文章目录 一、问题举例二、算法描述1、基于类内类间距离的可分性判据2、遗传算法(Genetic Algorithm)1) 初始化种群2)计算当前种群 M(t)中每条染色体的适应度值 f(m)3)基于适应度值的…

特征选择-常见的搜索算法

2.2.1完全搜索 完全搜索分为穷举搜索(Exhaustive)与非穷举搜索(Non-Exhaustive)两类。 (1) 广度优先搜索( Breadth First Search ) 算法描述:广度优先遍历特征子空间。 算法评价:枚举了所有的特征组合,属于穷举搜索,时间复杂度是O…

【特征选择】使用遗传算法进行特征选择

遗传算法寻优 cross_val_score(lgb,train_X,train_y,scoringf1,cvsKfold).mean() # 使用全部特征进行训练0.8508040614085857train_1 train.drop(label,1) cols train_1.columnstrain_1.head()经营期限起是否广告经营是否城镇从业人数注册资本(金)实…

特征选择 ReliefF算法

一、算法 Relief算法最早由Kira提出. 基本内容:从训练集D中随机选择一个样本R, 然后从和R同类的样本中寻找k最近邻样本H,从和R不同类的样本中寻找k最近邻样本M, 最后按照公式更新特征权重. 算法: 1.置0所有特征权重 2.For i1 to m do 2.1 随机…

特征选择算法-Relief(转)

【转载】数据挖掘之—基于ReliefF和K-means算法的医学应用实例(转自: http://www.cnblogs.com/asxinyu/archive/2013/08/29/3289682.html) 数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。数…

机器学习特征选择—使用遗传算法进行特征选择

目录 0、前言 1、遗传算法概念 2、基于DEAP库的python遗传算法特征选择 3、我的遗传算法特征选择代码及一些代码函数解析 4、完整代码 5、可能会遇到的错误 0、前言 差不多有大半年没有写博客了,这段时间没有学习什么新的知识和总结;这篇博客内容也…

特征选择算法-Relief

转自:http://www.cnblogs.com/asxinyu/archive/2013/08/29/3289682.html 数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。数据挖掘 (DataMiriing),指的是从大型数据库或数据仓库中提取人们感…

特征选择常用算法

特征选择常用算法综述 特征选择的一般过程: 1.生成子集:搜索特征子集,为评价函数提供特征子集 2.评价函数:评价特征子集的好坏 3.停止准则:与评价函数相关,一般是阈值,评价函数达到一定标准…

常用的特征选择算法介绍

结合Scikit-learn介绍几种常用的特征选择方法 原文 http://dataunion.org/14072.html 主题 特征选择 scikit-learn 特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构&#xff…

特征选择(Feature Selection)

主要内容: 为什么要进行特征选择?什么是特征选择?怎么进行特征选择 特征选择: 在现实生活中,一个对象往往具有很多属性(以下称为特征),这些特征大致可以被分成三种主要的类型&…

特征选择常用算法综述

1 综述 (1) 什么是特征选择 特征选择 ( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ) ,或属性选择( Attribute Selection ) ,是指从全部特征中选取一个特征子集,使构造出来的模型更好。 (2) 为什么要做特征选择 在机器学习的实际应用…

浅谈五种常用的特征选择方法

👆点击关注|设为星标|干货速递👆 在许多机器学习相关的书里,很难找到关于特征选择的内容,因为特征选择要解决的问题往往被视为机器学习的一个子模块,一般不会单独拿出来讨论。 但特征选择是一个…

Python-编码规范

学习内容:Python基础入门知识-代码编写规范 专栏作者:不渴望力量的哈士奇不渴望力量的哈士奇擅长Python全栈白宝书[更新中],⑤ - 数据库开发实战篇,网安之路,等方面的知识,不渴望力量的哈士奇关注云原生,算法,python,集成测试,去中心化,web安全,智能合约…

前端编码规范

最近整理了一份HTML/CSS/JS编码规范,供大家参考。 目录: 一、HTML编码规范 二、CSS编码规范 三、JS编码规范 一、HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签要写alt属性,如果没有就写一个空的。但是一般要写一个…