趋近智
TF-IDF和N-gram等方法能将文本转换为数值特征向量。然而,这通常会生成维度极高的数据。如果词汇表包含数万或数十万个独立词项,TF-IDF矩阵将拥有同样多的列。处理这类高维稀疏矩阵(大多由零填充的矩阵)会带来一些难题:
降维方法旨在将这些高维特征向量转换为低维表示,同时尽量保留有意义的信息。这能缩短训练时间、减少内存占用,有时通过去除噪声甚至能改进模型表现。我们来看看为此目的使用的两种常见线性代数方法:主成分分析(PCA)和奇异值分解(SVD)。
PCA是一种广泛应用的降维方法。它的核心思路是找出数据中方差最大的方向(主成分)。然后,它将原始数据投影到一个由选定数量的主成分定义的新、低维子空间上。
PCA执行以下步骤:
尽管PCA功能强大,但直接将其应用于稀疏的TF-IDF矩阵可能会有问题。初步的标准化步骤(中心化)需要从每个数据点中减去每个特征(列)的均值。由于TF-IDF矩阵通常非常稀疏(大多为零),减去非零均值会使矩阵变得密集,可能导致内存问题,从而抵消从稀疏表示开始的优势。
因此,尽管PCA是一种基本的降维方法,但在直接处理TF-IDF等稀疏文本特征时,通常更倾向于选择SVD的变体。
奇异值分解是另一种强大的矩阵分解方法,在降维方面有应用。SVD将原始矩阵 X (例如,我们大小为 m×n 的TF-IDF矩阵,m 是文档数量,n 是词项数量)分解为三个独立的矩阵:
X=UΣVT此处:
为了降维,我们使用一种变体,称为截断SVD。截断SVD不是计算完全分解,而是只计算前 k 个奇异值以及 U 和 V 中对应的向量。
X≈UkΣkVkT这里,Uk 是 m×k 的,Σk 是 k×k 的(包含前 k 个奇异值),VkT 是 k×n 的。原始数据的转换后的低维表示通常取为 Xk=UkΣk(或有时仅为 Uk),这会生成一个 m×k 的矩阵。
截断SVD用于降维的概览。原始矩阵被分解,然后只保留与最大奇异值对应的最主要的 k 个分量,以形成低维表示。
截断SVD的一个重要优点,尤其是scikit-learn等库中的实现(TruncatedSVD),是它能够直接处理稀疏矩阵,而不需要PCA所需的那个有问题的中心化步骤。这使得它非常适合NLP中常见的大型TF-IDF或计数矩阵。
将SVD应用于词项-文档矩阵也称为**潜在语义分析(LSA)**或潜在语义索引(LSI)。LSA旨在找出文本数据中潜在的语义结构(“主题”)。生成的维度(k)表示这些潜在主题,值表示每个文档与每个主题的关联强度。
一个实际问题是如何选择要保留的维度数量,k。通常需要权衡:
常见的方法包括:
尽管降维是有益的,但请记住以下几点:
总之,降维方法,例如PCA以及在文本处理中更常见的截断SVD,是管理TF-IDF和N-gram等文本特征表示中固有的高维度问题的宝贵工具。通过将数据投影到低维空间,它们可以使后续的模型训练更有效,并通过关注最显著的信息来潜在地提高表现。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造