1.3.词袋到TF-IDF
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
理想情况下,需要那种能强调出有意义的单词表示法。
TF-IDF是词袋基础上的一种简单扩展,它表示:词频-逆文档频率——它不是计算的单词在文档中的原本计数,而是归一化后的计数。
bow(w,d):单词在文档中出现的次数
tf-idf(w,d):bow(w,d) * N / 单词出现在其中的文档数量
是数据集中文档总数,右边的分数就是逆文档频率IDF——如果一个单词出现在很多文档中,那么IDF接近于1。实际处理过程中也可以使用对数变换:
tf-idf(w,d):bow(w,d) * log( N / 单词出现在其中的文档数量 )
有时候会在分母+1
,参考《》。——TF-IDF突出了罕见词,并有效地忽略了常见词。
TF-IDF通过乘以一个常数,对单词计数特征进行了转换,因此它算是一种特征缩放方法。
示例说明
如果两类商家的点评数量相差很大,就称为类别不平衡数据集——根据这种样本建模会将大部分努力用于拟合优势类别。
词袋归一化
TF-IDF
使用逻辑回归时,当特征数量大于数据点数量时,找出最佳模型这个问题就变得不确定了。所以在训练过程中需加入限制条件——正规化。正规化参数是一种超参数,不能在模型训练时自动学习,所以依赖超参数调参。一种基本的超参数调优方法为网格搜索:查找最优超参数设置。
比较模型、特征时,必须对超参数进行调优,分类器性能对超参数设置的敏感度依赖于具体的模型和训练数据的分布。逻辑回归虽然对超参数设置不敏感,但找到使用正确的超参数范围依旧有必要。最终计算的结果如:
词袋
0.1
10
tf-idf
0.001
总结:结果无法证明特征缩放后的效果比普通词袋模型好,它们效果几乎相似。
逻辑回归模型是通过一个称为数据矩阵的中间对象来使用特征的,数据矩阵中包含数据点,它们是由固定长度的扁平向量表示。词袋模型中,数据矩阵又可以称为文档-词矩阵,要生成这种矩阵,需要得到文档向量,把它们放平,再彼此叠加起来即可。示例(5个文档7个词):
it is a puppy
1
1
1
0
0
1
0
it is a kitten
1
1
0
0
0
1
0
it is a cat
1
1
0
1
0
1
0
that is a dog and this is a pen
0
2
0
0
1
2
1
it is a matrix
1
1
0
0
0
1
0
训练一个线性分类器就是找到特征的最优线性组合,解空间可以由数据矩阵的列空间和零空间表示,分类器的最终质量直接依赖列空间和零空间。
巨大的列空间意味着特征之间几乎线性不相关,通常是好事。
零空间中包含不能表示为现有数据的线性组合的“奇异”数据点。
巨大的零空间会非常麻烦。
通过词袋表示,和特征数量相比,列空间相对较小——可能有些单词在同一文档中出现了大致相同的次数,这会导致相应的列向量几乎是线性相关的,进而导致列空间不满秩(秩亏)。秩亏的行空间和列空间会使模型对问题用力过猛——线性模型会为数据集中每个特征都配备一个权重参数。满秩的行空间和列空间,模型会生成输出空间中的任何目标向量,但若秩亏,模型会具有不必要的自由度,这样导致更加难以计算最终解。
倘若该向量与其他列线性无关,那么就有效地缩减了列空间并扩展了零空间。
倘若向量与目标输出不相关,那么就有效消除了噪音信号,这样就非常好了。
TF-IDF会生成一个接近于0的缩放因子,单词出现在训练集中的大量文档中时,会出现这种情况,这种单词很可能和目标向量没有很强的相关性。除去这种单词,可以使解决方案更关注列空间中的其他方向,找到更好的解。
实际特征缩放真正用武之地是加快解的收敛速度,它能使数据矩阵具有明显更少的条件数。
归一化
测试集上特征缩放:它要求我们知道一些实际中我们很可能不知道的特征统计量,比如均值、方差、文档频率、范数,等等。为了计算TF-IDF表示,必须基于训练数据计算逆文档频率,并使用这些统计量缩放训练数据也缩放测试数据。
逻辑回归(简单分类器)比较适合充当首次试验的分类器,它对输入特征进行加权组合,然后传递给一个S形函数,它可以将任意实数映射为0和1之间的一个值,即将实数转换为0和1之间的一个值。它参数表示中点(0.5)附近的增长斜率,如果输出大于0.5,就预测一个正分类,否则就预测一个负分类。
正规化
归一化
示例中可以知道,所有矩阵中多数元素都是0,它是稀疏矩阵。特征缩放实质是数据矩阵上的列操作——TF-IDF和都是对整列(如,一个n元词特征)乘以一个常数,这两种归一化都是列操作。
列缩放操作对数据矩阵的列空间和零空间影响并不大,但对TF-IDF和归一化情况会有所不同。根据示例,数据矩阵零空间可能很大:1)首先,很多数据集中的数据点彼此非常相似,这意味着和数据集中数据点的数量比较,有效行空间非常小。2)其次,特征数量可以比数据点数量多得多——词袋表示法尤其可能创建出巨大的特征空间。3)最后,NLP操作中,特征空间有可能会被无限放大,所以添加样本量(更多文档)不一定会降低特征和数据比例,也不一定会压缩零空间。
线性组合:,进行特征缩放时会乘以一个常数如,如果使用代替,还可以生成原来的线性组合。——所以特征缩放不会改变列空间的秩,也不会影响零空间的秩。原本可以对权重向量中相应元素进行逆缩放来抵消缩放后的特征列,但若相乘标量为0
,那么就无法恢复初始线性组合
TF-IDF和的关键区别:
归一化永远不会计算出一个值为0的范数,除非向量中都是0。如果向量接近于0,那么它的范数也接近于0,除以一个小范数可以更加突出这个向量并让它增长。