利用相关性进行SVD计算

3 篇文章 0 订阅
订阅专栏

利用相关性进行SVD计算

首先在说SVD之前回忆一波特征值分解:

特征值分解

特征值分解简单来说就是把矩阵 A \mathbf{A} A分解成特征向量矩阵 × \times ×特征值形成的对角矩阵 × \times ×特征向量矩阵的逆的形式,即
A = V Λ V − 1 (1) \tag{1} \mathbf{A = V\Lambda V^{-1}} A=VΛV1(1)
其中 V \mathbf{V} V A \mathbf{A} A 的特征向量

上式还可以写成这样,即原矩阵 × \times × 特征向量矩阵 = 特征向量矩阵 × \times × 特征值矩阵,特征值分解只能应用于方阵
A V = V Λ (2) \tag{2} \mathbf{A V = V\Lambda } AV=VΛ(2)

SVD分解

关于一个向量 X \mathbf{X} X ,首先将其看成是列向量的矩阵,且假设 X ∈ R n × m , ( n > > m ) \mathbf{X}\in\mathbb{R}^{n \times m},(n>> m) XRn×mn>>m
X = [ ∣ ∣ ∣ x 1 x 2 ⋯ x m ∣ ∣ ∣ ] (3) \tag{3} \mathbf{X}=\left[\begin{array}{llll} \mid & \mid & & \mid\\ x_1 & x_{2} & \cdots & x_{m} \\ \mid & \mid & & \mid \end{array}\right] X=x1x2xm(3)
X X ⊤ \mathbf{XX^{\top}} XX 是一个 m × m m\times m m×m的矩阵

而这个矩阵就是矩阵中 x 1 , x 2 ⋯ x m x_1,x_2\cdots x_m x1,x2xm 相互之间的相关性
X X ⊤ = [ x 1 ⊤ x 1 x 1 ⊤ x 2 ⋯ x 1 ⊤ x m x 2 ⊤ x 1 x 2 ⊤ x 2 ⋯ x 2 ⊤ x m ⋮ ⋮ ⋱ ⋮ x m ⊤ x 1 x m ⊤ x 2 − x m ⊤ x m ] (4) \tag{4} \mathbf{XX^{\top}}=\left[\begin{array}{cccc} x_{1}^{\top} x_{1} & x_{1}^{\top} x_{2} & \cdots & x_{1}^{\top} x_{m} \\ x_{2}^{\top} x_{1} & x_{2}^{\top} x_{2} & \cdots & x_{2}^{\top} x_{m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m}^{\top} x_{1} & x_{m}^{\top} x_{2} & - & x_{m}^{\top} x_{m} \end{array}\right] XX=x1x1x2x1xmx1x1x2x2x2xmx2x1xmx2xmxmxm(4)

解释完 X X ⊤ \mathbf{XX^{\top}} XX的含义就可以看SVD分解了

首先SVD的分解形式为:
X = U Σ V ⊤ (5) \tag{5} \mathbf{{X}={U}{\Sigma} V^{\top}} X=UΣV(5)
其中 U \mathbf{U} U 称之为 X \mathbf{X} X的左奇异向量矩阵, V \mathbf{V} V称之为 X \mathbf{X} X的奇异向量矩阵, U \mathbf{U} U V \mathbf{V} V 都是共轭转置矩阵,即其本身乘以其共轭转置得到单位矩阵
U U ⋆ = I V V ⋆ = I (6) \tag{6} \mathbf{U U^\star = I} \\ \mathbf{V V^\star = I} \\ UU=IVV=I(6)

( U ⋆ = U ⊤ 、 V ⋆ = V ⊤ ) \mathbf{(U ^\star =U^\top、V^{\star} = V^\top)} (U=UV=V) 如果 U , V \mathbf{U,V} U,V 不是复数矩阵。

Σ \mathbf{\Sigma} Σ 称之为 X \mathbf{X} X的奇异值矩阵,其中 Σ \mathbf{\Sigma} Σ 是对角矩阵,且每个奇异值的重要性按行顺序排列。

SVD分解可以是非方阵,也就是说任何矩阵都有其奇异值矩阵、左/右奇异向量矩阵,这和特征值分解是不同的。

SVD分解和特征值分解的关系

X \mathbf{X} X X ⊤ \mathbf{X^{\top}} X进行简化SVD分解可以分别得到

