问题标签 [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.
r - 我的相关矩阵的 Cholesky 分解失败
我试图用它chol()
来找到下面相关矩阵的 Cholesky 分解。我可以使用该功能的最大尺寸吗?我问是因为我得到以下信息:
但是,我可以毫无问题地将其分解为少于 60 个元素(即使它包含原始元素的第 61 个元素):
这是矩阵:
https://drive.google.com/open?id=0B0F1yWDNKi2vNkJHMDVHLWh4WjA
collaborative-filtering - 在我的场景中构建基于显式反馈协同过滤的rec系统有意义吗?
我对哪一种隐式和显式反馈适合我的场景感到困惑。我倾向于为拥有 1400 万客户和 1000 万种产品的公司(电子商务)制作实用的娱乐系统。但显式评分数据仅涵盖 220 万客户和 150 万产品。过去 1 年有 1070 万客户购买了 370 万件产品。那么让我困惑的是构建基于显式反馈的rec系统是否有意义?
python - Tensorflow中用于矩阵分解的“最优”变量初始化和学习率
我正在 Tensorflow 中尝试一个非常简单的优化——矩阵分解的问题。给定一个矩阵V (m X n)
,将其分解为W (m X r)
和H (r X n)
。我从这里借用了基于梯度下降的基于张量流的矩阵分解实现。
关于矩阵 V 的详细信息。在其原始形式中,条目的直方图如下:
为了使条目的范围为 [0, 1],我执行以下预处理。
我的问题是:
- 鉴于数据的性质:介于 0 和 1 之间以及大多数条目接近 0 而不是 1,对于
W
和的最佳初始化是H
什么? - 应该如何根据不同的成本函数定义学习率:
|A-WH|_F
和|(A-WH)/A|
?
最小的工作示例如下:
因此,V_df 看起来像:
现在,定义 W、H 的代码
定义成本和优化器:
运行会话:
我意识到当我使用类似的东西时initializer = tf.random_uniform_initializer(maxval=V_df.max().max())
,我得到了矩阵 W 和 H,它们的乘积远大于 V。我还意识到将学习率 ( lr
) 保持在 .0001 可能太慢了。
我想知道是否有任何经验法则可以为矩阵分解问题定义良好的初始化和学习率。
r - 半正定矩阵 Cholesky 分解中枢轴的正确使用
我不明白如何使用chol
R 中的函数来分解正半定矩阵。(或者我这样做,并且有一个错误。)文档指出:
如果 pivot = TRUE,则可以计算半正定 x 的 Choleski 分解。x 的排名以 attr(Q, "rank") 形式返回,但会出现数值错误。枢轴作为 attr(Q, "pivot") 返回。t(Q) %*% Q 不再等于 x。但是,设置 pivot <- attr(Q, "pivot") 和 oo <- order(pivot),确实 t(Q[, oo]) %*% Q[, oo] 等于 x ...
以下示例似乎与此描述不符。
结果不是x
。我是否错误地使用了枢轴?
python - 如何在python中从预定义的W和V(在W * H〜= V中)计算矩阵H的NMF?
我有 W 的基础稀疏矩阵和 V 的输入矩阵(在 W * H ~= V 中)。如果我只想获得 H,那么 pythonic 的方法是什么?
更新:我是由 Nimfa 做的,发现它总是返回 W 和 H。我还检查了 Scikitlearn,但仍然找不到修复 W 和 V 以仅返回 H 的方法。可能有人指定如何使用这些包或其他方式来做这个?
opencv - 重构 OpenCV RQDecomp3x3 的结果
RQDecomp3x3
在 OpenCV中运行后,您将获得:
如何从三个旋转矩阵 ( Qx
, Qy
, Qz
) 回到原始输入矩阵?
或者在输入矩阵是旋转矩阵的情况下,mtxR
将是单位矩阵,那么如何从三个旋转矩阵转到mtxQ
?
尽管我不明白为什么需要转置,但已更新答案。
c - Matlab ldl(B,v) 函数到 C
我正在将 Matlab 代码转换为 C 代码,但我遇到了这个用于矩阵分解的函数。
其中B
,是矩阵,L
是下三角形,D
是上三角形,而是pm
置换。我找到了分解的 C 实现,但没有排列。
你能告诉在哪里可以找到它吗?
r - R中随机指数相关矩阵的Cholesky分解
我有一组使用以下代码创建的指数相关矩阵。
现在我想得到他们的 Cholesky 分解。但其中许多是负确定的。我该如何解决这个问题?
machine-learning - 带有 --lrq 选项的 vowpal wabbit 中的一次与迭代模型
我正在使用带有低秩二次选项 (--lrq ) 的 vowpal wabbit 逻辑回归进行 CTR 预测。我已经用两种情况训练了模型
- 使用命令一次建模
vw -d traning_data_all.vw --lrq ic2 --link logistic --loss_function logistic --l2 0.0000000360911 --l1 0.00000000103629 --learning_rate 0.3 --holdout_off -b 28 --noconstant -f final_model
- 我已经将训练数据分成 20 个块(按天计算)并以迭代方式构建模型(使用选项 -i 和 --save_resume)。
第一步:-
vw -d traning_data_day_1.vw --lrq ic2 --link logistic --loss_function logistic --l2 0.0000000360911 --l1 0.00000000103629 --learning_rate 0.3 --holdout_off -b 28 --noconstant -f model_1
接着
等等最多20次迭代
第一种情况运行良好,但在第二种情况下,预测在 7-8 次迭代后趋于 1 或 0(仅)。我需要第二个场景工作,因为我想经常更新模型。l1、l2 和 learning_rate 由 vw-hypersearch 脚本优化。
请帮助我如何解决这个问题。我错过了什么吗?我试过选项--lrqdropout.
scikit-learn - 当我使用 sklearn 并行模块“来自 cdnmf_fast import _update_cdnmf_fast”时,它的并行化不起作用
(这是我第一次提问,如果您觉得标签或描述有问题,请告诉我,谢谢!)
我正在做一个工作Matrix Factorization
并使用模块sklearn.decomposition.nmf
该模块使用另一个模块
from sklearn.decomposition.cdnmf_fast import _update_cdnmf_fast
这个模块来自文件cdnmf_fast.so
你可以在这个网站上查看它的源代码
/sklearn/decomposition/cdnmf_fast.pyx
我们可以看到它使用C语言和“ with nogil:",所以我认为它必须使用并行化。所以我写了一个类似的代码来测试它,如下所示:
预期结果是 X=X+VW*U=0+V-0=V。但是,结果很奇怪,而且比 np.dot() 慢得多。然后我把这段代码改成普通的python代码,而不是并行化代码。结果和以前一样。所以我确信它的并行化不起作用。因为它在改变 X 的同时使用了 X,所以结果当然是错误的。我不知道为什么它的并行化不起作用。是由于模块的错误还是我导入方式的方法?
实际上,当我使用 sklearn.decomposition.nmf 模块时,这让我很担心,我不确定我什么时候使用这个模块,它的并行化是否也不起作用。所以我想知道它是如何使并行化工作的。
谢谢您的帮助!