精华内容
下载资源
问答
  • 基于FPGA的奇异值和特征值分解的快速实现。
  • 浮点厄米特矩阵特征值分解的FPGA实现.pdf
  • 传统music波束成形算法,基于接收信号特征值分解,得到信号子空间与噪声子空间,进行空间谱估计,寻求最大空间谱密度。
  • 特征值分解

    千次阅读 2021-03-23 18:39:39
    文章目录特征值和特征向量的几何意义数学语言描述特征值和特征向量特征值分解特征值分解的过程参考资料 特征值和特征向量的几何意义 矩阵和向量作乘法,向量会变成另一个方向或长度的新向量,主要会发生旋转、伸缩的...

    特征值和特征向量的几何意义

    矩阵和向量作乘法,向量会变成另一个方向或长度的新向量,主要会发生旋转、伸缩的变化

    如果矩阵乘以某些向量后,向量不发生旋转变换,只产生伸缩变换

    那么就说这些向量是矩阵的特征向量,伸缩的比例就是特征值

    特征值和特征向量的数学描述

    如果 A 是 n 阶方阵,数 λ 和 n 维非零列向量 x 是 A 的对应于特征值的特征向量,有:

    A x = λ x Ax = λx Ax=λx

    也可以写成:

    ( A − λ E ) x = 0 (A-λE)x = 0 (AλE)x=0

    特征值分解

    特征值分解就是将一个矩阵分解成:

    A = P Λ P − 1 A=PΛP^{−1} A=PΛP1

    P 是这个矩阵 A 的特征向量组成的矩阵

    Λ 是特征值组成的对角矩阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向。

    特征值分解的过程

    解下面的线性方程组:

    ∣ A − λ E ∣ = 0 |A − λE| = 0 AλE=0

    即:
    在这里插入图片描述
    可以解出 n 个特征值: λ 1 , λ 2 , . . . , λ n λ_1 , λ_2 , ... , λ_n λ1,λ2,...,λn

    再把 n 个特征值代入下面的式子:

    ( A − λ E ) x = 0 (A - λE)x = 0 (AλE)x=0

    可以求出 n 个对应的特征向量: P 1 , P 2 , … , P n P_1 , P_2 , … , P_n P1,P2,,Pn

    对于每一个特征值与特征向量满足:

    A x i = λ i x i Ax_i=λ_ix_i Axi=λixi

    令:
    在这里插入图片描述

    对于 n 个特征值和特征向量可写成:

    在这里插入图片描述

    可得:

    A P = P Λ AP = PΛ AP=PΛ

    如果矩阵 P 可逆,有 A = P Λ P − 1 A = PΛP^{−1} A=PΛP1

    参考资料

    方阵的特征值分解:https://zhuanlan.zhihu.com/p/40144787
    特征值分解、奇异值分解、PCA概念整理:https://blog.csdn.net/jinshengtao/article/details/18448355

    展开全文
  • 复数矩阵的特征值分解,使用了GSL科学计算函数库,使得特征值分解时间大大减少。
  • 本文主要关注奇异的一些特性,另外还会稍稍提及奇异的计算,不过本文不准备在如何计算奇异上展开太多。另外,本文里面有部分不算太深的线性代数的知识,如果完全忘记了线性代数,看本文可能会有些困难。
  • 此提交包含用于通过基于频谱分而治之的高效稳定算法计算对称矩阵 (QDWHEIG.M) 的特征值分解和奇异值分解 (QDWHSVD.M) 的函数。 计算结果往往比 MATLAB 的内置函数 EIG.M 和 SVD.M 给出的结果更准确。 函数 TEST.M ...
  • 特征值分解和奇异值分解

    千次阅读 2020-12-09 07:42:33
    特征值分解特征值分解是将一个方阵A分解为如下形式: 其中,Q是方阵A的特征向量组成的矩阵, 是一个对角矩阵,对角线元素是特征值。通过特征值分解得到的前N个特征向量,表示矩阵A最主要的N个变化方向。利用这前N个...

    特征值分解

    特征值分解是将一个方阵A分解为如下形式:

    其中,Q是方阵A的特征向量组成的矩阵,

    是一个对角矩阵,对角线元素是特征值。

    通过特征值分解得到的前N个特征向量,表示矩阵A最主要的N个变化方向。利用这前N个变化方向,就可以近似这个矩阵(变换) 。

    奇异值分解

    奇异值分解(Singular Value Decomposition,SVD)是在机器学习领域广泛应用的算法,它不仅可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。 它能适用于任意的矩阵的分解。

    SVD是将m*n的矩阵A分解为如下形式:

    其中,U和V是正交矩阵,即

    ,U是左奇异矩阵,

    ,S是

    的对角阵(对角线上的元素是奇异值,非对角线元素都是0),

    右奇异向量,

    特征值用来描述方阵,可看做是从一个空间到自身的映射。奇异值可以描述长方阵或奇异矩阵,可看做是从一个空间到另一个空间的映射。

    奇异值和特征值是有关系的,奇异值就是矩阵

    的特征值的平方根。

    步骤

    输入:样本数据

    输出:左奇异矩阵,奇异值矩阵,右奇异矩阵计算特征值:特征值分解

    ,其中

    为原始样本数据

    得到左奇异矩阵

    和奇异值矩阵

    间接求部分右奇异矩阵:求

    利用

    可得

    返回

    ,分别为左奇异矩阵,奇异值矩阵,右奇异矩阵。

    python实现

    调用eig和svd方法

    import numpy as np

    data = np.array([[1, 0, 4], [2, 2, 0], [0, 0, 5]]) # 数组

    # 调用np.linalg.eig()对data*data'进行特征值分解

    eig_value, eig_vector = np.linalg.eig(data.dot(data.T))

    # 将特征值降序排列

    eig_value = np.sort(eig_value)[::-1]

    print("特征值:", eig_value) # 特征值

    print("特征值的平方根:", np.sqrt(eig_value)) # 特征值的平方根

    # 调用np.linalg.svd()对data进行奇异值分解

    U, S, V = np.linalg.svd(data)

    # 降到两维,计算U*S*V 结果应该和data几乎相同

    recon_data = np.round(U[:,:2].dot(np.diag(S[:2])).dot(V[:2,:]), 0).astype(int)

    print("奇异值:", S) # 奇异值

    print("data:\n",data)

    print("U*S*V的结果:\n",recon_data)

    从结果上验证了奇异值就是矩阵

    的特征值的平方根。结果如下:特征值: [41.44423549 8.26378188 0.29198263]

    特征值的平方根: [6.43771974 2.87467944 0.54035417]

    奇异值: [6.43771974 2.87467944 0.54035417]

    data: [[1 0 4] [2 2 0] [0 0 5]]

    U*S*V的结果: [[1 0 4] [2 2 0] [0 0 5]]

    按SVD原理实现

    import numpy as np

    # 1.调用np.linalg.eig()计算特征值和特征向量

    eig_val, u_vec = np.linalg.eig(data.dot(data.T))

    s_val = np.sqrt(eig_val) # 奇异值:是特征值的平方根

    # 将向量u_vec对应排好序

    s_val_sort_idx = np.argsort(s_val)[::-1]

    u_vec = u_vec[:, s_val_sort_idx]

    # 奇异值降序排列

    s_val = np.sort(s_val)[::-1]

    # 2.计算奇异值矩阵的逆

    s_val_inv = np.linalg.inv(np.diag(s_val))

    # 3.计算右奇异矩阵

    v_vec = s_val_inv.dot((u_vec.T).dot(data))

    # 降到两维,计算U*S*V 结果应该和data几乎相同

    recon_data = np.round(u_vec[:,:2].dot(np.diag(s_val[:2])).dot(v_vec[:2,:]),0).astype(int)

    print("左奇异矩阵U:\n", u_vec)

    print("奇异值Sigma:\n", s_val)

    print("右奇异矩阵V:\n", v_vec)

    print("data:\n",data)

    print("U*S*V的结果:\n",recon_data)

    运行结果

    左奇异矩阵U:

    [[ 0.63464303 -0.12919086 0.76193041]

    [ 0.03795231 -0.97952798 -0.19769816]

    [ 0.77187295 0.15438478 -0.61674751]]

    奇异值Sigma:

    [6.43771974 2.87467944 0.54035417]

    右奇异矩阵V:

    [[ 0.11037257 0.01179061 0.99382034]

    [-0.72642772 -0.68148675 0.08876135]

    [ 0.67832195 -0.73173546 -0.06665242]]

    data:

    [[1 0 4]

    [2 2 0]

    [0 0 5]]

    U*S*V的结果:

    [[1 0 4]

    [2 2 0]

    [0 0 5]]

    基于SVD的图像压缩

    基于SVD图片压缩: 图片其实就是数字矩阵,通过SVD将该矩阵降维,只使用其中的重要特征来表示该图片从而达到了压缩的目的。

    path = 'Andrew Ng.jpg'

    data = io.imread(path,as_grey=True)

    print(data.shape)

    data = np.mat(data) # 需要mat处理后才能在降维中使用矩阵的相乘

    U, sigma, VT = np.linalg.svd(data)

    count = 30 # 选择前30个奇异值

    # 重构矩阵

    dig = np.diag(sigma[:count]) # 获得对角矩阵

    # dim = data.T * U[:,:count] * dig.I # 降维 格外变量这里没有用 dig.I:是求dig的逆矩阵

    redata = U[:, :count] * dig * VT[:count, :] # 重构后的数据

    plt.imshow(data, cmap='gray') # 取灰

    plt.title("原始图片")

    plt.show()

    plt.imshow(redata, cmap='gray') # 取灰

    plt.title("基于SVD压缩重构后的图片")

    plt.show()

    原图片为720x1080,保存像素点值为720x1080 = 777600,使用SVD算法,取前30个奇异值则变为(720+1+1080)*30=54030,达到了几乎15倍的压缩比,极大的减少了存储量。

    结果如下

    附录

    方阵

    方阵:是一种特殊的矩阵。方阵是n*n的矩阵

    特征值和特征向量

    设A是n阶方阵,若存在n维非零向量

    ,使得

    则称常数

    为A的特征值,

    为A的对应于

    的特征向量。

    np.diag()

    np.diag(array)参数说明:

    array是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵;

    array是一个二维矩阵时,结果输出矩阵的对角线元素

    import numpy as np

    # 输入是1维数组时,结果形成一个以一维数组为对角线元素的矩阵

    data_1 = np.array([1,2,3])

    print("输入是1维数组时的结果:\n",np.diag(data_1))

    # 输入是二维矩阵时,结果输出矩阵的对角线元素

    data_2 = np.array([[1,0,4],[2,2,0],[0,0,5]])

    print("输入是2维数组时的结果:\n",np.diag(data_2))

    运行结果输入是1维数组时的结果: [[1 0 0] [0 2 0] [0 0 3]]

    输入是2维数组时的结果: [1 2 5]

    相关链接

    展开全文
  • 矩阵特征值分解与奇异值分解,非常适合入门学习,中文版讲解。--为什么还是达不到摘要字数上限啊。难道要我整个内容说一遍。
  • 使用雅克比迭代法求解矩阵特征值和特征向量
  • PCA算法的数学知识---特征值分解和奇异值分解
  • matlab开发-对称特征值分解。对称矩阵的特征成分或任意矩阵的奇异值分解
  • 特征值分解与奇异值分解及其应用

    千次阅读 2018-06-28 12:51:50
    SVD奇异值分解 正交矩阵 正交矩阵   正交矩阵对应着正交变换,特点在于不改变向量的尺寸(模)和任意两个向量的夹角。在x-y坐标系中,通俗地讲,就是旋转两个坐标轴,得到新的互相垂直的坐标轴,求向量在新...

    SVD奇异值分解


    正交矩阵

    正交矩阵

      正交矩阵对应着正交变换,特点在于不改变向量的尺寸(模)和任意两个向量的夹角。在x-y坐标系中,通俗地讲,就是旋转两个坐标轴,得到新的互相垂直的坐标轴,求向量在新坐标系中的投影。

    正交变换举例


      图片摘自此处。 例如向量 OA O A ,在原始 e1e2 e 1 − e 2 坐标系中表示为 (a,b)T ( a , b ) T ,在旋转后的坐标系 e1e2 e 1 ′ − e 2 ′ 中表示为 (a,b)T ( a ′ , b ′ ) T ,若存在一个矩阵 U U 使得(a,b)T=U(a,b)T,则矩阵 U U 是正交矩阵(可见对应着坐标系之间的正交变换)。
      可以代入求得矩阵U,且可观察到矩阵的行向量之间都是正交的,列向量之间也是正交的。

    U=[cosθsinθsinθcosθ] U = [ cos ⁡ θ sin ⁡ θ − sin ⁡ θ cos ⁡ θ ]

    正交矩阵的性质

    正交阵的逆等于其转置

    ATA=IAT=A1 A T A = I → A T = A − 1


    特征值分解

    特征值分解

       A A N×N 满秩对称方阵(对称阵的特征向量之间两两正交),有 N N 个特征值λi,对应 N N 个特征向量qi,有:

    Aq1=λ1q1Aq2=λ2q2AqN=λNqN { A q 1 = λ 1 q 1 A q 2 = λ 2 q 2 ⋯ A q N = λ N q N

      可以理解为向量 qi q i A A 的作用下,保持方向不变,只进行比例为λi的缩放。特征向量所在的直线包含了所有特征向量(称为特征空间)。
      以上 N N 个等式写成矩阵形式(qi N×1 N × 1 的列向量!)
    A[q1,q2,,qN]=[q1,q2,,qN]λ100λNAQ=QΛ A [ q 1 , q 2 , ⋯ , q N ] = [ q 1 , q 2 , ⋯ , q N ] [ λ 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ λ N ] A Q = Q Λ

      等式两边右乘 Q Q 的逆,得到A的特征值分解:
    A=QΛQ1 A = Q Λ Q − 1

      进一步,由于特征向量矩阵 Q Q 各列相互正交,所以Q是正交阵,正交阵的逆等于其转置:

    A=QΛQT A = Q Λ Q T

    A=[q1,q2,,qN]λ100λN[q1,q2,,qN]T A = [ q 1 , q 2 , ⋯ , q N ] [ λ 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ λ N ] [ q 1 , q 2 , ⋯ , q N ] T

    特征值分解的几何意义

      矩阵 A A 是一个既有旋转又有缩放的变换,用A对向量 x x 进行矩阵变换Ax,即对它进行旋转操作和缩放操作。整个过程在矩阵做EVD之后,可以看成 QΛQTx Q Λ Q T x ,即 x x 依次经过QT Λ Λ Q Q 的变换,特别地,如果x恰与矩阵 A A 的某个特征向量平行,那么它将不会发生旋转,只发生缩放。

    1. QTx:将 x x 由原始空间变换到由Q各两两正交的特征向量构成的空间中

      • ΛQTx Λ Q T x :将变换后的 x x 在特征空间中缩放,轴qi的缩放因子正是对应的特征值 λi λ i
      • QΛQTx Q Λ Q T x :将缩放过的 x x 变换回原始空间

    矩阵变换举例

    A=[1112]x=[0,1]T


    奇异值分解SVD

    SVD定义

    M×N M × N 矩阵 A A 的SVD:

    A=UVT

    SVD推导

      首先把 A A 变成N×N方阵 ATA A T A ,于是就能做EVD:

    (ATA)vi=λivi(ATA)V=VΛ ( A T A ) v i = λ i v i ( A T A ) V = V Λ

      然后把 A A 变成方阵M×M,于是就又能做EVD:

    (AAT)ui=λiui(AAT)U=UΛ ( A A T ) u i = λ i u i ( A A T ) U = U Λ

      非方阵的秩最多为M和N较小值,两种情况下非零特征值是一样的,多余的特征值都是0。现在假设 A A 可以分解成A=UVT的形式,现在求出这三部分:

    AT=VUTATA=V()2VTAAT=U()2UT A T = V ′ ∑ ′ U ′ T A T A = V ′ ( ∑ ′ ) 2 V ′ T A A T = U ′ ( ∑ ′ ) 2 U ′ T

    所以 V=V V ′ = V U=U U ′ = U =Λ ∑ ′ = Λ ,也就是说中间对角矩阵 的元素可以这样求:
    σi=λi σ i = λ i

    SVD性质

      对角阵 的奇异值从左上到右下按从大到小排序,一般来说少量几个奇异值(例如 k k 个)就占据了奇异值之和的绝大部分,因此可以只用这k个奇异值和对应的左右特征向量表示原矩阵 A A

    A=UM×MM×NVN×NTUM×kk×kVk×NT

    总结

      SVD可以把任意形状的矩阵分解成 A=UVT A = U ∑ V T 的形式, U U V都是有特征值分解得到的特征向量矩阵,它们都是正交阵, 可以由特征值开平方得到。只选择较大的奇异值就能很好地表示原矩阵。


    EVD应用-PCA

    初衷——最大方差投影

      希望找到一个新的正交坐标系,将样本变换过去(投影过去),使得所有样本之间尽可能地分开(方差最大)。

    1. 样本集 X X 在坐标系W(W的每行就是一个标准正交基,即两两之间正交,且模为1)下的投影是 WTX W T X (原因参见正交变换)
    2. 假设样本是去中心化的(均值为0),投影的方差为 WTXXTW W T X X T W
    3. 写出有约束优化问题

    maxs.t.tr(WTXXTW)WTW=I max t r ( W T X X T W ) s . t . W T W = I

    用拉格朗日乘子法求解:

    L(W)=WTXXTW+λ(IWTW)L(W)W=2XTXW2λW(XTX)W=λW L ( W ) = W T X X T W + λ ( I − W T W ) ∂ L ( W ) ∂ W = 2 X T X W − 2 λ W ( X T X ) W = λ W

      如此可见,我们所需的新坐标系正是样本协方差 XTX X T X d×d d × d )做特征值分解后的特征向量矩阵。总结一下PCA的流程:首先样本去中心化,然后计算样本协方差 XTX X T X ,再对 XTX X T X 做EVD,选取最大的部分特征值所对应的特征向量,构成投影矩阵 W W


    SVD应用-LSA潜在语义分析

    构造单词-文档矩阵

      假设有D(Document)篇文章,每篇文章都是由很多个单词构成的结构(bag-of-words,单词的位置不重要,只关心数量),而单词来自于一个大小为 W W (Word)的字典,则构造W×D矩阵,第 i i 行第j列表示单词 Wi W i 在文档 j j 中出现的次数(或者tf-idf)。通常来说,该矩阵会相当地稀疏。
      具体地,会先遍历所有文章进行分词,在这个过程中过滤掉停止词(例如a、the之类的)和标点等,然后进行词频计数等操作。

    SVD

      将单词-文档矩阵进行SVD,并且只选取部分足够大的奇异值(例如k个),对应于不同的主题(语义):

    AW×D=UW×kSk×kVTD×k A W × D = U W × k S k × k V D × k T

      其中 UW×k U W × k 描述了每个单词与不同主题之间的关系, Sk×k S k × k 描述了主题本身, VD×k V D × k 描述了每篇文章与不同主题之间的关系。我们可以从 UW×k U W × k 挖掘同义词,从 VD×k V D × k 挖掘相似文档。那么到底为什么需要做SVD呢?是因为单纯地统计词频或tf-idf并不能描述单词之间或文本之间的关系。然而SVD有一个问题,就是每一个语义具体是什么不可解释,只知道他们是互相正交的。

    从SVD到SVD++

    SVD在电影推荐中的应用

    问题提出
    1. 稀疏矩阵没法直接SVD,有很多数据是缺失的
    2. SVD很慢,超过1000维的矩阵做SVD已经相当慢了
    电影推荐

      现有一个矩阵,行表示用户,列表示电影,矩阵中每个元素表示某个用户对某个电影的打分,显然这个矩阵是极其稀疏的(不是每个用户都看过所有电影的,大多只看过几部),有大量缺失值。现在的问题是,如何预测这些缺失值?即如何预测一个用户对他没看过的电影的评分?
      首先,如果把U乘S看成一个矩阵,则SVD可以写成两个矩阵相乘:

    AW×D=[UW×kSk×k]VTD×k A W × D = [ U W × k S k × k ] V D × k T

      那么电影评分矩阵也存在这种分解:

    RU×M=PU×kQk×M R U × M = P U × k Q k × M

      现在P和Q是未知的,如果能通过R中已知的评分训练P和Q,使得P和Q相乘的结果能最好地拟合R中未缺失值,则缺失值就可以通过P的一行乘上Q的一列得到:

    r^um=pTuqm r ^ u m = p u T q m

    P和Q的训练(基于梯度下降法):Basic SVD

      要拟合真实的已知评分 rum r u m ,选取平方误差:

    E=12um(rumr^um)2=12um(rumjpujqjm)2 E = 1 2 ∑ u ∑ m ( r u m − r ^ u m ) 2 = 1 2 ∑ u ∑ m ( r u m − ∑ j p u j q j m ) 2

      计算梯度(当然只能代入R矩阵中 rum r u m 有取值的计算),漂亮的对称结构:

    Epuk=(rumr^um)qkm=eumqkmEqkm=(rumr^um)puk=eumpuk ∂ E ∂ p u k = − ( r u m − r ^ u m ) q k m = − e u m q k m ∂ E ∂ q k m = − ( r u m − r ^ u m ) p u k = − e u m p u k

      接下来只需要将P和Q用随机数初始化,然后梯度下降迭代即可。

    P和Q的训练:RSVD

      引入正则化:

    E=12u,me2um+12λu,kp2uk+12λk,mq2km E = 1 2 ∑ u , m e u m 2 + 1 2 λ ∑ u , k p u k 2 + 1 2 λ ∑ k , m q k m 2

      计算梯度:

    Epuk=(rumr^um)qkm=eumqkm+λpukEqkm=(rumr^um)puk=eumpuk+λqkm ∂ E ∂ p u k = − ( r u m − r ^ u m ) q k m = − e u m q k m + λ p u k ∂ E ∂ q k m = − ( r u m − r ^ u m ) p u k = − e u m p u k + λ q k m

    有偏置的RSVD:RSVD 改

      用户对电影的打分不仅取决于用户与电影之间的关系,还应该受到用户自身 bu b u 和电影自身性质 bm b m 的影响:

    r^um=pTuqm+bu+bm+μ r ^ u m = p u T q m + b u + b m + μ

      其中 μ μ 是全局平均分,他描述了整个打分网站的整体打分水平。
      引入正则化和惩罚:

    E=12u,me2um+12λu,kp2uk+12λk,mq2km+12λub2u+12λmb2m E = 1 2 ∑ u , m e u m 2 + 1 2 λ ∑ u , k p u k 2 + 1 2 λ ∑ k , m q k m 2 + 1 2 λ ∑ u b u 2 + 1 2 λ ∑ m b m 2

      如此对于P和Q的导数不变,新增加的三个参数中,两个b是需要学习的,仍然用梯度下降迭代更新,初始值设0即可。


    考虑邻域影响的SVD++

    P和Q的训练:SVD++

      在有偏置RSVD的基础上,还考虑了用户对电影的历史评分。ItemCF衡量用户 u u 对电影m的兴趣:

    r^um=1|N(u)|jN(u)wmj r ^ u m ′ = 1 | N ( u ) | ∑ j ∈ N ( u ) w m j

      这里 N(u) N ( u ) 是用户 u u 喜欢的电影集合,wmj是电影 m m 和电影j的相似度(在ItemCF中,相似度通过统计所有用户观看的电影列表获得,但注意在SVD++中 w w 实际上是需要学习的参数),这个式子中求和项的意思是用户过去感兴趣的所有电影和电影m的整体相似程度,左边分式用于归一化。
      现在嫌矩阵 W W 太大,用SVD的思想它也能分解 W=XY,即用 xTmyj x m T y j 代替 wmj w m j xm x m yj y j 都是向量

    r^um=1|N(u)|jN(u)xTmyj=1|N(u)|xTmjN(u)yj r ^ u m ′ = 1 | N ( u ) | ∑ j ∈ N ( u ) x m T y j = 1 | N ( u ) | x m T ∑ j ∈ N ( u ) y j

      将这个兴趣加到RSVD上

    r^um=bu+bm+μ+qTmpu+1|N(u)|xTmjN(u)yj r ^ u m = b u + b m + μ + q m T p u + 1 | N ( u ) | x m T ∑ j ∈ N ( u ) y j

      又嫌参数太多,让 x=q x = q

    r^um=bu+bm+μ+qTmpu+1|N(u)|jN(u)yj r ^ u m = b u + b m + μ + q m T ( p u + 1 | N ( u ) | ∑ j ∈ N ( u ) y j )

      如此一来,需要迭代学习的参数包括 bu b u bm b m puk p u k qkm q k m yj y j 。手撸梯度之后,梯度下降求解。


    总结

    1. PCA和SVD都能用来降维,只是PCA用的是特征值分解。
    2. PCA需要对数据去中心化,可能使样本由稀疏变稠密,提高计算复杂度。
    3. PCA只能获得矩阵一个方向的分解,SVD能获得两个方向的分解。
    4. SVD实际上很慢,而且无法处理缺失值,所以采取矩阵分解梯度下降拟合未缺失值
    5. 梯度下降拟合可能会过拟合,因此采用RSVD
    6. 有偏置的RSVD是出于对用户和物品各自固有属性的考虑
    7. SVD++是在有偏置的RSVD基础上,基于ItemCF考虑了用户历史喜好的SVD

    参考资料

    奇异值分解(SVD)原理详解及推导
    知乎-如何理解特征值
    《推荐系统实践》