注:所谓简化SVD分解matlab的一个函数svd(X,'economy'),其得到的是近似最优,以 $ \mathbf{U}$ 的维度确定 $ \Sigma$ 的维度,下面将矩阵加帽以表示

X ˉ = U ^ Σ ^ V ⊤ X ˉ ⊤ = V Σ ^ U ^ ⊤ (7) \tag{7} \begin{array}{l} \mathbf{\bar{X}=\hat{U} \hat{\Sigma} V^{\top}}\\ \mathbf{\bar{X}^{\top}=V \hat{\Sigma} \hat{U}^{\top}} \end{array} Xˉ=U^Σ^VXˉ=VΣ^U^(7)
X ⊤ X \mathbf{X^{\top}X} XX 可以写成:
X ⊤ X = V Σ ^ U ^ ⊤ U ^ Σ ^ V ⊤ = V ^ Σ ^ 2 V ^ ⊤ ⟹ X ⊤ X V ^ = V ^ Σ ^ 2 (8) \tag{8} \mathbf{X^{\top}X}=\mathbf{V \hat{\Sigma} \hat{U}^{\top}\hat{U} \hat{\Sigma} V^{\top} =\hat{V} \hat{\Sigma}^{2}\hat{V}^{\top}}\\\\ \Longrightarrow\qquad \mathbf{X^{\top}X\hat{V}}=\mathbf{ \hat{V}\hat{\Sigma}^{2}} XX=VΣ^U^U^Σ^V=V^Σ^2V^XXV^=V^Σ^2(8)

X X ⊤ \mathbf{XX^{\top}} XX 可以写成:
X X ⊤ = U ^ Σ ^ V ⊤ V Σ ^ U ^ ⊤ = U ^ Σ ^ 2 U ^ ⊤ ⟹ X X ⊤ U ^ = U ^ Σ ^ 2 (9) \tag{9} \mathbf{XX^{\top}}=\mathbf{\hat{U} \hat{\Sigma} V^{\top}V \hat{\Sigma} \hat{U}^{\top} =\hat{U} \hat{\Sigma}^{2}\hat{U}^{\top}}\\\\ \Longrightarrow\qquad \mathbf{XX^{\top}\hat{U}}=\mathbf{\hat{U} \hat{\Sigma}^{2}} XX=U^Σ^VVΣ^U^=U^Σ^2U^XXU^=U^Σ^2(9)

上面两个式子,结合公式 ( 2 ) (2) (2) 可以推理得到的是 V ^ \mathbf{\hat{V}} V^ U ^ \mathbf{\hat{U}} U^ 都是上述对应矩阵 X ⊤ X \mathbf{X^{\top}X} XX X X ⊤ \mathbf{XX^{\top}} XX特征向量矩阵,而 Σ 2 \mathbf{\Sigma^2} Σ2特征值。也就是说,一个矩阵和其自身转置相乘得到其协方差阵,然后进行协方差特征值分解, X ⊤ X \mathbf{X^{\top}X} XX 得到的是 X \mathbf{X} X的右特征值 V \mathbf{V} V X X ⊤ \mathbf{XX^{\top}} XX得到的是左特征值 U \mathbf{U} U,这样便实现了使用特征值分解得到奇异分解的结果了。

但是需要注意的是在公式 ( 9 ) (9) (9) 中得出来的的矩阵 X X ⊤ \mathbf{XX^{\top}} XX 一般来说都非常巨大,是 n × n n \times n n×n维矩阵,所以应该尽量避免(一般情况下数据集行大于列 n > > m n>>m n>>m,尤其是使用了Matlab命令svd(A,'economy')的时候)。

使用snapshot的方法进行左singular vector的计算:

当使用 ( 8 ) (8) (8) 的时候,我们可以获取 V ^ 、 Σ ^ \mathbf{ \hat{V}、\hat{\Sigma}} V^Σ^ 的值,这个时候我们可以求出 U ^ \mathbf{\hat{U}} U^的值为:
U ^ = X ^ V Σ ^ − 1 (10) \tag{10} \mathbf{\hat{U}=\hat{X} V\hat{\Sigma}^{-1}} U^=X^VΣ^1(10)
这个方法就是snpshot,因为矩阵 V \mathbf{V} V就相当于 X \mathbf{X} X在时间序列上的变换,每一列( V ⊤ \mathbf{V^{\top}} V的每一行)相当于一个时间点所有的数据的融合。

Underdetermined system 和overdetermined system

两种系统,用

