标签: svd

python中的稀疏矩阵svd

有谁知道如何在python中的稀疏矩阵上执行svd操作?似乎scipy.sparse.linalg中没有提供此类功能.

python sparse-matrix svd

6
推荐指数
1
解决办法
8023
查看次数

LAPACK SVD(奇异值分解)

你知道任何使用LAPACK的例子来计算SVD吗?

linear-algebra svd lapack

6
推荐指数
1
解决办法
1万
查看次数

Mahout:如何为新用户提供建议

我们计划将Mahout用于电影推荐系统.我们还计划使用SVD进行模型构建.

当新用户来时,我们将要求他/她对一定数量的电影(比如10)进行评分.

问题是,为了向这个新用户提出建议,我们必须再次重建整个模型.

有更好的方法吗?

谢谢

svd mahout

6
推荐指数
1
解决办法
2588
查看次数

Windows环境下LSA\LSI的随机SVD

我正在开展一个包括使用潜在语义分析(LSA)的项目.这需要使用奇异值分解(SVD),有时需要使用大数据集.是否有适用于Windows\Visual Studio环境的随机SVD(rSVD)实现?我看到了一个名为redsvd的项目,但它似乎只在Linux上受支持.

c# svd lsa

6
推荐指数
1
解决办法
934
查看次数

R程序中非常大的矩阵的svd

我在一个txt文件中有一个矩阵60 000 x 60 000,我需要得到这个矩阵的svd.我使用R但我不知道R是否可以生成它.

r matrix svd large-data

6
推荐指数
2
解决办法
3554
查看次数

使用CUDA并行实现多个SVD

我是使用GPU进行并行编程的新手,所以如果问题广泛或模糊,我会道歉.我知道CULA库中有一些并行的SVD功能,但是如果我有大量相对较小的矩阵来分解,应该采取什么策略呢?例如,我有n尺寸矩阵d,n大而d小.如何并行化这个过程?谁能给我一个提示?

parallel-processing cuda gpu svd

6
推荐指数
2
解决办法
4642
查看次数

在潜在语义分析中,如何在截断奇异值后重新组合分解的矩阵?

我正在阅读Matrix分解和潜在语义索引(在线版本©2009 Cambridge UP)

我试图了解如何减少矩阵中的维数.第13页有一个例子,我试图用Python的numpy复制.

让我们将原始出现矩阵"a"和三个SVD(奇异值分解)分解为矩阵"U","S"和"V".

我遇到的麻烦是,在我将"S"中较小的奇异值归零后,当我使用numpy将"U","S"和"V"相乘时,答案并不像pdf中给出的那样.底部3行不是全部为零.有趣的是,当我只是乘以"S"和"V"时,我得到了正确的答案.

这有点令人惊讶,但乘以"S"和"V"实际上是Manning和Schutze的书"统计自然语言处理基础"所说的你必须要做的事情.但这不是pdf在第10页中所说的.

那么这里发生了什么?

nlp linear-algebra svd latent-semantic-analysis

6
推荐指数
1
解决办法
509
查看次数

术语文档矩阵中的SVD不能给出我想要的值

我试图在一篇名为"对LSA的介绍"的论文中复制一个例子: 对LSA的介绍

在示例中,他们具有以下术语 - 文档矩阵:

在此输入图像描述

然后他们应用SVD并获得以下内容:

在此输入图像描述

试图复制这个,我写了以下R代码:

library(lsa); library(tm)

d1 = "Human machine interface for ABC computer applications"
d2 = "A survey of user opinion of computer system response time"
d3 = "The EPS user interface management system"
d4 = "System and human system engineering testing of EPS"
d5 <- "Relation of user perceived response time to error measurement"
d6 <- "The generation of random, binary, ordered trees"
d7 <- "The intersection graph of paths in trees"
d8 <- "Graph …
Run Code Online (Sandbox Code Playgroud)

r matrix text-mining svd lsa

6
推荐指数
1
解决办法
1276
查看次数

内存高效中心稀疏SVD/PCA(朱莉娅)?

我有一个300万x 900万的稀疏矩阵,有数十亿个非零项.R和Python不允许稀疏矩阵具有超过MAXINT非零的条目,因此我发现自己使用Julia.

虽然使用标准偏差来缩放这些数据是微不足道的,但是贬低当然是一种天真的方式,因为这会产生一个密集的200+太字节矩阵.

有关svd的相关代码是julia,访问https://github.com/JuliaLang/julia/blob/343b7f56fcc84b20cd1a9566fd548130bb883505/base/linalg/arnoldi.jl#L398

从我的阅读来看,这段代码的一个关键元素是AtA_or_AAt结构和围绕这些结构的几个函数,特别是A_mul_B!.为方便起见,下面复制

struct AtA_or_AAt{T,S} <: AbstractArray{T, 2}
    A::S
    buffer::Vector{T}
end

function AtA_or_AAt(A::AbstractMatrix{T}) where T
    Tnew = typeof(zero(T)/sqrt(one(T)))
    Anew = convert(AbstractMatrix{Tnew}, A)
    AtA_or_AAt{Tnew,typeof(Anew)}(Anew, Vector{Tnew}(max(size(A)...)))
end

function A_mul_B!(y::StridedVector{T}, A::AtA_or_AAt{T}, x::StridedVector{T}) where T
    if size(A.A, 1) >= size(A.A, 2)
        A_mul_B!(A.buffer, A.A, x)
        return Ac_mul_B!(y, A.A, A.buffer)
    else
        Ac_mul_B!(A.buffer, A.A, x)
        return A_mul_B!(y, A.A, A.buffer)
    end
end
size(A::AtA_or_AAt) = ntuple(i -> min(size(A.A)...), Val(2))
ishermitian(s::AtA_or_AAt) = true
Run Code Online (Sandbox Code Playgroud)

这被传递到eigs函数中,在那里发生了一些魔术,然后输出被处理到SVD的相关组件.

我认为使这个"快速居中"类型设置工作的最佳方法是使用AtA_or_AAT_centered版本的子类AtA_or_AAT,或多或少模仿行为,但也存储列方式,并重新定义A_mul_B!功能恰当.

但是,我并没有非常使用朱莉娅,并且已经遇到了一些难以修改的问题.在我再次尝试深入研究之前,我想知道如果这被认为是一个合适的攻击计划,或者如果在这么大的矩阵上进行SVD​​的简单方法,我是否能得到反馈(我没有看到它,但我可能错过了一些东西).

编辑:我没有修改基础Julia,而是尝试编写一个"中心稀疏矩阵"包来保持输入稀疏矩阵的稀疏结构,但是在各种计算中适当地进入列.它的实施范围有限,而且有效.不幸的是,它仍然太慢,尽管为了优化事物做了一些非常广泛的努力.

sparse-matrix svd pca julia

6
推荐指数
1
解决办法
316
查看次数

numpy svd:有没有办法只找到第一个奇异向量而不是进行完整的 svd?

numpy.linalg.svd 函数给出输入矩阵的完整 svd。不过我只想要第一个奇异向量。

我想知道 numpy 中是否有任何函数或者 python 中的任何其他库?

python numpy scipy svd scikit-learn

5
推荐指数
1
解决办法
1893
查看次数