Questions tagged «matrix-decomposition»

矩阵分解是指将矩阵分解为较小矩阵的乘积的过程。通过分解一个大矩阵,可以有效地执行许多矩阵算法。

1
大型稀疏矩阵上的降维(SVD或PCA)
/ edit:现在可以进行进一步跟进,您可以使用irlba :: prcomp_irlba / edit:跟进我自己的帖子。 irlba现在具有“中心”和“比例”自变量,可用于计算主成分,例如: pc <- M %*% irlba(M, nv=5, nu=0, center=colMeans(M), right_only=TRUE)$v 我Matrix想在机器学习算法中使用大量稀疏的功能: library(Matrix) set.seed(42) rows <- 500000 cols <- 10000 i <- unlist(lapply(1:rows, function(i) rep(i, sample(1:5,1)))) j <- sample(1:cols, length(i), replace=TRUE) M <- sparseMatrix(i, j) 因为此矩阵有很多列,所以我想将其维数减少到更易于管理的程度。我可以使用出色的irlba软件包执行SVD并返回前n个主要成分(此处显示5个;我可能会在实际数据集中使用100或500): library(irlba) pc <- irlba(M, nu=5)$u 但是,我已经读过在执行PCA之前,应该将矩阵居中(从每一列中减去列均值)。这在我的数据集上很难做到,而且会破坏矩阵的稀疏性。 对未缩放的数据执行SVD,并将其直接输入到机器学习算法中有多“糟糕”?在保留矩阵稀疏性的同时,是否有任何有效的方法可以缩放此数据? / edit:B_miner引起我注意的“ …