A x = b (11) \tag{11} Ax = b Ax=b(11)
表示的话,大概是这个样子:

对于第一种不确定系统,其系统矩阵的形状如下:

image-20210512152743238

这种情况下,因为 x x x的数量众多, b b b无法提供足够的数量去填充 x x x,因此系统有无数个解,通俗用一个公式解释就是 3 x 1 + 4 x 2 = 0 3x_ 1+4x_ 2=0 3x1+4x2=0 ,对于 x 1 、 x 2 x_ 1、x_ 2 x1x2有无穷多个解满足此公式,因为 b = 0 , b b=0,b b=0,b的数量只有一个而变量有两个。

另一种情况就是 over determined system,这种情况就是变量过少,结果过多,导致没有一个准确的解。

image-20210512153523138

基于SVD的PCA 分析

PCA 算法

话不多说,先上如何计算PCA。

假设 X \mathbf{X} X是一个矮胖矩阵:

  1. 首先对一个矩阵 X \mathbf{X} X所有行进行的平均运算,得到一个很胖的单行向量, 1 ∗ m 1*m 1m 维度的矢量 x ˉ \bar{\mathbf{x}} xˉ

然后进行构建矩阵,用一个单位列向量构建:
X ‾ = [ 1 ⋮ 1 ] x ‾ (12) \tag{12} \overline{\mathbf{X}}=\left[\begin{array}{c} 1 \\ \vdots \\ 1 \end{array}\right] \overline{\mathbf{x}} X=11x(12)
2. 然后用 X X X减去 X ˉ \bar{X} Xˉ得到去掉均值的矩阵 B \mathbf{B} B

B = X − X ‾ (13) \tag{13} \mathbf{B}=\mathbf{X}-\overline{\mathbf{X}} B=XX(13)

  1. 计算 B \mathbf{B} B的协方差矩阵 C \mathbf{C} C
    C = 1 n − 1 B ∗ B (14) \tag{14} \mathbf{C}=\frac{1}{n-1} \mathbf{B}^{*} \mathbf{B} C=n11BB(14)

  2. 计算协方差矩阵 C \mathbf{C} C的特征值和特征向量:

v 1 ⊤ B ⊤ B v 1 (15) \tag{15} \mathbf{v_{1}^{\top} B^{\top} B v_{1}} v1BBv1(15)

其中 v 1 \mathbf{v_{1}} v1 C \mathbf{C} C第一个特征向量 V \mathbf{V} V C \mathbf{C} C特征向量矩阵

  1. 可以通过 特征值分解(eigen-decomposition)进行解析:
    C V = V D (16) \tag{16} \mathbf{C V} =\mathbf{V D} CV=VD(16)
    C = V D V − 1 (17) \tag{17} \mathbf{C } =\mathbf{V D V^{-1}} C=VDV1(17)
    其中 D \mathbf{D} D是特征值, V \mathbf{V} V是特征向量

  2. 最后使用 B \mathbf{B} B V \mathbf{V} V 的乘积求出principal components
    T = B V (18) \tag{18} \mathbf{T}=\mathbf{B V} T=BV(18)
    其中 V \mathbf{V} V 称之为loadings

    在此结果上,因为
    B = U Σ V ⊤ (19) \tag{19} \mathbf{B=U \Sigma V^{\top}} B=UΣV(19)
    所以的出来principal components可以是:
    T = U Σ (20) \tag{20} \mathbf{T}=\mathbf{U \Sigma} T=UΣ(20)
    其中 Σ \mathbf{\Sigma} Σ B \mathbf{B} B的奇异值, U \mathbf{U} U是左奇异向量。

