首页 理论教育 Python文本分析:奇异值分解原理

Python文本分析:奇异值分解原理

时间:2023-11-06 理论教育 版权反馈
【摘要】:图6-1奇异值分解其中:A:是m×n的矩阵。根据上述的奇异值分解分析,由于在n个奇异值中有若干个值为0,因此在实际的数据分析中可以选择这些奇异值中较大的若干个。如果奇异值的个数为r,则奇异值分解可用示意图6-2表示。令A∈Rm×n的奇异值分解由给出,其中r=rank。因此,把奇异值分解应用到中文文本分类系统中,需利用奇异值分解方法进行截断,用一个低秩的矩阵Ak去逼近原始带噪声或扰动的矩阵A,从而进行特征抽取。

Python文本分析:奇异值分解原理

奇异值分解(singular value decomposition,SVD)是现代数值分析中最基本和最主要的工具之一,已经在统计分析物理信息科学与工程等领域广泛使用,能够有效实现高维数据的特征抽取,达到数据降维的目的。

奇异值分解实际上是把一个矩阵分解成三个相关矩阵,令A∈Rm×n(或Cm×n),则存在m阶正交(或酉)矩阵U∈Rm×m(或Cm×m)和n阶正交(或酉)矩阵V∈Rn×n(或Cn×n),使得

式中的,且Σ1=diag(σ1,σ2,…,σr)。其中,对角线元素按照顺序排列如下:

σ1≥σ2≥…≥σr≥0,r=rank(A)

其中,数值σ1,σ2,…,σr连同σr+1r+2=…=σn=0一起称作矩阵A的奇异值。从这个公式可以看出,后面有很多的值都是0或者接近0。奇异值分解示意图如图6-1所示。

图6-1 奇异值分解

其中:

A:是m×n的矩阵。

U:是m×m的矩阵。

Σ:是一个m×n的矩阵。

VT:是V的转置矩阵,是一个n×n的矩阵。

根据上述的奇异值分解分析,由于在n个奇异值中有若干个值为0,因此在实际的数据分析中可以选择这些奇异值中较大的若干个。如果奇异值的个数为r,则奇异值分解可用示意图6-2表示。

图6-2 特征抽取

根据上述描述,获取的矩阵U和V是从不同角度压缩特征维度,即关键特征抽取,主要表现在以下两个方面:

(1)若n×n矩阵V为正交(或酉)矩阵,用V右乘表达式(1),得AV=UΣ,其列向量形式为(www.xing528.com)

因此,V的列向量vi称为矩阵A的右奇异向量,V称为A的右奇异向量矩阵。这就相当将m×n的矩阵A压缩到m×r的矩阵U,也就是对列进行压缩,即按照列方向进行特征抽取。

(2)对于m×m矩阵U为正交(或酉)矩阵,用UT左乘表达式(1),得UTA=ΣVT,其列向量形式为

因此,U的列向量ui称为矩阵A的左奇异向量,U称为A的左奇异向量矩阵。这就相当于将m×n的矩阵A压缩到r×n的矩阵V,也就是对行进行压缩,即从行方向进行特征抽取。

在Σ中的奇异值是按照大小排列,且奇异值减小的非常快,因此可以选择前面比较大的k个奇异值来描述原始矩阵。令A∈Rm×n的奇异值分解由给出,其中r=rank(A)。若k<r,并且,也即

则逼近质量可分别用谱范数和Frobenius范数度量,其计算方法分别为:

式中,q=min{m ,n}。

因此,把奇异值分解应用到中文文本分类系统中,需利用奇异值分解方法进行截断,用一个低秩的矩阵Ak去逼近原始带噪声或扰动的矩阵A,从而进行特征抽取。

如果对于文本数据集采用奇异值分解实现文本向量特征抽取,将文本数据集表示成m×n的矩阵A,其中每行表示一个文本,每列表示一个特征,则特征抽取的主要过程描述如下:

(1)对于含有m个样本的集合S,采用中文分词系统实现各样本分词,并根据停用词表去除样本中的停用词。

(2)建立文本-特征矩阵。

(3)采用TF-IDF特征权值计算方法,建立向量空间模型(VSM),实现文档向量化,构造文档特征向量矩阵Am×n

(4)采用矩阵SVD算法,对建立的Am×n矩阵进行分解,实现特征空间转换和降维,即新的特征向量空间。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