2
为什么通过数据SVD进行数据PCA?
这个问题是关于一种计算主成分的有效方法。 关于线性PCA的许多文章都主张对个案数据使用奇异值分解。也就是说,如果我们有数据并想用主成分替换变量(其列),则可以执行SVD:,奇异值(特征值的平方根)占据了主对角线,右特征向量是轴变量到轴分量的正交旋转矩阵,左特征向量像,仅在这种情况下。然后,我们可以将分量值计算为。X = û 小号V '小号V Ù V C ^ = X V = û 小号XX\bf XX = U S V′X=USV′\bf X=USV'小号S\bf SVV\bf VüU\bf UVV\bf VC=XV=USC=XV=US \bf C=XV=US 进行变量PCA的另一种方法是通过分解方阵(即可以是变量之间的相关或协方差等)。分解可以是特征分解或奇异值分解:对于正方形对称正半定矩阵,它们将给出特征值与和的对角线相同的结果。组件值将为。- [R [R = V 大号V '大号V C ^ = X VR=X′XR=X′X\bf R=X'XRR\bf R R=VLV′R=VLV′\bf R=VLV'LL\bf LVV\bf VC=XVC=XV\bf C=XV 现在,我的问题是:如果数据是一个大矩阵,并且案例数(通常是一个案例)比变量数大得多,那么方法(1)会比方法(2)慢得多),因为方法(1)将相当昂贵的算法(例如SVD)应用于大矩阵;它计算并存储巨大的矩阵,这在我们的情况下是我们真正不需要的(变量的PCA)。如果是这样,那么为什么这么多texbook似乎主张或仅提及方式(1)?也许这很有效,但我缺少了什么?üXX\bf XUU\bf U

1
R中矩阵逆的有效计算
我需要计算矩阵逆,并且一直在使用solve函数。尽管在小型矩阵上效果很好,但solve在大型矩阵上往往非常慢。我想知道是否还有其他功能或功能组合(通过SVD,QR,LU或其他分解功能)可以使我更快地得到结果。

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

3
如何在非负矩阵分解中选择最佳潜在因子数量?
给定的矩阵Vm×nVm×n\mathbf V^{m \times n},非负矩阵分解(NMF)发现两个非负矩阵Wm×kWm×k\mathbf W^{m \times k}和Hk×nHk×n\mathbf H^{k \times n}(即与所有元素≥0≥0\ge 0)来表示分解矩阵为: V≈WH,V≈WH,\mathbf V \approx \mathbf W\mathbf H, 例如要求非负的WW\mathbf W和HH\mathbf H∥V−WH∥2.‖V−WH‖2.\|\mathbf V-\mathbf W\mathbf H\|^2. 是否有通用的方法来估算kkk NMF中?例如,如何将交叉验证用于此目的?

1
时间序列邻接矩阵的本征函数?
考虑一个简单的时间序列: > tp <- seq_len(10) > tp [1] 1 2 3 4 5 6 7 8 9 10 我们可以为此时间序列计算一个邻接矩阵,该矩阵表示样本之间的时间链接。在计算此矩阵时,我们在时间0处添加了一个虚构位置,该观测值与时间1处的第一个实际观测值之间的链接称为链接0。在时间1和时间2之间,链接为链接1,依此类推。因为时间是定向过程,所以站点连接到站点“上游”的链接(受其影响)。因此,每个站点都连接到链接0,但链接9仅连接到站点10;它临时发生在除站点10之外的每个站点之后。这样定义的邻接矩阵如下创建: > adjmat <- matrix(0, ncol = length(tp), nrow = length(tp)) > adjmat[lower.tri(adjmat, diag = TRUE)] <- 1 > rownames(adjmat) <- paste("Site", seq_along(tp)) > colnames(adjmat) <- paste("Link", seq_along(tp)-1) > adjmat Link 0 …

2
如何从R中的特征值和特征向量绘制椭圆?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为交叉验证的主题。 2年前关闭。 有人可以拿出R代码从下面矩阵A = (2.2 0.4 0.4 2.8)的特征值和特征向量绘制椭圆 A =(2.20.40.42.8)一种=(2.20.40.42.8) \mathbf{A} = \left( \begin{array} {cc} 2.2 & 0.4\\ 0.4 & 2.8 \end{array} \right)

1
说明“本征”如何帮助反转矩阵
我的问题与geoR:::.negloglik.GRF或中利用的计算技术有关geoR:::solve.geoR。 在线性混合模型设置中: 其中和分别是固定效应和随机效应。此外,Y=Xβ+Zb+eY=Xβ+Zb+e Y=X\beta+Zb+e ββ\betabbbΣ=cov(Y)Σ=cov(Y)\Sigma=\text{cov}(Y) 估算效果时,需要计算 ,通常可以使用来完成,但是有时几乎不可逆,因此请运用技巧(X′Σ−1X)−1X′Σ−1Y(X′Σ−1X)−1X′Σ−1Y (X'\Sigma^{-1}X)^{-1}X'\Sigma^{-1} Y solve(XtS_invX,XtS_invY)(X′Σ−1X)(X′Σ−1X)(X'\Sigma^{-1}X)geoR t.ei=eigen(XtS_invX) crossprod(t(t.ei$vec)/sqrt(t.ei$val))%*%XtS_invY (可以在geoR:::.negloglik.GRF和中看到geoR:::.solve.geoR)等于分解 ,其中,因此 (X′Σ−1X)=ΛDΛ−1(X′Σ−1X)=ΛDΛ−1 (X'\Sigma^{-1}X)=\Lambda D \Lambda^{-1}\\ Λ′=Λ−1Λ′=Λ−1\Lambda'=\Lambda^{-1}(X′Σ−1X)−1=(D−1/2Λ−1)′(D−1/2Λ−1)(X′Σ−1X)−1=(D−1/2Λ−1)′(D−1/2Λ−1) (X'\Sigma^{-1}X)^{-1}=(D^{-1/2}\Lambda^{-1})'(D^{-1/2}\Lambda^{-1}) 两个问题: 本征分解如何帮助反转?(X′Σ−1X)(X′Σ−1X)(X'\Sigma^{-1}X) 还有其他可行的选择(强大且稳定)吗?(例如qr.solve或chol2inv?)

1
协作过滤的最新技术
我正在研究一个用于协同过滤(CF)的项目,即完成部分观察到的矩阵或更一般的张量。我是该领域的新手,最终,对于这个项目,我不得不将我们的方法与当今其他著名的方法进行比较,将提议的方法与它们进行比较,即CF中的最新技术。 我的搜索显示了以下方法。确实,我是通过查看其中的一些论文及其参考文献,或者在进行比较时查看实验部分来发现它们的。我很高兴知道新提出的方法并与SoTA进行比较,那么以下哪个是一个不错的选择?如果没有他们,我很高兴认识一个好的代表。 基于矩阵分解: 加权低秩近似(ICML 2003) 为协作过滤建模用户评级配置文件(NIPS 2003) 协同过滤的多重乘数模型(ICML 2004) 用于协作预测的快速最大保证金矩阵分解(ICML 2005) 概率矩阵分解(NIPS 2007) 贝叶斯概率矩阵分解(ICML 2008) 基于回归的潜在因子模型(KDD 2009) 具有高斯过程的非线性矩阵分解(ICML 2009) 动态Poission分解(ACM会议推荐系统大会2015) 基于张量分解 使用多维方法将上下文信息整合到推荐系统中(ACM信息系统交易(TOIS)2005) 贝叶斯概率张量因式分解(SIAM Data Mining 2010) 通过黎曼优化实现低秩张量完成(BIT数值数学54.2(2014))

1
R / mgcv:为什么te()和ti()张量积产生不同的曲面?
的mgcv软件包R具有两个功能,用于拟合张量积相互作用:te()和ti()。我了解两者之间的基本分工(拟合非线性交互与将这种交互分解为主要效果和交互)。我不明白的是为什么te(x1, x2)而ti(x1) + ti(x2) + ti(x1, x2)可能产生(略)不同的结果。 MWE(改编自?ti): require(mgcv) test1 <- function(x,z,sx=0.3,sz=0.4) { x <- x*20 (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+ 0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2)) } n <- 500 x <- runif(n)/20;z <- runif(n); xs <- seq(0,1,length=30)/20;zs <- seq(0,1,length=30) pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30))) truth <- matrix(test1(pr$x,pr$z),30,30) f <- test1(x,z) y <- f + rnorm(n)*0.2 par(mfrow = c(2,2)) # …
11 r  gam  mgcv  conditional-probability  mixed-model  references  bayesian  estimation  conditional-probability  machine-learning  optimization  gradient-descent  r  hypothesis-testing  wilcoxon-mann-whitney  time-series  bayesian  inference  change-point  time-series  anova  repeated-measures  statistical-significance  bayesian  contingency-tables  regression  prediction  quantiles  classification  auc  k-means  scikit-learn  regression  spatial  circular-statistics  t-test  effect-size  cohens-d  r  cross-validation  feature-selection  caret  machine-learning  modeling  python  optimization  frequentist  correlation  sample-size  normalization  group-differences  heteroscedasticity  independence  generalized-least-squares  lme4-nlme  references  mcmc  metropolis-hastings  optimization  r  logistic  feature-selection  separation  clustering  k-means  normal-distribution  gaussian-mixture  kullback-leibler  java  spark-mllib  data-visualization  categorical-data  barplot  hypothesis-testing  statistical-significance  chi-squared  type-i-and-ii-errors  pca  scikit-learn  conditional-expectation  statistical-significance  meta-analysis  intuition  r  time-series  multivariate-analysis  garch  machine-learning  classification  data-mining  missing-data  cart  regression  cross-validation  matrix-decomposition  categorical-data  repeated-measures  chi-squared  assumptions  contingency-tables  prediction  binary-data  trend  test-for-trend  matrix-inverse  anova  categorical-data  regression-coefficients  standard-error  r  distributions  exponential  interarrival-time  copula  log-likelihood  time-series  forecasting  prediction-interval  mean  standard-error  meta-analysis  meta-regression  network-meta-analysis  systematic-review  normal-distribution  multiple-regression  generalized-linear-model  poisson-distribution  poisson-regression  r  sas  cohens-kappa 