知识痛点补充:

  1. 为什么上述的协方差计算使用 1 n − 1 \frac{1}{n-1} n11而不是 1 n \frac{1}{n} n1作为系数?

    首先明确协方差和方差的区别,数据的方差反映的是一个数据集自身的变化程度,也就是这个数据集的离散度,是对一个随机变量的测量值。

    协方差则是描述对于不同的相关的随机变量之间的变化关系,比如一个人的身高和体重两个变量的关系是正相关的,那么这两个变量的协方差就描述了身高和体重的变化之间的相互影响,就是多少身高带来多少体重、或者是多少体重的变化带来多少身高的变化。

    因为在我们使用的任何数据集中,基本上都是更大一部分数据集的子集。在这部分数据集中,我们求得的协方差并不是能反映整体数据集的自然误差状态。换句话说,如果我们用 1 n \frac{1}{n} n1 做系数,就相当于我们用了大数据集中的一部分数据的协方差去反映整个大数据集的测量误差,所以用 1 n − 1 \frac{1}{n-1} n11 而非 1 n \frac{1}{n} n1 来弥补这种不合理性。比如我们在一个班里抽取学生的身高体重样本来反映整个班级的身高体重水平,班里有100个学生,我们现在取了20个学生(因为我们没有时间把100个学生的身高体重都测量一遍),使用他们的身高体重求协方差,然后用这个协方差去衡量整个班级的身高体重水平,这个时候我们的数据集只是这个大数据集的一小部分,所以我们的衡量是有偏差的,因此我们用 1 n − 1 \frac{1}{n-1} n11 而不是 1 n \frac{1}{n} n1 来抵消这种偏差。

PCA的用处

Eigenface

PCA有很多作用,比如在人脸识别领域,拾取人脸得关键特征。最著名的一个例子是所谓的eigenface。

顾名思义,eigenface就是脸的eigenvalue,即脸的特征(其实任意图片都有特征,但是使用一类图片比如人脸图片较为好比较)。

使用PCA提取人脸图片的特征,并且将其重新组成图片,过程如下。

  1. 获取 n n n张同一个人不同的人脸照片,比如192x168像素的照片,用灰度表示(比较简单,这样每一个pixel就只有一个值而不是3个值了)。
  2. 将每一张照片变成列向量,每一列代表一个照片,构成一个矩阵 X X X,即矩阵 X X X的维度是 32256 × n 32256 \times n 32256×n
  3. 计算矩阵 X X X的每一行的平均值,得到一个 32256 × 1 32256\times 1 32256×1 的列向量,然后将这个列向量扩充成矩阵,变成 32256 × n 32256\times n 32256×n的矩阵,每一列的值都相同,这个矩阵称之为均值矩阵 X ˉ \bar{X} Xˉ
  4. 通过公式 ( 13 ) (13) (13)算出去平均值后的矩阵 B B B
  5. B B B进行SVD分解得到 U , S , V U,S,V U,S,V 其中,矩阵 U U U就是eigenface矩阵,每一列就是每张照片的eigenface,每一张都记录了不同方面的信息

以上五步就可以的出来eigenface,下面发一个代码,以及本人靓照:

image-20210515230156788

使用eigenfaces可以拟合出来原图,选取秩数的不同会得到不同的还原度,而且即便用于测试的图片非常不一样,下图我用了一张类似的照片做测试。

注意上图最后一张,也许是使用了matlabsvd(,'econ')命令导致的,最后一张的图像总会得到类似于马赛克的效果。

image-20210515230330673

图片原图:

image-20210515231724032

我用于测试的图片:

代码:

clear all, close all, clc

file_path = 'D:\OneDrive\西安交大\实验\MATLAB 练习\Data-driven Science\Practice\svd\myface\eyes\';
h = 192; % 高
w = 144; % 宽
n = length(dir(strcat(file_path,'*.jpg'))); %图片数量
m = h*w; % 单列维度
I = zeros(m,n);
for i=1:n-1
    img = strcat(num2str(i),'.jpg');
    gray_img = rgb2gray(imread(strcat(file_path,img)));
    I(:,i) = reshape(gray_img,m,1);    %将所有的像素变成列向量
%     imagesc(reshape(I(:,i),h,w)); %展示图片
%     pause(0.1)
end
%% 搞出来平均脸然后去平均后进行SVD
avg_face = mean(I,2);
% imagesc(reshape(avg_face,h,w)), colormap gray; %平均脸
%画出所有的eigenface,越往后占的重要程度越低,到最后一张变成一坨糊糊
B = I-avg_face*ones(1,size(I,2));
[U,S,V] = svd(B,'econ');
for i = 1:n
    imagesc(reshape(U(:,i),h,w));
    pause(0.1);
end

%% 画出不同r的eigenface,用最后一张照片做测试
test_img = reshape(rgb2gray(im2double(imread(strcat(file_path,strcat(num2str(n),'.jpg'))))),m,1); 
truncated = test_img - avg_face;

