【文本分类】基于改进CHI和PCA的文本特征选择

简介: 【文本分类】基于改进CHI和PCA的文本特征选择

摘要:改进CHI算法后,结合PCA算法,应用于文本的特征选择,提高了精度。

参考文献:[1]文武,万玉辉,张许红,文志云.基于改进CHI和PCA的文本特征选择[J].计算机工程与科学,2021,43(09):1645-1652.

一、引言


  文本特征空间的高维稀疏性严重影响了分类器的训练效率及分类精度,需要使用一些算法对高维的矩阵来降维、去噪。常用的特征选择算法有:文档频率DF、互信息MI、卡方检验CHI、信息增益IG、主成分分析PCA

二、基础算法


2.1、CHI算法【卡方统计】


  基本思想如下所示:

  (1)由CHI计算公式计算特征词与类别的CHI值;

  (2)根据所有特征与类别的CHI值大小排序;

  (3)选取前T个特征词作为输出特征子集。

  CHI算法的主要目的是筛选出和类别相关性强的特征,去除噪声特征,实现降维。

  初始卡方统计公式

image.png

 以上公式中A、B、C、D的含义如下:

` Ci类 非Ci类
含有特征tk的文本数 A B
不含有特征tk的文本数 C D

  如果数据集有n类,那么一个特征对每个类别都会有一个CHI值,这里会涉及到卡方值的选取模型问题,有2种方式:

  1、求n个卡方值的max

  2、求n个卡方值的avg

  通常使用第1种,max值更具有代表性,更能表达出一个特征对分类的话语权。

2.2、PCA算法【主成分分析】


  基本思想如下所示:

image.png

  主成分分析 PCA 在尽可能保留较多原始特征信息的基础上,根据方差最大化,将原始的高维特征重新组合在低维空间上表达出来,提取出贡献率大的综合特征,实现降维。

PCA是特征选择,还是特征杂糅在一起(综合)?求解。

2.3、CHI算法的改进ICHI


  从CHI算法的缺点出发:

 1、词频问题。CHI算法仅考虑特征词是否出现在文档中,没有考虑特征词的出现次数。原始CHI公式中,A、B、C、D计算的都是特征是否在文本中出现,而不是特征在文本中出现的几次,相当于求布尔值。


 2、文档分布。对于具体类别内部,若某特征词仅在此类中的个别文档中出现,在其它文档中不出现,则该特征词所代表的类别信息就少很多。


 3、类别频。若特征词只出现在极少类别中,它就会比在较多类别中都出现的特征更重要。


 4、负相关特性。负相关特性会对特征的重要性产生负面的影响,从CHI的原始公式中可以看出,特征词与类别成正相关,即A×D-B×C>0,卡方值越大,特征越重要。若特征词与类别成负相关,即A×D-B×C <0,该特征词对此类别越不重要,卡方值应越小,但实际卡方值却变大,这就影响了分类效果。

理论上说,由于CHI的原始公式是求平方的,如果负相关,最终平方也是大于零的。但是卡方值算的就是数据的信息程度,越偏离,信息量越大。此处有待研究。

 CHI算法的缺点的解决办法:

  1、词频问题。引入基于类别文档归一化的特征频度因子。同时为了防止分布不均匀,主要措施是特征词在文本内归一化,再在类别内归一化。公式如下:

image.png

 2、文档分布。提出了类别内部特征词的文档分布因子。算一下特征在内中分布。公式如下:

image.png

 3、类别频。 提出了逆类别分布因子。类似于TF-IDF思想。公式如下:

image.png

 4、负相关特性。解决办法是当A×D-B×C <0,卡方值直接为0。

总结:

  最终改进后的ICHI算法公式为:

image.png

三、代码实验


3.1、实验思路


  根据以下4种方法:

  (1)普通CHI算法来选择特征

  (2)改良ICHI算法来选择特征

  (3)普通CHI算法来选择特征 + PCA

  (4)改良ICHI算法来选择特征 + PCA

  比较不同算法之间,文本分类的准确率。

3.2、数据集


  数据来源于 https://github.com/cystanford/text_classification 。数据集共包含四个类别,分别为“女性”,“体育”,“文学”,“校园”,原始数据集已经划分了测试集和训练集,并给出了停用词文档。

3.3、实验结果


特征维度 sklean的chi2卡方 手写普通卡方CHI 手写改进卡方ICHI 手写普通卡方+PCA 手写改进卡方ICHI+PCA
4000 0.86 0.875 0.875 0.87 0.88
6000 0.865 0.885 0.885 0.88 0.885
8000 0.88 0.855 0.875 0.855 0.88
10000 0.87 0.875 0.88 0.875 0.88
12000 0.865 0.865 0.875 0.875 0.865
14000 0.87 0.87 0.885 0.875 0.88
6000 0.88 0.87 0.895 0.885 0.89
18000 0.875 0.865 0.9 0.875 0.89
20000 0.87 0.865 0.875 0.885 0.87
22000 0.875 0.865 0.885 0.9 0.89
24000 0.87 0.875 0.885 0.89 0.88

 【注】PCA算法降维到3000个特征。

  实验结果分析:

  1、对比chi2、CHI、ICHI方法,可以看到ICHI算法准确率效果确实最好;

  2、对比CHI+PCA、ICHI+PCA,可以看到仍然是ICHI+PCA效果好。

相关文章
|
7月前
|
机器学习/深度学习 算法 数据库
KNN和SVM实现对LFW人像图像数据集的分类应用
KNN和SVM实现对LFW人像图像数据集的分类应用
110 0
|
6月前
|
存储 算法
预训练特征分类器
【6月更文挑战第11天】
38 1
|
7月前
|
机器学习/深度学习 算法 TensorFlow
【视频】神经网络正则化方法防过拟合和R语言CNN分类手写数字图像数据MNIST|数据分享
【视频】神经网络正则化方法防过拟合和R语言CNN分类手写数字图像数据MNIST|数据分享
|
机器学习/深度学习 移动开发 资源调度
机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类
机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类
|
机器学习/深度学习
机器学习系列(14)_PCA对图像数据集的降维_03
降维的目的之一是希望抛弃对模型带来负面影响的特征,同时,带有效信息的特征的方差应该是远大于噪音的,所以相比噪音,有效的特征所带来的信息不会在PCA当中大量抛弃。
机器学习系列(14)_PCA对图像数据集的降维_03
|
机器学习/深度学习 自然语言处理 资源调度
机器学习算法(九): 基于线性判别模型的LDA手写数字分类识别
机器学习算法(九): 基于线性判别模型的LDA手写数字分类识别
|
机器学习/深度学习 自然语言处理 算法
文本分类算法TextCNN
文本分类算法TextCNN
卡方检验用于文本分类中的特征提取
卡方检验(Chi-square Test) 卡方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。具体做的时候常常先假设两个变量确实是独立的(“原假设”),然后观察实际值(观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时
2235 0
|
机器学习/深度学习 自然语言处理 算法
ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测daiding
ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测daiding
ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测daiding
ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测
ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测
ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测