Questions tagged «numerics»

数值分析也称为数值分析,旨在为数值计算提供方法和算法。


4
为什么吴安德为什么更喜欢使用SVD而不是协方差矩阵的EIG来进行PCA?
我正在从Andrew Ng的Coursera课程和其他材料中学习PCA。在斯坦福大学自然语言处理课程中,cs224n的第一次作业,以及安德鲁·伍的演讲视频(,他们进行奇异值分解而不是协方差矩阵的特征向量分解,而且吴还说SVD在数值上比特征分解更稳定。 根据我的理解,对于PCA,我们应该对(m,n)大小的数据矩阵进行SVD ,而不是对大小的协方差矩阵进行SVD (n,n)。以及协方差矩阵的特征向量分解。 为什么他们使用协方差矩阵而不是数据矩阵的SVD?

2
如何计算巨大的稀疏矩阵的SVD?
计算数据非常稀疏的非常大的正矩阵(65M x 3.4M)的奇异值分解(SVD)的最佳方法是什么? 少于0.1%的矩阵为非零。我需要一种方法: 将适合内存(我知道在线方法存在) 将在合理的时间内计算:3,4天 会足够准确,但是准确性不是我的主要关注点,我希望能够控制投入的资源。 拥有一个实现它的Haskell,Python,C#等库,将是很棒的。我没有使用mathlab或R,但如有必要,我可以使用R。
26 svd  numerics 

3
随机数据的SVD结果中的怪异相关性;他们有数学解释还是LAPACK错误?
我在随机数据的SVD结果中观察到一个非常奇怪的行为,可以在Matlab和R中重现该行为。是吗? 我从k = 2维高斯中抽取了n=1000n=1000n=1000样本,均值和均方差为零:。我装配它们在数据矩阵。(我可以选择是否使居中,这不会影响以下内容。)然后我执行奇异值分解(SVD)来获得。让我们看一下两个特定元素,例如和,并询问在不同绘制之间它们之间的相关性是什么k=2k=2k=21000 × 2 X X X = û 小号V ⊤ û û 11 ù 22 XX∼N(0,I)X∼N(0,I)X\sim \mathcal N (0, \mathbf I)1000×21000×21000 \times 2XX\mathbf XXX\mathbf XX=USV⊤X=USV⊤\mathbf X=\mathbf{USV}^\topUU\mathbf UU11U11U_{11}U22U22U_{22}XX\mathbf X。我希望,如果抽奖次数相当大,则所有此类相关性都应在零附近(即总体相关性应为零,样本相关性将很小)。NrepNrepN_\mathrm{rep} 但是,我观察到U_ {11},U_ {12},U_ {21}和U_ {22}之间以及仅在这些元素之间存在一些奇怪的强相关性(大约)。如预期的那样,所有其他成对的元素都具有约零的相关性。下面是如何用于相关矩阵20的“上”元素\ mathbfù看起来像(第一10个的第一列的元件,则第一10个,第二列的元素):±0.2±0.2\pm0.2U11U11U_{11}U12U12U_{12}U21U21U_{21}U22U22U_{22}202020UU\mathbf U101010101010 请注意,每个象限的左上角都有很高的值。 正是@whuber的评论引起了我的注意。@whuber认为PC1和PC2不是独立的,并提供了这种强相关性作为证据。但是,我的印象是他无意中发现了LAPACK库中的一个数字错误。这里发生了什么? 这是@whuber的R代码: stat <- function(x) {u <- svd(x)$u; c(u[1,1], u[2, 2])}; …

5
关于矩阵分解的基本论文
最近,我读了斯基利康(Skillicorn)的关于矩阵分解的书,因为它针对的是本科生,所以有点失望。我想(对我自己和其他人)汇编关于矩阵分解的基本论文的简短参考书目(调查,也包括突破性论文)。我主要想到的是SVD / PCA(以及健壮/稀疏的变体)和NNMF上的某些东西,因为到目前为止它们是最常用的。你们都有什么建议/建议吗?我让我不要偏bias答案。我想将每个答案限制为2-3篇论文。 PS:我将这两个分解称为数据分析中最常用的。当然,QR,Cholesky,LU和Polar在数值分析中非常重要。这不是我的问题的重点。

1
在矩阵中添加一行后更新SVD分解
假设我有一个致密的基质的米× Ñ大小,SVD分解甲 = û 小号V ⊤。在我可以计算SVD如下:。AA \textbf{A}m×nm×nm \times nA=USV⊤.A=USV⊤.\mathbf{A}=\mathbf{USV}^\top.Rsvd(A) 如果一个新的个行被添加到(m+1)(m+1)(m+1),可以计算基于旧一个新的SVD分解(即通过使用 ü,小号和 V),不从头重新计算SVD?AA\mathbf AUU\mathbf USS\mathbf SVV\mathbf V

1
什么是计算奇异值分解(SVD)的有效算法?
维基百科有关主成分分析的文章指出: 存在有效的算法来计算的SVD,而不必形成矩阵X T X,因此,计算SVD现在是从数据矩阵计算主成分分析的标准方法,除非只需要少量的成分。XXXXŤXXŤXX^TX 有人可以告诉我本文讨论的有效算法是什么?没有提供参考(建议使用这种计算方式的文章的URL或引用会很好)。
17 pca  algorithms  svd  numerics 

3
存在哪些快速算法来计算截断的SVD?
可能不在这里,但存在几种(一种,二)相关的问题。 在文献中闲逛(或在Google中搜索“截断的SVD算法”)会发现很多使用以各种方式截短的,并声称(令人沮丧的是,通常没有引证)有快速的算法可以对其进行计算,但是没有人似乎在指出这些算法是什么。 我唯一能找到的是一个随机算法在redSVD库中使用。 我想看到的是一组精确且不精确的算法,适合理解系统的工作原理(但不一定要实际实现它们!)。 有人对这种事情有很好的参考吗?

1
默认的lme4优化器需要对高维数据进行大量迭代
TL; DR:lme4优化似乎是线性在默认情况下,模型参数数量,并且是这样慢比等效的glm与组虚拟变量模型。我有什么可以加快速度的吗? 我正在尝试适应一个相当大的分层logit模型(约5万行,100列,50组)。将正常的logit模型拟合到数据(带有用于组的虚拟变量)可以很好地工作,但是层次模型似乎被卡住了:第一个优化阶段可以很好地完成,但是第二个阶段需要进行很多迭代,而无需进行任何更改并且不停止。 编辑:我怀疑问题主要是我有这么多的参数,因为当我尝试将其设置maxfn为较低的值时会给出警告: Warning message: In commonArgs(par, fn, control, environment()) : maxfun < 10 * length(par)^2 is not recommended. 但是,参数估计在优化过程中完全没有改变,因此我仍然对执行该操作感到困惑。当我尝试设置maxfn优化器控件(尽管有警告)时,它似乎在完成优化后挂起。 这是一些重现随机数据问题的代码: library(lme4) set.seed(1) SIZE <- 50000 NGRP <- 50 NCOL <- 100 test.case <- data.frame(i=1:SIZE) test.case[["grouping"]] <- sample(NGRP, size=SIZE, replace=TRUE, prob=1/(1:NGRP)) test.case[["y"]] <- sample(c(0, 1), size=SIZE, replace=TRUE, prob=c(0.05, 0.95)) …

2
两个样本的Kullback-Leibler散度
我尝试对两个样本实施Kullback-Leibler散度的数值估计。要调试的执行从两个正态分布绘制样品N(0,1)N(0,1)\mathcal N (0,1)和N(1,2)N(1,2)\mathcal N (1,2)。 为了进行简单的估算,我生成了两个直方图,并尝试在数值上近似积分。我不得不处理直方图的那些部分,其中直方图之一的bin为零,这样我要么以零除或以零的对数结束。我该如何处理? 我想到一个相关的问题:如何精确计算两个不同均匀分布之间的KL散度?我是否必须将积分限制为两个分布的支持的并集?

3
“ R”中图聚类的方法和示例
我正在寻找使用'r'中的图集群对图中的节点进行分组/合并。 这是我的问题的一个惊人的玩具变化。 有两个“集群” 有一个“桥”连接集群 这是一个候选网络: 当我查看连接距离(“跳数”)时,如果可以的话,我可以得到以下矩阵: mymatrix <- rbind( c(1,1,2,3,3,3,2,1,1,1), c(1,1,1,2,2,2,1,1,1,1), c(2,1,1,1,1,1,1,1,2,2), c(3,2,1,1,1,1,1,2,3,3), c(3,2,1,1,1,1,1,2,3,3), c(3,2,1,1,1,1,1,2,2,2), c(2,1,1,1,1,1,1,1,2,2), c(1,1,1,2,2,2,1,1,1,1), c(1,1,2,3,3,2,2,1,1,1), c(1,1,2,3,3,2,2,1,1,1)) 这里的想法: 幸运的是,或者由于玩具的简单性,矩阵具有明显的斑块(在(很大)矩阵中)就不会出现这种情况。如果我将点与行之间的关系随机化,那将不是那么干净。 我可能写错了-如果我有错字,请告诉我。 这里的跳数是连接第i行的点与第j列的点的最短跳数。自跳仍然是跳,因此对角线全为跳。 因此,在此矩阵中,较大的距离(跳跃数)具有较高的数字。如果我想要一个显示“连通性”而不是距离的矩阵,那么我可以做一个点逆,将矩阵的每个像元都替换为其乘性逆。 问题: 为了帮助我找到自己的方式: 通过组合它们来减少图上节点数的术语是什么?它是集群,合并,纠结吗?我应该使用什么词? 有哪些成熟的技术?是否有关于该主题的教科书?您可以指向论文或网站吗? 现在,我尝试首先看一下这里-这是一个不错的“首次检查”地点。我没有找到想要的东西。如果我错过了(不是不太可能),您能给我指出关于简历的一个或两个有关该主题的问题吗? 要带我去哪里: 是否有一个“ R”包可以正确群集网络上的节点? 您能指出我要执行此操作的示例代码吗? 是否有一个“ R”包可以图形化地显示缩小后的网络? 您能指出我要执行此操作的示例代码吗? 提前致谢。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.