展开全文
特征值分解 奇异值分解 PCA
  • 参考链接: https://www.cnblogs.com/jian-gao/p/10781649.html https://www.matools.com/blog/190127138 https://zhuanlan.zhihu.com/p/114553439 ...奇异值分解可以将一个比较复杂的矩阵用更小更简单的几个子矩

    参考链接:

    https://www.cnblogs.com/jian-gao/p/10781649.html
    https://www.matools.com/blog/190127138
    https://zhuanlan.zhihu.com/p/114553439
    https://www.cnblogs.com/jian-gao/p/10781649.html
    https://www.cnblogs.com/pinard/p/6251584.html
    https://blog.csdn.net/yzy_1996/article/details/100540556

    奇异值分解可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力,让机器学会抽取重要的特征,SVD是一个重要的方法。

    奇异值分解和特征值分解的区别

    矩阵可以认为是一种线性变换,而且这种线性变换的作用效果与基的选择有关。
    以Ax = b为例,x是m维向量,b是n维向量,m,n可以相等也可以不相等,表示矩阵可以将一个向量线性变换到另一个向量,这样一个线性变换的作用可以包含旋转、缩放和投影三种类型的效应。

    在这里插入图片描述它表示我们找到了和这样两组基,A矩阵的作用是将一个向量从这组正交基向量的空间旋转到
    这组正交基向量空间,并对每个方向进行了一定的缩放,缩放因子就是各个奇异值。如果维度比大,则表示还进行了投影
    。可以说奇异值分解将一个矩阵原本混合在一起的三种作用效果,分解出来了。

    而特征值分解其实是对旋转缩放两种效应的归并。(有投影效应的矩阵不是方阵,没有特征值,无法做特征值分解)
    特征值,特征向量由Ax=x得到,它表示如果一个向量v处于A的特征向量方向,那么Av对v的线性变换作用只是一个缩放
    。也就是说,求特征向量和特征值的过程,我们找到了这样一组基,在这组基下,矩阵的作用效果仅仅是存粹的缩放。

    总结一下,特征值分解和奇异值分解都是给一个矩阵(线性变换)找一组特殊的基,特征值分解找到了特征向量这组基,在这组基下该线性变换只有缩放效果。而奇异值分解则是找到另一组基,这组基下线性变换的旋转、缩放、投影三种功能独立地展示出来了。我感觉特征值分解其实是一种找特殊角度,让旋转效果不显露出来,所以并不是所有矩阵都能找到这样巧妙的角度。

    特征值用来描述方阵,可看做是从一个空间到自身的映射。奇异值可以描述长方阵或奇异矩阵,可看做是从一个空间到另一个空间的映射。

    实对称矩阵特征值分解步骤

    A = Q∑Q-1
    在这里插入图片描述

    PCA算法流程

    在这里插入图片描述

    奇异值分解步骤

    在这里插入图片描述
    在这里插入图片描述

    奇异值的计算是一个难题,是一个O(N^3)的算法。在单机的情况下当然是没问题的,matlab在一秒钟内就可以算出1000 * 1000的矩阵的所有奇异值,但是当矩阵的规模增长的时候,计算的复杂度呈3次方增长,就需要并行计算参与了。

    展开全文
  • 矩阵的特征值分解

    千次阅读 2020-07-06 11:22:43
    特征值分解 物理意义: 矩阵可以表示一种变换; 特征向量表示矩阵变换的方向; 特征值表示矩阵变换在对应特征向量方向上的变换速度; 特征值与特征向量 如下一个二维向量,这个二维空间的基向量是; 将向量左...
  • PCA的实现由两种方法,一种是特征值分解,另一种是奇异值分解,特征值分解和奇异值分解的目的是一样的,都是提取出一个矩阵最重要的特性。 特征值 线性代数中对特征值和特征向量的定义:设A是n阶方阵,如果存在 λ...
  • 特征值分解:特征值,特征向量,特征向量矩阵

    千次阅读 多人点赞 2019-01-19 09:57:26
    矩阵的特征值分解目的就是提取出一个矩阵最重要的特征。 分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。...
  • 基于矩阵特征值分解谱分析(music等等)
  • 2 特征值分解(Eigen Value Decomposition,EVD) 2.1 定义 【百度百科】特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。...
  • 1.1 应用领域 最优化问题:最小二乘问题 (求取最小二乘解的方法一般使用SVD) ... 奇异值分解:可以降维,同时可以降低数据存储需求 1.2 矩阵是什么 矩阵是什么取决于应用场景 矩阵可以是:  只是一堆...
  • 机器学习——特征值分解

    千次阅读 2019-08-07 18:18:20
    特征值特征向量的定义 Aα = λα(α不等于0) ...特征值分解 n个特征向量线性无关可以进行特征分解 A=WΣW-1 其中W是这n个特征向量所张成的n×n维矩阵,并对n个特征向量标准化,而Σ为这n个特征值为主对...
  • 1、特征值分解 如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式子 : Av = λv 这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的...
  • 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的... 上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于
  • 下面我们就要来探讨这个问题 特征值和特征向量是为了研究向量在经过线性变换后的方向不变性而提出的 一个矩阵和该矩阵的非特征向量相乘是对该向量的旋转变换;一个矩阵和该矩阵的特征向量相乘是对该向量的伸缩变换,...
  • 为此, 提出一种基于特征值分解的支持向量回归机, 简称IGEPSVR. 与GEPSVR 相比, IGEPSVR 的主要优势 有: 结合最大间隔准则和GEPSVR 几何思想给出了新的距离度量准则; 在优化模型中引入Tikhonov 正则项, 克服了...
  • 目录: 1.矩阵分解 ...2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4.SVD++ 5.SVD/SVD++在协同过滤中的应用 1. 矩阵分解 1.1 矩阵分解的产生原因 在介绍矩阵分解之前,先让我们明确下推荐系...
  • ,所以PCA算法有两种实现方法:基于特征值分解协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。 既然提到协方差矩阵,那么就简单介绍一下方差和协方差的关系。然后概括介绍一下特征值分解矩阵原理、奇异...
  • 特征值分解与奇异值分解原理与计算

    万次阅读 多人点赞 2018-11-10 02:40:22
    如果一个非零向量v是方阵A的特征向量,将一定可以表示成下面形式,而λ是特征向量v对应的特征值:特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵甲的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线...
  • 使用特征值分解和SVD分解处理图片矩阵并还原重构矩阵 1. 模块导入和图片预处理 1.1 导入模块 1.2 加载和处理图片 1.3 查看图片数组和显示图片 2. 小型矩阵测试 2.1 使用特征值分解 2.2 使用奇异值分解 3. 正式图片...
  • 空空如也

    空空如也

    1 2 3 4 5 ... 20
    收藏数 96,767
    精华内容 38,706
    热门标签
    关键字:

    特征值分解

    友情链接: ssc_lithium_cell_2RC.zip