1
为什么非负性对于协作过滤/推荐系统很重要?
在我所看到的所有现代推荐器系统中,都依赖于矩阵分解,在用户电影矩阵上执行非负矩阵分解。我能理解为什么非负性对于可解释性和/或想要稀疏因子很重要。但是,如果您只关心预测性能,例如在netflix奖金竞赛中,为什么要施加非负性限制?与在因数分解中也允许负值相比,这似乎更加糟糕。 本文是在协同过滤中使用非负矩阵分解的一个被高度引用的示例。

1
低阶线性系统的快速计算/估计
方程的线性系统普遍存在于计算统计中。我遇到的一种特殊系统(例如,在因子分析中)是 Ax=b一个X=bAx=b 其中 这里d是Ñ × Ñ对角线矩阵具有严格为正对角,Ω是米× 米(具有米« Ñ)对称半正定矩阵,乙是任意Ñ × 米矩阵。我们被要求解决一个被低秩矩阵扰动的对角线性系统(简单)。解决上述问题的幼稚方法是使用伍德伯里公式将A求逆A=D+BΩBT一个=d+乙Ω乙ŤA=D+ B \Omega B^TDdDn×nñ×ñn\times nΩΩ\Omegam×m米×米m\times mm≪n米≪ñm\ll nB乙Bn×mñ×米n\times mAAA。但是,这并不对劲,因为Cholesky和QR因式分解通常可以大大加快线性系统(和法向方程式)的求解速度。我最近提出了以下论文,该论文似乎采用了Cholesky方法,并提到了伍德伯里反演的数值不稳定性。但是,该论文似乎是草稿形式,我找不到数值实验或支持性研究。解决我描述的问题的最新技术水平是什么?

2
通过具有Logistic损失函数的矩阵分解进行协同过滤
考虑协作过滤问题。我们有#users * #items个大小的矩阵如果用户i喜欢项目j,则如果用户i不喜欢项目j,则,并且如果没有关于(i,j)对的数据。我们希望为将来的用户项对预测。中号中号M中号我,Ĵ= 1中号一世,Ĵ=1个M_{i,j} = 1中号我,Ĵ= 0中号一世,Ĵ=0M_{i,j} = 0中号我,Ĵ= ?中号一世,Ĵ=?M_{i,j}=?中号我,Ĵ中号一世,ĴM_{i,j} 标准协作过滤方法是将M表示为2个矩阵乘积,从而ü× Vü×VU \times V| | 中号- U× V||2||中号-ü×V||2||M - U \times V||_2 是最小的(例如,最小化已知元素的均方误差 中号中号M)。 对我来说,逻辑损失函数似乎更合适,为什么所有算法都使用MSE?

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.