文本特征选择的关键算法总结

妖狐艹你老母 2022-06-04 07:10 331阅读 0赞

一、特征词选择与特征词权重关系

开始学文本分类的时候经常要搞晕特征词选择和特征词权重 这两个东西,因为两者都要进行量化,很容易认为特征词选择就是计算权重,因此我认为有必要先搞清楚这两个概念。

两者的区别 :特征词选择是为了降低文本表示的维度,而特征词权重是为了表示文本表示中每一个特征项的重要程度。

特征词的选择算法 有:文本特征选择的算法有基于文档频率 (Document Frequency) 、信息增益 (Information Gain, IG) 、开方拟和检验方法 (CHI 统计 ) 、互信息 (mutual Information) 、潜在语义分析LSA、期望值交叉算熵、文本证据权、 term strength(TS) 、 GSS Coefficient 、 odds ratio等;

特征词的权值 (即所谓的文本表示)计算有:TF-IDF,TF的改进,信息熵的引用等[1] 。这个将在下篇进行分析一下。

二、特征词权重选择方法分析

以下分别分析一下特征词的选择算法,由于信息增益是很有效的特征选择方法,因此,将给出信息增益的java代码。

1. 基于文档频率(DF)

在文档频率方法中,使用特征词在一个类别中出现的文档数来表示这个特征词与该类别的相关度。出现的文档数多的特征词被保留的可能性大。显然,文档频率方法实现最简单、算法复杂度最低,而且 DF 方法与其他几种方法的分类性能也差不多。

计算公式:DFterm :特征词term在某一类中的所有文档出现的次数。

改进公式:[2]

2. 互信息 (mutual Information)

在互信息算法中,采用计算特征词 t 和类别 c 之间的相关度:

其中, A 为在类别 c 中特征词 t 出现的文档数; B 为在除了类别 c 的其他类别中特征词 t 出现的文档数; C 为在类别 c 中特征词 t 未出现的文档数; N 为所有类别中的文档数的总和。如果共有 m 个类别,那么每个特征词将得到 m 个相关度值,取这 m 个值的平均值作为每个特征词的权值,权值大的特征词被保留的可能性大。

缺点:待补充

3. 信息增益 (Information Gain)

信息增益 (IG) 是公认较好的特征选择方法,它刻画了一个词语在文本中出现与否对文本情感分类的影响,即一个词语在文本中出现前后的信息嫡之差。某个词语的信息增益值越大,说明它对分类的贡献就越大。信息增益的计算见公式:

P(Ci) ,表示类别 Ci 出现的概率,其实只要用 1 除以类别总数就得到了(这是说你平等的看待每个类别而忽略它们的大小时这样算,如果考虑了大小就要把大小的影响加进去)。

P(t) ,就是特征 t 出现的概率,只要用出现过 t 的文档数除以总文档数就可以了

P(Ci|t) 表示出现 t 的时候,类别 Ci 出现的概率,只要用出现了 T 并且属于类别 Ci 的文档数除以出现了 T 的文档数就可以了[3]

Java代码

  1. private double getFirstPart(int j) {
  2. double sum = 0;
  3. for (int i = 0; i < C; i++) {
  4. //log2(P(cj)) = ln(P(cj))/ln(2);
  5. sum += P_C(i) * (Math.log(P_C(j)) / Math.log(2));
  6. }
  7. return -sum;
  8. }

    private double getFirstPart(int j) { double sum = 0; for (int i = 0; i < C; i++) { //log2(P(cj)) = ln(P(cj))/ln(2); sum += P_C(i) * (Math.log(P_C(j)) / Math.log(2)); } return -sum; }

    Java代码

  1. private double getSecondPart(int j) {
  2. double sum = 0;
  3. //P_Tj represents P(tj) which is the probability of the documents including term j
  4. //That is , P(tj) = documents including term j / the total number of documents
  5. double P_Tj = this.P_t(j);
  6. for (int i = 0; i < C; i++) {
  7. if (TC[j][i] == 0)
  8. TC[j][i] = 1;
  9. //log2(TC) = ln(TC)/ln(2);
  10. sum += (double) TC[j][i]
  11. * ((double) Math.log(TC[j][i]) / (double) Math.log(2));
  12. }
  13. return P_Tj * sum;
  14. }
  15. private double getSecondPart(int j) { double sum = 0; //P_Tj represents P(tj) which is the probability of the documents including term j //That is , P(tj) = documents including term j / the total number of documents double P_Tj = this.P_t(j); for (int i = 0; i < C; i++) { if (TC[j][i] == 0) TC[j][i] = 1; //log2(TC) = ln(TC)/ln(2); sum += (double) TC[j][i] * ((double) Math.log(TC[j][i]) / (double) Math.log(2)); } return P_Tj * sum; }
  16. Java代码
  17. private double getThirdPart(int j) {
  18. //p(tj) = 1 - p(t_barj)
  19. double P_t_bar_j = this.P_t_bar(j);
  20. double sum = 0.0;
  21. //T_barC = number of classifications - number of docs including Term i and belonging to Classification j
  22. for (int i = 0; i < C; i++) {
  23. if (T_barC[j][i] == 0)
  24. T_barC[j][i] = 1;
  25. sum += (double) T_barC[j][i]
  26. * ((double) Math.log(T_barC[j][i]) / (double) Math.log(2));
  27. }
  28. return P_t_bar_j * sum;
  29. }
  30. private double getThirdPart(int j) { //p(tj) = 1 - p(t_barj) double P_t_bar_j = this.P_t_bar(j); double sum = 0.0; //T_barC = number of classifications - number of docs including Term i and belonging to Classification j for (int i = 0; i < C; i++) { if (T_barC[j][i] == 0) T_barC[j][i] = 1; sum += (double) T_barC[j][i] * ((double) Math.log(T_barC[j][i]) / (double) Math.log(2)); } return P_t_bar_j * sum; }
  31. 缺点 :信息增益最大的问题还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓 全局 的特征选择(指所有的类都使用相同的特征集合),而无法做 本地 的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。
  32. 4. 开方拟和检验方法 (CHI 统计 )
  33. 开方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。
  34. 缺点:待补充
  35. 5. 潜在语义分析LSA
  36. LSA思想方法最初应用于文本信息检索领域有效地解决了同义词和多义词的问题,通过识别文本中的同义词, LSA将信息检索精度提高了10%--30%
  37. 随着应用领域的不断拓展, LSI在信息过滤、信息分类/聚类、交叉语言检索、信息理解、判断和预测等众多领域中得到了广泛的应用。(语义,降维)[4]
  38. 计算奇异值矩阵,可以通过maltab svd 命令来解。
  39. 缺点:待补充

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读

    相关 特征选择方法最全总结

    上个月扫读完《阿里云天池大赛赛题解析》\[1\]后,看到书中对特征选择的讲述,于是便打算借此机会,系统梳理下各种特征选择方法。如有不足,还望指正。 ![992855fcfdb

    相关 文本特征词提取算法

    在文本分类中,需要先对文本分词,原始的文本中可能由几十万个中文词条组成,维度非常高。另外,为了提高文本分类的准确性和效率,一般先剔除决策意义不大的词语,这就是特征词提取的目的。

    相关 特征选择_过滤特征选择

    一:方差选择法: 使用方差作为特征评分标准,如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大 因此在构造特征过程中去掉方差小于阈值特征 f