% for r = 1: 1 :n
%     new_img = avg_face + (U(:,1:r)*(U(:,1:r)'*truncated));
%     imagesc(reshape(new_img,h,w)),colormap gray;
%     pause(0.1)
% end

%% 将所有图画到一张上去,一定注意不要太多张图
f=figure;
row = 3; %3 行排列
col = floor(n/row); 
zoom = 2;% 缩放最后一张图的大小
set(gcf,'Position',[500 500 col*w*zoom row*h*zoom])
movegui(f,'center');

for r = 1:n
    new_img = avg_face + (U(:,1:r)*(U(:,1:r)'*truncated));
    subplot(row,col,r),imagesc(reshape(new_img,h,w));colormap gray, axis off;
    s = sprintf('%s%d','秩数为r =',r);
    title(s);
end
sgtitle('累计r的效果,累计度越高越清晰,因为叠加的特征多了');

eigenfaces = figure();
set(gcf,'Position',[200 500 col*w*zoom row*h*zoom])
for i=1:n
    subplot(row,col,i),imagesc(reshape(U(:,i),h,w));colormap gray, axis off;
    s = sprintf('%s%d%s','第',i,'张eigenface');
    title(s);
end
sgtitle('eigenfaces,每一个都记录了不同方面的信息');

帅的人都很细心地发现了上面的图片都只动了我的慧眼,其他部分保持了不变,这是因为SVD对于图片处理有天然的缺陷。即SVD 对图像进行分析的时候受到图像的排放方式影响很大。

image-20210515232054145

图片来源于: <Data-Driven Science and Engineering Machine Learning Dynamics Systems and Control> \text{<Data-Driven Science and Engineering Machine Learning Dynamics Systems and Control>} <Data-Driven Science and Engineering Machine Learning Dynamics Systems and Control>

*SVD受到图像内主体的排列方位影响很大,因为这直接导致了整个图像矩阵奇异值改变。*而奇异值分解是对图像进行操作的主要办法,通过获取不同程度的秩的图像,可以得到不同还原度的原图像。

image-20210510212308716

如何选取最优秩r作为分界线实现图片压缩

对于使用SVD方法对图像进行压缩,其实实质上是我们不需要将所有的奇异值都给弄出来用作压缩图片使用,因为奇异值和奇异向量是按照其重要程度排序的,而且其奇异值矩阵中,前面一小部分奇异值的重要性是是超过后面大部分奇异值重要性之和的。因此,在压缩图像的时候,我们只需要前面 r r r 个奇异值和奇异向量就可以实现图像的压缩。

image-20210515185449092

硬分界线r

我们设法搞一个分界线,这个分界线以使用奇异值矩阵秩的数量 r r r为边界,**使其能够保留90%以上信息的前提下实现使用最小秩的数量,**也就是使 r r r最小。这个分界线 r r r就是下图中如何划分 U ^ r e m \hat{\mathbf{U}}_ {rem} U^rem U ~ \tilde{\mathbf{U}} U~的关键。

有一种方法是最优硬分界线,选取秩r大于该分界线的部分最为Truncated SVD,往往最有效率。

fullsvd2truncatedsvd

那么最优硬分界线划分假设被分解的矩阵 X \mathbf{X} X可以被分成两个部分:
X = X true + γ X noise  (21) \tag{21} \mathbf{X}=\mathbf{X}_ {\text{true}} + \gamma \mathbf{X}_ {\text {noise }} X=Xtrue+γXnoise (21)
其中 X noise \mathbf{X}_ \text{noise} Xnoise 是高斯噪音, γ \gamma γ是噪音的magnitude。

  1. 如果 X ∈ R n × n \mathbf{X} \in \mathbb{R}^{n\times n} XRn×n,即 X \mathbf{X} X是个方阵,而且$\gamma $已知则硬分界线为:
    τ = ( 4 / 3 ) n γ (22) \tag{22} \tau=(4 / \sqrt{3}) \sqrt{n} \gamma τ=(4/3 )n γ(22)

  2. 如果 X ∈ R n × m \mathbf{X} \in \mathbb{R}^{n\times m} XRn×m,且 m < < n m<<n m<<n X \mathbf{X} X是个非常细长的矩阵,则 4 / 3 4/\sqrt{3} 4/3 替换成 β = m / n \beta=m / n β=m/n
    τ = λ ( β ) n γ (23) \tag{23} \tau=\lambda(\beta) \sqrt{n} \gamma τ=λ(β)n γ(23)

    λ ( β ) = ( 2 ( β + 1 ) + 8 β ( β + 1 ) + ( β 2 + 14 β + 1 ) 1 / 2 ) 1 / 2 (24) \tag{24} \lambda(\beta)=\left(2(\beta+1)+\frac{8 \beta}{(\beta+1)+\left(\beta^{2}+14 \beta+1\right)^{1 / 2}}\right)^{1 / 2} λ(β)=(2(β+1)+(β+1)+(β2+14β+1)1/28β)1/2(24)

  3. 如果 X ∈ R n × m \mathbf{X} \in \mathbb{R}^{n\times m} XRn×m,而且$\gamma $未知,则最优硬分界线为:
    τ = ω ( β ) σ m e d (25) \tag{25} \tau=\omega(\beta) \sigma_{\mathrm{med}} τ=ω(β)σmed(25)

    ω ( β ) = λ ( β ) / μ β (26) \tag{26} \omega(\beta)=\lambda(\beta) / \mu_{\beta} ω(β)=λ(β)/μβ(26)

    其中 σ m e d \sigma_{\mathrm{med}} σmed是奇异值的中位数, μ β \mu_{\beta} μβ 由下式解出:

∫ ( 1 − β ) 2 μ β [ ( ( 1 + β ) 2 − t ) ( t − ( 1 − β ) 2 ) ] 1 / 2 2 π t d t = 1 2 (27) \tag{27} \int_{(1-\beta)^{2}}^{\mu_{\beta}} \frac{\left[\left((1+\sqrt{\beta})^{2}-t\right)\left(t-(1-\sqrt{\beta})^{2}\right)\right]^{1 / 2}}{2 \pi t} d t=\frac{1}{2} (1β)2μβ2πt[((1+β )2t)(t(1β )2)]1/2dt=21(27)

例子:

clear all, close all, clc
%% 造出来一个真实X
t = (-3:.01:3)';
Utrue = [cos(17*t).*exp(-t.^2) sin(11*t)];
Strue = [2 0; 0 .5];
Vtrue = [sin(5*t).*exp(-t.^2) cos(13*t)];
X = Utrue*Strue*Vtrue';
figure, imshow(X);
%% 加噪音
sigma = 1;
Xnoisy = X+sigma*randn(size(X));
figure, imshow(Xnoisy);
%% 使用硬分界线产生一个clean matrix
[U,S,V] = svd(Xnoisy);
N = size(Xnoisy,1);
cutoff = (4/sqrt(3))*sqrt(N)*sigma; % Hard threshold
r = max(find(diag(S)>cutoff)); % Keep modes w/ sig > cutoff
Xclean = U(:,1:r)*S(1:r,1:r)*V(:,1:r)';
figure, imshow(Xclean)
%% 找到90%累计能量
cdS = cumsum(diag(S))./sum(diag(S));  % Cumulative energy
r90 = min(find(cdS>0.90));  % Find r to capture 90% energy
X90 = U(:,1:r90)*S(1:r90,1:r90)*V(:,1:r90)';
figure, imshow(X90)

%% plot singular values 画图
semilogy(diag(S),'-ok','LineWidth',1.5), hold on, grid on
semilogy(diag(S(1:r,1:r)),'or','LineWidth',1.5)
plot([-20 N+20],[cutoff cutoff],'r--','LineWidth',2)
axis([-10 610 .003 300])
rectangle('Position',[-5,20,100,200],'LineWidth',2,'LineStyle','--')
  
figure
semilogy(diag(S),'-ok','LineWidth',1.5)
hold on, grid on
semilogy(diag(S(1:r,1:r)),'or','LineWidth',1.5)
plot([-20 N+20],[cutoff cutoff],'r--','LineWidth',2)
axis([-5 100 20 200])
  
figure
plot(cdS,'-ok','LineWidth',1.5)
hold on, grid on
plot(cdS(1:r90),'ob','LineWidth',1.5)
plot(cdS(1:r),'or','LineWidth',1.5)
set(gca,'XTick',[0 300 r90 600],'YTick',[0 .5 0.9 1.0])
xlim([-10 610])
plot([r90 r90 -10],[0 0.9 0.9],'b--','LineWidth',1.5)

image-20210510211312407

image-20210510211636298

算法源码-相关性分析:典型相关性分析代码MCCA.rar
06-06
**典型相关性分析(Canonical Correlation Analysis,简称CCA...总的来说,`cca.m`文件提供的MCCA算法实现可以帮助研究人员和工程师更好地理解和利用两个高维数据集之间的相关性,为后续的数据分析和建模提供有力支持。
SVD】奇异值分解 -- 学习笔记
萝卜丝儿皮尔
03-07 1584
参考资料:数值分析 若A为Hermite阵, 可用-酉相似变换-将其化为对角形式:Q∗AQ=ΛQ^{*}AQ=\LambdaQ∗AQ=Λ,即得到谱分解,也就是特征值分解; 谱分解保持矩阵的秩和特征值不变。 若A非Hermite阵, 可用-初等变换-化为比较简单的对角形式, A=P[I000]QA=P\begin{bmatrix}I&0\\0&0\end{bmatrix}QA...
图片压缩:SVD(奇异值分解)之近似矩阵
u010720150的博客
02-02 2320
写这篇博客的初衷的是想让读者浅尝一下SVD的魅力。 处于大数据时代,真的是,“SVD在手,天下我有”。最关键的是,SVD很容易理解,简单的线性代数知识就够了。
(转载总结)SVD 及其在推荐系统中的应用
u011412768的博客
10-30 7281
因为要用到基于SVD的推荐作为baseline,所以最近学习了一下SVD这个算法,感觉理解了好长时间。首先看的两篇是介绍SVD的文章,阅读量很大,翻译得很好。后面在网上又找到一篇专门解释SVD应用到推荐系统的文章,感觉博主写得很不错。   SVD介绍博文两篇: 地址1:奇异值分解(SVD) --- 线性变换几何意义 地址2:奇异值分解(SVD) --- 几何意义   下面是博主“不是我...
线性代数(22)——矩阵SVD分解
Jakob_Hu的博客
06-13 4368
矩阵SVD分解对称矩阵概念对称矩阵性质正交对角化对称矩阵一定可以被正交对角化如果一个矩阵能够被正交对角化,则它一定是对称矩阵谱定理奇异值概念奇异值几何意义 对称矩阵 借助对称矩阵可以处理任何矩阵,将任何矩阵都分解成希望的形式。 概念 对称矩阵中所有元素沿主对角线对称,主对角线元素不要求实相同的。用数学语言表述为A=ATA=A^TA=AT。对称矩阵也一定是方阵。 对称矩阵性质 对称矩阵的特征值一定...
奇异值分解(SVD)原理
qihandu的博客
03-18 1468
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。 1. 回顾特征值和特征向量    我们首先回顾下特征值和特征向量的定义如下: ...
深度学习推荐系统-使用SVD特征进行音乐推荐冷启动(代码+数据)
09-24
在"Codes-for-WSDM-CUP-Music-Rec-1st-place-solution-master"这个压缩包中,很可能包含了实现上述流程的代码,包括数据预处理、SVD计算、特征构造以及深度学习模型的训练和评估。深入研究这些代码,我们可以学习到...
相关矩阵组的低复杂度计算和存储建模1
08-08
总之,该问题的核心在于利用矩阵间的相关性,通过数学建模降低处理大规模矩阵组的计算和存储需求,以适应不断扩大的数据规模,这在现代科技领域,特别是计算机视觉、通信和信号处理等应用中具有重要意义。...
使用SVD-TLS算法及最大熵估计的burg算法实现股票的谱估计 _SVD-TLS算法_实验报告
09-20
在本实验报告中,我们将深入探讨如何利用奇异值分解(Singular Value Decomposition,SVD)与TLS(Total Least Squares)算法以及最大熵估计的BURG方法来实现股票市场的谱估计。谱估计是一种统计分析技术,用于从...
人脸识别经典算法一 特征脸方法(Eigenface)
09-20
主要为大家详细介绍了人脸识别经典算法一,特征脸方法Eigenface,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
机器学习中的数学(八):矩阵奇异值分解(SVD)
qq_37692302的博客
06-14 840
SVD分解 SVD分解是LSA的数学基础,本文是我的LSA学习笔记的一部分,之所以单独拿出来,是因为SVD可以说是LSA的基础,要理解LSA必须了解SVD,因此将LSA笔记的SVD一节单独作为一篇文章。本节讨论SVD分解相关数学问题,一个分为3个部分,第一部分讨论线性代数中的一些基础知识,第二部分讨论SVD矩阵分解,第三部分讨论低阶近似。本节讨论的矩阵都是实数矩阵。 基础知识 1. 矩阵的秩...
矩阵分解 SVD分解
billbliss的专栏
11-20 2万+
1.前言 一般提到特征值分解(eigenvalue decomposition)或者奇异值分解(singular value decomposition),大多数同学脑海里的第一反应就是一大堆矩阵以及数学计算方法。确实,学校学习阶段,不管是学线性代数或者矩阵分析,对于这部分内容,或者说绝大部分内容,老师一上来都是吧啦吧啦给你一堆定理推论或者公理,然后就是哗啦哗啦一堆公式出来,告诉你怎么计算
对角阵的SVD分解结果U一定等于V吗?
weixin_33894992的博客
08-27 388
到这个博客为止,我一直认为如果K是一个对称阵,那么K的svd分解: [U,S,V]=svd(K) U和V是肯定相同的。例如: K= 0.1590 0.2108 0.3175 0.2108 1.1254 1.1389 0.3175 1.1389 1.5209 其svd分解为: >> [U,S...
PCA对列数或者行数的降维SVD分解中的U与V的关系
qq_31829611的博客
03-08 1227
PCA仅仅使用了SVD的右奇异矩阵V,PCA的前k个特征向量就是V的前k列,没有使用左奇异矩阵。而左奇异矩阵可以用于行数的压缩,右奇异矩阵可以用于列数降维。 ...
PCASVD协方差矩阵求解的关系和对比(例子说明)
babywong的专栏
12-10 8155
基本上看下面这个图就知道了,如果想要验证,可以接着看下面的数据计算实例。 源数据X: 9*20,  9个样本, 20维   源数据     平均值     数据中心化:     PCA方法求解 [PCA_coeff, PCA_score, PCA_latent] =pca(X)    //默认一行为一个数据样本,matlab自动进行数据中心化   PCA_co
matlab中svd函数用法总结
05-30 1万+
1、帮助文档 svd Singular value decomposition Syntax s = svd(X) [U,S,V] = svd(X) [U,S,V] = svd(X,0) [U,S,V] = svd(X,'econ') Description The svd command computes the matrix singu
奇异值分解(SVD)原理详解及推导
热门推荐
学无常师,负笈不远险阻
01-23 37万+
在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系。前段时间看了国外的一篇文章,叫A Singularly Valuable Decomposition The SVD of a Matrix,觉得分析的特别好,把矩阵和空间关系对应了起来。本文就参考了该文并结合矩阵的相关知识把SVD原理梳理一下。 SVD不仅是一个数学问题,在工程应用中的很多地方都有它的身影,比如前面讲的PCA,掌握了SVD原理后再去看PCA那是相当简单的,在推荐系统方面,SV
文本挖掘中的特征集缩减与SVD应用
3. **处理文档向量**:对于每个文档,通过剔除SVD中低权重的词,更新其向量表示,这有助于减少噪声并增强特征的相关性。 4. **高级索引技术**:使用这些处理过的向量集合,利用高级多维索引技术创建索引,以便快速...
5
原创
9
点赞
37
收藏
4
粉丝
关注
私信
写文章

热门文章

  • Random Projection 随机投影法 5533
  • 卡尔曼滤波介绍 3265
  • 压缩感知、一阶范数、Lasso 2046
  • 利用相关性进行SVD计算 648
  • Reinforcement Learning 强化学习 On Policy Approximation 152

分类专栏

  • 机器学习 3篇
  • 数学 1篇
  • 数据处理 1篇
  • 滤波分析 1篇

最新评论

  • Random Projection 随机投影法

    @晖: 有个matlab代码吗

最新文章

  • Reinforcement Learning 强化学习 On Policy Approximation
  • 压缩感知、一阶范数、Lasso
  • Random Projection 随机投影法
2022年1篇
2021年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sheldon123z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王东莞网站优化托管策划濮阳企业网站优化推广有用吗揭阳网站内页优化专业网页设计网站seo优化石家庄网站关键词优化排名西安网站建设推广优化杭州优化网站电话口碑好的网站优化排名软件杭州专业的餐饮行业网站优化南开网站优化推广武汉十堰网站优化建一个优化网站多少钱长沙网站seo优化排名公司常州网站代码优化横岗国内网站优化衡阳外贸网站优化价格银川网站优化流程郑州五金行业网站优化推广怎么样网站后缀对优化有影响么泰州网站优化的内容沈阳网站推广优化公司简介资阳网站优化推广公司佛山小型企业网站seo优化php网站优化方法面试题网站推广优化嚷群-大将军1乐亭效果好的网站优化推荐优化网站流量网站优化排名工具金凤区网站优化行唐网站快照优化价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化