问题标签 [matrix-factorization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
794 浏览

python - 具有互换行和列的稀疏 Cholesky 分解

我正在使用python 的scikits.sparse.cholmod来获得对称矩阵的 cholesky 分解。

我将cholesky()的结果与 matlab 的chol()进行了比较。结果与某些行和列互换时存在差异。我试图迭代分解以获得特征值,这种差异似乎是有问题的。

这是我的代码:

第一次迭代的下三角矩阵是:

而matlab的下三角矩阵为:

matlab 结果是合理的,因为它导致正确的特征值。在 python 中选择稀疏矩阵的类型我做错了吗?

0 投票
1 回答
246 浏览

numpy - Python Numpy 矩阵更新混淆

这是我的矩阵分解代码的一部分(一个非常奇怪的 nmf 版本)。我的问题是,虽然每次迭代时,我都会保存 W 和 H 矩阵的旧副本,但当我在 W 每次完成更新后比较 old_W 和 W 时,它们实际上是相同的!所以实际的错误输出总是 0 并且 while 循环在第一次迭代后停止。但是,“#print old - new”显示元素 W[r][i] 实际上每次都会更新。我没有看到什么?

0 投票
1 回答
688 浏览

python - 矩阵分解新用户

有人可以指导我使用 Python 库(或另一种语言的论文或源代码)吗?这就是我有一堆关于用户的数据以及他们对大约 100 个对象中的大多数的“分数”。我将对这些数据进行矩阵分解,并将其分解为两个潜在因子矩阵。

我想有一个推荐网站,向用户(我可以获取他们的数据)推荐我的系统认为他们想要的对象。例如,根据我们当前的矩阵和新用户的数据,他的 X 得分为 10,Y 得分为 20,但我的系统预计他的 x 得分为 20,Y 得分为 20,因此它返回 X 作为推荐。

本质上,一旦我学会了矩阵分解,我该如何处理新用户?这是我应该如何使用矩阵分解进行协同过滤吗?谢谢!

0 投票
1 回答
1666 浏览

machine-learning - 协同过滤 - 矩阵分解与皮尔逊相关

对于推荐引擎,这些技术的优点和缺点是什么(矩阵分解:ALS、pearson 或 cossin 相关性)以及我们如何决定使用哪种技术。

0 投票
0 回答
24 浏览

python - 可以用 Python 中的 Nimfa 模型控制旋转吗?

我正在使用 Nimfa 包执行非负矩阵分解,并想知道是否有控制旋转的方法。

即:我想实现一个参数(类似于正矩阵分解中的 FPeak),它可以近似因子分析的旋转模糊性(导致分解中 W 和 H 的非唯一性:V = W * H)

0 投票
1 回答
187 浏览

r - 在 R NMF 包中保存 foreach 循环的输出

我很抱歉,因为我知道这个问题以前曾被问过,但我已经尝试了大多数答案的变体,但没有任何帮助。

我正在使用 foreach 包在一组数据上运行 NMF 算法的循环。我是他们试图使用 ExtractFeatures 函数提取一组基础名称,该函数将每次运行输出为您确定的等级的列表(在我的示例中为 3)。

下面是我的代码(我使用了 NMF Vignette 中的示例数据集):

这会输出提取的基因列表,如下所示:

3次运行3次,但没有保存。有人对我如何保存这些输出有任何建议吗?

提前谢谢你,J

0 投票
0 回答
713 浏览

python - 如何在python中并行for循环?

更新 1.0 开始

打电话的时候好像

传递给函数的参数ALS_Y/ALS_X不是引用,它复制了参数..所以,当XorY非常时large matrixes,例如,在我的情况下,它是6000*40左右(而且它是 a for-loop,让我们假设迭代次数是50 000,所以......) ,它超过了内存的限制。
然后我尝试使用全局参数,只是将索引作为参数传递给函数,

它输出:`

So, this means it still copied一个`!现在,我想知道有没有办法处理这个问题?欣赏!

更新1.0结束


下面是我在 python 中解决矩阵分解问题的代码。W = XY。不过下面的代码效率不高,希望能转成并行版本,用GPU最好,CPU也可以。我对并行编程没有经验,所以有人可以给我一些建议吗?

下面是使用 ALS 分解矩阵的代码(交替最小二乘,详情请点击此处

使用多处理库后,我的代码现在:

但有些苦恼,程序总是无声无息地死机……

下面是我的全部代码.. 一切都乱七八糟。只需忽略load_data get_errorand vec2str,因为在这里我随机生成矩阵..

0 投票
1 回答
636 浏览

linux - windows下如何使用libFM?

谁能解释如何libFM在 windows 下使用,而不是 under Linux

我已经下载libFM了windows版本,但是点击.exe文件,有窗口弹出然后消失了。

如果有人可以分享在windows下使用它的步骤,那就太好了。

谢谢

0 投票
1 回答
4081 浏览

cuda - 使用 CUDA 实现大型线性回归模型

为了分析 10^6 个遗传因素及其 GeneXGene 相互作用 (~5x10^11),我有许多独立的线性回归问题,这些问题可能适合在 GPU 上进行分析。

目标是使用包含交互项的线性回归详尽地搜索 GeneXGene 交互作用在调节结果变量(大脑表型)中的作用。

据我所知,Householder QR 分解可能是拟合回归模型的解决方案,但是,鉴于这项特定工作中的每个回归矩阵都可以轻松接近 ~ 10'000x10 的大小,即使每个单个回归矩阵似乎也不适合 GPU 片上内存(共享、寄存器等)。

我是否应该接受这是一个固有带宽受限的问题,并在回归分析期间将矩阵保留在 GPU 全局内存中,还是其他策略可行?

编辑 以下是有关该问题的更多详细信息:

将有大约 10'000 名受试者,每名受试者都有约 1M 的遗传参数(遗传矩阵:10'000x10^6)。每次迭代中的算法应选择此遗传矩阵的两列 (10'000x2) 以及大约 6 个与遗传数据无关的其他变量(年龄、性别等),因此最终回归模型将处理大小为 10 的矩阵'000x[2(遗传因素)+6(协变量)+2(截距和交互项)] 和结果变量向量(10'000x1)。对于给定的一对遗传因素,每次将重复此相同的过程约 5e11 次。那些通过预定义统计阈值的模型应保存为输出。

具体问题是,尽管有大约 5e11 个单独的回归模型,但即使是单个回归模型似乎也不适合片上存储器。

我还猜想坚持使用 CUDA 库可能不是这里的解决方案,因为这要求大部分数据操作都在 CPU 端进行,并且只将每个 QR 分解发送到 GPU?

0 投票
2 回答
1397 浏览

matrix-factorization - 使用负值的 NMF

当我们有一个负值的数据集时,我们可以应用非负矩阵分解吗?如果是,如何?