当前位置: 首页 > news >正文

北京58网站建设wordpress flashfxp

北京58网站建设,wordpress flashfxp,wordpress插件 飘雪,开发一个app需要什么奇异值分解(SVD)原理与在降维中的应用 奇异值分解(Singular Value Decomposition#xff0c;以下简称SVD)是在机器学习领域广泛应用的算法#xff0c;它不光可以用于降维算法中的特征分解#xff0c;还可以用于推荐系统#xff0c;以及自然语言处理等领域。是很多机器学习算…奇异值分解(SVD)原理与在降维中的应用 奇异值分解(Singular Value Decomposition以下简称SVD)是在机器学习领域广泛应用的算法它不光可以用于降维算法中的特征分解还可以用于推荐系统以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结并讨论在在PCA降维算法中是如何运用运用SVD的。 1. 回顾特征值和特征向量 我们首先回顾下特征值和特征向量的定义如下AxλxAx\lambda xAxλx 其中A是一个n×nn \times nn×n的矩阵x是一个n维向量则我们说λ\lambdaλ是矩阵A的一个特征值而x是矩阵A的特征值λ\lambdaλ所对应的特征向量。 求出特征值和特征向量有什么好处呢 就是我们可以将矩阵A特征分解。如果我们求出了矩阵A的n个特征值λ1≤λ2≤...≤λn\lambda_1 \leq \lambda_2 \leq ... \leq \lambda_nλ1​≤λ2​≤...≤λn​,以及这n个特征值所对应的特征向量{w1,w2,...wn}\{w_1,w_2,...w_n\}{w1​,w2​,...wn​}那么矩阵A就可以用下式的特征分解表示AWΣW−1AW\Sigma W^{-1}AWΣW−1 其中W是这n个特征向量所张成的n×nn \times nn×n维矩阵而Σ\SigmaΣ为这n个特征值为主对角线的n×nn \times nn×n维矩阵。 一般我们会把W的这n个特征向量标准化即满足∣∣wi∣∣21||w_i||_2 1∣∣wi​∣∣2​1, 或者说wiTwi1w_i^Tw_i 1wiT​wi​1此时W的n个特征向量为标准正交基满足WTWIW^TWIWTWI即WTW−1W^TW^{-1}WTW−1, 也就是说W为酉矩阵。 这样我们的特征分解表达式可以写成AWΣWTAW\Sigma W^TAWΣWT 注意到要进行特征分解矩阵A必须为方阵。那么如果A不是方阵即行和列不相同时我们还可以对矩阵进行分解吗答案是可以此时我们的SVD登场了。 2. SVD的定义 SVD也是对矩阵进行分解但是和特征分解不同SVD并不要求要分解的矩阵为方阵。假设我们的矩阵A是一个m×nm \times nm×n的矩阵那么我们定义矩阵A的SVD为AUΣVTA U\Sigma V^TAUΣVT 其中U是一个m×mm \times mm×m的矩阵Σ\SigmaΣ是一个m×nm \times nm×n的矩阵除了主对角线上的元素以外全为0主对角线上的每个元素都称为奇异值V是一个n×nn \times nn×n的矩阵。U和V都是酉矩阵即满足UTUI,VTVIU^TUI, V^TVIUTUI,VTVI。下图可以很形象的看出上面SVD的定义 那么我们如何求出SVD分解后的U, Σ\SigmaΣ, V这三个矩阵呢 如果我们将A的转置和A做矩阵乘法那么会得到n×nn \times nn×n的一个方阵ATAA^TAATA。既然ATAA^TAATA是方阵那么我们就可以进行特征分解得到的特征值和特征向量满足下式(ATA)viλivi(A^TA)v_i \lambda_i v_i(ATA)vi​λi​vi​ 这样我们就可以得到矩阵ATAA^TAATA的n个特征值和对应的n个特征向量v了。将ATAA^TAATA的所有特征向量张成一个n×nn \times nn×n的矩阵V就是我们SVD公式里面的V矩阵了。一般我们将V中的每个特征向量叫做A的右奇异向量。 如果我们将A和A的转置做矩阵乘法那么会得到m×mm \times mm×m的一个方阵AATAA^TAAT。既然AATAA^TAAT是方阵那么我们就可以进行特征分解得到的特征值和特征向量满足下式(AAT)uiλiui(AA^T)u_i \lambda_i u_i(AAT)ui​λi​ui​ 这样我们就可以得到矩阵AATAA^TAAT的m个特征值和对应的m个特征向量u了。将AATAA^TAAT的所有特征向量张成一个m×mm \times mm×m的矩阵U就是我们SVD公式里面的U矩阵了。一般我们将U中的每个特征向量叫做A的左奇异向量。 U和V我们都求出来了现在就剩下奇异值矩阵Σ\SigmaΣ没有求出了。由于Σ\SigmaΣ除了对角线上是奇异值其他位置都是0那我们只需要求出每个奇异值σ\sigmaσ就可以了。 我们注意到:AUΣVT⇒AVUΣVTV⇒AVUΣ⇒Aviσiui⇒σiAviuiAU\Sigma V^T \Rightarrow AVU\Sigma V^TV \Rightarrow AVU\Sigma \Rightarrow Av_i \sigma_i u_i \Rightarrow \sigma_i \frac {Av_i} {u_i}AUΣVT⇒AVUΣVTV⇒AVUΣ⇒Avi​σi​ui​⇒σi​ui​Avi​​ 这样我们可以求出我们的每个奇异值进而求出奇异值矩阵Σ\SigmaΣ。 上面还有一个问题没有讲就是我们说ATAA^TAATA的特征向量组成的就是我们SVD中的V矩阵而AATAA^TAAT的特征向量组成的就是我们SVD中的U矩阵这有什么根据吗这个其实很容易证明我们以V矩阵的证明为例。AUΣVT⇒ATVΣUT⇒ATAVΣUTUΣVTVΣ2VTAU\Sigma V^T \Rightarrow A^TV\Sigma U^T \Rightarrow A^TA V\Sigma U^TU\Sigma V^T V\Sigma^2V^TAUΣVT⇒ATVΣUT⇒ATAVΣUTUΣVTVΣ2VT 上式证明使用了:UTUI,ΣTΣU^TUI, \Sigma^T\SigmaUTUI,ΣTΣ。可以看出ATAA^TAATA的特征向量组成的的确就是我们SVD中的V矩阵。类似的方法可以得到AATAA^TAAT的特征向量组成的就是我们SVD中的U矩阵。 进一步我们还可以看出我们的特征值矩阵等于奇异值矩阵的平方也就是说特征值和奇异值满足如下关系σiλi\sigma_i \sqrt{\lambda_i}σi​λi​​ 这样也就是说我们可以不用σiAviui\sigma_i \frac {Av_i}{u_i}σi​ui​Avi​​来计算奇异值也可以通过求出ATAA^TAATA的特征值取平方根来求奇异值。 3. SVD计算举例 这里我们用一个简单的例子来说明矩阵是如何进行奇异值分解的。我们的矩阵A定义为 A(011110)\mathbf{A} \left( \begin{array}{ccc} 0 1\\ 1 1\\ 10 \end{array} \right)A​011​110​​ 我们首先求出ATAA^TAATA和AATAA^TAAT ATA(011110)(011110)(2112)\mathbf{A^TA} \left( \begin{array}{ccc} 0 1 1\\ 110 \end{array} \right) \left( \begin{array}{ccc} 0 1\\ 1 1\\ 10 \end{array} \right) \left( \begin{array}{ccc} 2 1 \\ 12 \end{array} \right)ATA(01​11​10​)​011​110​​(21​12​) AAT(011110)(011110)(110121011)\mathbf{AA^T} \left( \begin{array}{ccc} 0 1\\ 1 1\\ 10 \end{array} \right) \left( \begin{array}{ccc} 0 1 1\\ 110 \end{array} \right) \left(\begin{array}{ccc} 1 1 0\\1 2 1\\ 0 11 \end{array} \right)AAT​011​110​​(01​11​10​)​110​121​011​​ 进而求出ATAA^TAATA的特征值和特征向量λ13;v1(1212);λ21;v2(−1212)\lambda_1 3; v_1 \left( \begin{array}{ccc} \frac {1} {\sqrt{2}} \\ \frac {1} {\sqrt{2}}\end{array} \right); \lambda_2 1; v_2 \left( \begin{array}{ccc} \frac {-1}{\sqrt{2}} \\ \frac {1} {\sqrt{2}}\end{array} \right)λ1​3;v1​(2​1​2​1​​);λ2​1;v2​(2​−1​2​1​​) 接着求AATAA^TAAT的特征值和特征向量 λ13;u1(162616);λ21;u2(120−12);λ30;u3(13−1313)\lambda_1 3; u_1 \left( \begin{array}{ccc} \frac {1} {\sqrt{6}}\\ \frac {2} {\sqrt{6}} \\ \frac {1} {\sqrt{6}}\end{array} \right); \lambda_2 1; u_2 \left( \begin{array}{ccc} \frac {1} {\sqrt{2}} \\ 0 \\ \frac {-1} {\sqrt{2}}\end{array} \right); \lambda_3 0; u_3 \left( \begin{array}{ccc} \frac {1} {\sqrt{3}} \\ \frac {-1} {\sqrt{3}}\\ \frac {1} {\sqrt{3}}\end{array} \right)λ1​3;u1​​6​1​6​2​6​1​​​;λ2​1;u2​​2​1​02​−1​​​;λ3​0;u3​​3​1​3​−1​3​1​​​ 利用Aviσiui,i1,2Av_i \sigma_i u_i, i1,2Avi​σi​ui​,i1,2求奇异值 (011110)(1212)σ1(162616)⇒σ13\left(\begin{array}{ccc} 0 1\\1 1\\ 10 \end{array} \right) \left( \begin{array}{ccc} \frac {1} {\sqrt{2}} \\ \frac {1} {\sqrt{2}}\end{array} \right) \sigma_1 \left( \begin{array}{ccc} \frac {1} {\sqrt{6}} \\\frac {2} {\sqrt{6}} \\ \frac {1} {\sqrt{6}}\end{array} \right)\Rightarrow \sigma_1\sqrt{3}​011​110​​(2​1​2​1​​)σ1​​6​1​6​2​6​1​​​⇒σ1​3​ (011110)(−1212)σ2(120−12)⇒σ21\left( \begin{array}{ccc} 0 1\\1 1\\10 \end{array} \right) \left( \begin{array}{ccc} \frac {-1} {\sqrt{2}}\\ \frac {1} {\sqrt{2}} \end{array} \right) \sigma_2 \left( \begin{array}{ccc} \frac {1} {\sqrt{2}} \\ 0 \\ \frac {-1} {\sqrt{2}}\end{array} \right)\Rightarrow \sigma_21​011​110​​(2​−1​2​1​​)σ2​​2​1​02​−1​​​⇒σ2​1 当然我们也可以用σiλi\sigma_i \sqrt{\lambda_i}σi​λi​​直接求出奇异值为3\sqrt{3}3​和1. 最终得到A的奇异值分解为AUΣVT(161213260−1316−1213)(300100)(1212−1212)AU\Sigma V^T \left( \begin{array}{ccc} \frac {1} {\sqrt{6}} \frac {1} {\sqrt{2}} \frac {1} {\sqrt{3}}\\\frac {2} {\sqrt{6}} 0 \frac {-1} {\sqrt{3}}\\ \frac {1} {\sqrt{6}} \frac {-1} {\sqrt{2}} \frac {1} {\sqrt{3}}\end{array} \right) \left( \begin{array}{ccc} \sqrt{3} 0 \\ 0 1\\ 0 0 \end{array} \right) \left( \begin{array}{ccc} \frac {1} {\sqrt{2}} \frac {1} {\sqrt{2}}\\ \frac {-1} {\sqrt{2}} \frac {1} {\sqrt{2}}\end{array} \right)AUΣVT​6​1​6​2​6​1​​2​1​02​−1​​3​1​3​−1​3​1​​​​3​00​010​​(2​1​2​−1​​2​1​2​1​​) 4. SVD的一些性质 上面几节我们对SVD的定义和计算做了详细的描述似乎看不出我们费这么大的力气做SVD有什么好处。那么SVD有什么重要的性质值得我们注意呢 对于奇异值,它跟我们特征分解中的特征值类似在奇异值矩阵中也是按照从大到小排列而且奇异值的减少特别的快在很多情况下前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说Am×nUm×mΣm×nVn×nT≈Um×kΣk×kVk×nTA_{m \times n} U_{m \times m}\Sigma_{m \times n} V^T_{n \times n} \approx U_{m \times k}\Sigma_{k \times k}V^T_{k \times n}Am×n​Um×m​Σm×n​Vn×nT​≈Um×k​Σk×k​Vk×nT​ 其中k要比n小很多也就是一个大的矩阵A可以用三个小的矩阵Um×k,Σk×k,Vk×nTU_{m \times k},\Sigma_{k \times k} ,V^T_{k \times n}Um×k​,Σk×k​,Vk×nT​来表示。如下图所示现在我们的矩阵A只需要灰色的部分的三个小矩阵就可以近似描述了。 由于这个重要的性质SVD可以用于PCA降维来做数据压缩和去噪。也可以用于推荐算法将用户和喜好对应的矩阵做特征分解进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法比如潜在语义索引LSI。下面我们就对SVD用于PCA降维做一个介绍。 5. SVD用于PCA 在主成分分析PCA原理总结中我们讲到要用PCA降维需要找到样本协方差矩阵XTXX^TXXTX的最大的d个特征向量然后用这最大的d个特征向量张成的矩阵来做低维投影降维。可以看出在这个过程中需要先求出协方差矩阵XTXX^TXXTX当样本数多样本特征数也多的时候这个计算量是很大的。 注意到我们的SVD也可以得到协方差矩阵XTXX^TXXTX最大的d个特征向量张成的矩阵但是SVD有个好处有一些SVD的实现算法可以不求先求出协方差矩阵XTXX^TXXTX也能求出我们的右奇异矩阵V。也就是说我们的PCA算法可以不用做特征分解而是做SVD来完成。这个方法在样本量很大的时候很有效。实际上scikit-learn的PCA算法的背后真正的实现就是用的SVD而不是我们我们认为的暴力特征分解。 另一方面注意到PCA仅仅使用了我们SVD的右奇异矩阵没有使用左奇异矩阵那么左奇异矩阵有什么用呢 假设我们的样本是m×nm \times nm×n的矩阵X如果我们通过SVD找到了矩阵XXTXX^TXXT最大的d个特征向量张成的m×dm\times dm×d维矩阵U则我们如果进行如下处理Xd×n′Ud×mTXm×nX_{d\times n} U_{d \times m}^TX_{m \times n}Xd×n′​Ud×mT​Xm×n​ 可以得到一个d×nd \times nd×n的矩阵X‘,这个矩阵和我们原来的m×nm\times nm×n维样本矩阵X相比行数从m减到了k可见对行数进行了压缩。也就是说左奇异矩阵可以用于行数的压缩。相对的右奇异矩阵可以用于列数即特征维度的压缩也就是我们的PCA降维。 6. SVD小结 SVD作为一个很基本的算法在很多机器学习算法中都有它的身影特别是在现在的大数据时代由于SVD可以实现并行化因此更是大展身手。SVD的原理不难只要有基本的线性代数知识就可以理解实现也很简单因此值得仔细的研究。当然SVD的缺点是分解出的矩阵解释性往往不强有点黑盒子的味道不过这不影响它的使用。
http://www.hkea.cn/news/14426684/

相关文章:

  • 苏州网站建设网站企业微网站开发
  • 龙岩做网站哪家最好百度邮箱注册申请免费注册
  • 佛山外贸网站建设效果二级网站建设规范
  • 外贸网站如何seo推广百度品牌专区怎么收费
  • 英文公司网站设计做网站还有流量么
  • 建设英文网站的请示网站建设的开发语言
  • 视频解析网站如何做搜索手机网站建设的价格
  • 做一手房用什么网站私人信息调查
  • 网页制作与网站建设在线作业深圳网站设计网站建设哪个好
  • 网站建设客户告知书赣州金图网络科技有限公司
  • 深圳非凡网站建设公司没有网站怎么做排名优化
  • 定制家具网站平台南宁建站服务公司之
  • 上海网站建设设计公司排名沈阳网站建设方案服务
  • 做网站能赚钱吗黑龙江网站备案地址
  • 免费手机网站空间申请做网站销售需要注意的
  • 电脑建设银行怎样设置网站查询密码广告公司是干什么的
  • 设计医院网站建设建设完网站成功后需要注意什么
  • 网站策划书是什么酷黑网站
  • 北京网站优化哪家好如何登录公众号平台
  • 做网站的意义网站开发建设总结
  • 哪个网站可以做蛋白质的跨膜图a站是什么
  • 免费网站建设无广告网站怎样制作图文排版
  • 英文站网站源码网站建设成都市
  • 网站开发哪里接业务广东省农业农村厅领导
  • 求邯郸网站制作网站可以随便创建么
  • 手机版网站怎么做的做网站最好的公司有哪些
  • 天津做网站的公自己网站视频直播怎么做
  • 好的做外贸的网站有哪些fms 视频网站建设
  • 宝安中心站是几号线百度云网盘免费资源
  • 手机靓号网站建设如何注册自媒体平台