问题标签 [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.
python - 最小化:如何有效地做
如何在python,numpy中有效地进行这种最小化(在图像中给出)我有维度矩阵1600 * 900
并且想要计算最佳可能的U和V
java - Cholesky 分解在 Java 中生成 NaN
我不确定这是 maths.se 还是 SO 问题,但我会选择 SO,因为我认为它与我的 Java 有关。
我正在关注一本关于高斯过程 ( R&W )的教科书,并在 Java 中实现了一些示例。几个示例的一个常见步骤是生成协方差矩阵的 Cholesky 分解。在我的尝试中,我可以获得最大尺寸有限(33x33)的矩阵的成功结果。然而,对于任何更大的 NaN 出现在对角线(在 32,32 处),因此矩阵中的所有后续值同样是 NaN。
代码如下所示,cholesky
方法中注明了NaN的来源。本质上,协方差元素a[32][32]
为 1.0,但 的值sum
略高于此 (1.0000001423291431),因此平方根是虚数。所以我的问题是:
- 这是线性代数的预期结果,还是我实现的人工制品?
- 在实践中如何最好地避免这个问题?
请注意,我不是在寻找要使用的库的建议。这只是为了我自己的理解。
道歉的长度,但我试图提供一个完整的 MWE:
python - 让 nans 了解如何使用 lu 分解来求解奇异方阵?
我有奇异矩阵A(10 * 10),它是秩不足的(rank = 9),我有向量b,它在A的范围空间中。现在我对Ax = b的一些解决方案感兴趣。具体来说,这里是我的 A
b 是使用 生成的A.dot(np.ones(10))
。现在我想使用 lu 分解来解决这个问题,为此我做了以下
这使
在这种情况下, lu_factor 似乎也可以正常工作(有时它确实会给出运行时警告,说“对角线数 %d 正好为零。奇异矩阵”)。为了完整起见,这里是从 lu_factor 验证 PLU 的代码与 A 相同:
现在我知道我的矩阵是奇异的,并且我的问题有无数种解决方案。但是我对任何解决方案都感兴趣,我只是很困惑为什么 lu 分解失败,它不能将自由变量设置为 0 并按照我们的教导找到一些解决方案吗?还有什么是运行时警告 “对角线数 %d 正好为零。奇异矩阵”。注意我对解决这个问题的 svd/qr 方法不感兴趣,我只是想知道为什么 lu 对于奇异矩阵会失败。非常感谢任何建议。谢谢。
python-3.x - 带二进制输入的 ALS
我有一个使用 Spark ALS 构建的协作系统。我想根据用户购买的产品向用户推荐套装产品,而不是评级。所以我为用户购买的所有产品设置了1。并建立了一个ALS系统。预测的得分大于 1,rmse 为 0.99。我设置了implicitprefs = True。请在下面找到代码。rmse 为 0.99 是不是太高了。这是一个正确的方法吗?
注意:我使用 for 循环改进了迭代和排名参数。
python - Lightfm:处理用户和项目冷启动
我记得 lightfm 的一个优点是模型不会出现冷启动问题,用户和项目都冷启动:lightfm 原论文
但是,我仍然不明白如何使用 lightfm 来解决冷启动问题。我在user-item interaction data
. 据我了解,我只能对我的数据集上存在的 profile_ids 进行预测。
任何有助于我理解的建议或指示将不胜感激。谢谢你
python - 使用 Tensorflow 基于矩阵分解的推荐
我是张量流的新手,正在探索使用张量流的推荐系统。我已经在 github 中验证了一些示例代码,并且遇到的情况与以下内容大致相同
https://github.com/songgc/TF-recomm/blob/master/svd_train_val.py
但问题是,如何在上述代码中为用户 U1 选择最佳推荐?
如果有任何示例代码或方法,请分享。谢谢
java - 来自 kafka 流的 spark 应用程序需要很长时间才能产生推荐
我正在从 kafka 流中读取我的 spark 应用程序中的数据流。我的要求是在用户提出任何请求(搜索/浏览等)时为他提供产品推荐
我已经有一个包含用户分数的训练模型。我正在使用 Java 和 org.apache.spark.mllib.recommendation.MatrixFactorizationModel 模型在我的 spark 应用程序启动时读取模型一次。每当有任何浏览事件时,我都会调用 RecommendationProducts(user_id, num_of_recommended_products) API 从我已经存在的训练模型中为用户生成推荐。
这个 API 需要大约 3-5 秒来为每个用户生成结果,这非常慢,因此我的流处理落后了。有什么方法可以优化这个 API 的时间吗?我正在考虑将流持续时间从 15 秒增加到 1 分钟作为优化(现在不确定它的结果)
python - 非常大和非常稀疏的非负矩阵分解
我有一个非常大且稀疏的矩阵(531K x 315K),总细胞数约为 1670 亿。非零值只有 1。非零值的总数约为 45K。是否有有效的 NMF 包来解决我的问题?我知道有几个包,它们只适用于小尺寸的数据矩阵。任何想法都有帮助。提前致谢。
python - sklearn train_test_split; 保留训练集中列中的唯一值
有没有一种方法可以sklearn.model_selection.train_test_split
用来保留训练集中特定列的所有唯一值。
让我举个例子。我知道的最常见的矩阵分解问题是在Netflix Challenge或Movielens数据集中预测用户的电影评分。现在这个问题并不真正围绕任何单一的矩阵分解方法,但在可能性范围内,有一个小组将只对已知的用户和项目组合进行预测。
例如,在 Movielens 100k 中,我们有 943 个独立用户和 1682 个独立电影。如果我们train_test_split
甚至使用高train_size
比率(例如 0.9),唯一用户和电影的数量也不会相同。这带来了一个问题,因为我提到的这组方法对于未经训练的电影或用户只能预测 0。这是我的意思的一个例子。
尽可能多地尝试这个,你最终不会在火车组中得到 1682 部独特的电影。这是由于许多电影在数据集中只有一个评分。幸运的是,用户的情况并非如此(用户的最低评分为 20),所以这不是问题。但是为了有一个有效的训练集,我们需要所有独特的电影至少在训练集中出现一次。此外,我无法使用stratify=
kwarg,train_test_split
因为所有用户或所有电影的条目不超过 1 个。
我的问题是这个。
sklearn 中是否有办法拆分数据集以确保来自特定列的唯一值集保留在训练集中?
我对该问题的基本解决方案如下。
- 将/用户的总评分数较低的项目分开。
- 在不包括这些很少评分的项目/用户的数据上创建一个
train_test_split
(确保拆分大小 + 排除大小将等于您想要的拆分大小)。 - 将两者结合得到最终的代表性训练集
例子:
这种方法有效,但我只是觉得有一种方法可以使用train_test_split
sklearn 或另一种拆分方法来完成相同的操作。
警告 - 数据包含用户和电影的单个条目
虽然@serv-inc 提出的方法适用于每个类都表示不止一次的数据。该数据不是这种情况,大多数推荐/排名数据集也不是这种情况。
julia - 在 Julia 中计算稀疏矩阵的对数行列式
我有兴趣计算大型、稀疏、复杂(浮点)矩阵的行列式的对数。我的第一个想法是使用 LU 分解,即:
这将始终打印出“不正确”选项。此外,
总是假的。
相反,如果我尝试直接使用
或者
我收到一个错误:
我不确定我的编码方式是否有问题(我是从 matlab 过渡的初学者),或者我的 Julia 安装是否有问题(尽管我已经在另一台计算机上复制了这些结果)。你能给我的任何指示都会很棒!