问题标签 [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.
machine-learning - 一个标签上的 Vowpal Wabbit 矩阵分解
我追求的是网络推荐系统,比如“相关产品”。根据用户购买的商品,我想根据其他用户购买的商品查找相关商品。我按照 MovieLens 教程(https://github.com/JohnLangford/vowpal_wabbit/wiki/Matrix-factorization-example)制作推荐系统。
在上面的例子中,用户给电影打了一个分数(1-5)。然后,该模型可以预测用户会给特定项目的分数。
另一方面,我的数据只知道用户喜欢什么。我不知道他们不喜欢什么,也不知道他们有多喜欢某样东西。所以我尝试发送 1 作为我所有条目的值,但这只会给我一个模型,它在每个预测中都返回 1。
关于如何构建数据以便我可以预测用户喜欢 0 到 1 之间的项目的可能性有什么想法吗?
示例数据:
训练命令:
decomposition - 我们可以用张量分解做什么?
我有三个关于张量分解的问题。
- 张量分解(分解)的情况(或应用)是什么?
- 这在未来成为主流技术的可能性有多大?
- 你如何使用它?
keras - 在 Keras 中实现矩阵分解时的奇怪行为
我正在使用 Keras 为推荐实现一个简单的矩阵分解模型。我在运行模型时发现了一些奇怪的行为:
- 用户和物品的潜在因素趋向于零向量。
- 即使我只尝试拟合非零值(其值为 1),这些潜在因素仍然为 0。更奇怪的是,即使真实值(始终为 1)和预测值之间的差异,训练和验证损失也会减少(这是用户和项目潜在因素之间的点积)应该增加(因为这些潜在因素正在变为零)。我使用“mse”作为损失指标。
我不知道发生了什么。如果有人以前遇到过这个问题,如果您能分享您的解决方案,我将不胜感激。(对不起,我不能发布我的代码,因为它很乱)。谢谢你。
python - python中的稀疏矩阵命名行/列-用于Python中的分类特征和矩阵分解
在机器学习算法中,您经常处理稀疏数据集,例如来自分类数据(例如电影名称),而稀疏矩阵处理大部分功能。
是否有一些为机器学习用例包装 scipy.sparse 矩阵的库?
我看到的两个主要缺失功能是:
命名行/列(即,您可以识别例如电影名称,而不是使用整数 ID)
在保留索引的同时进行子集化。例如,如果我从一个大的 50000 行稀疏矩阵中选择 2 个电影 id(第 500 行和第 1000 行),我想返回一个只有第 500 行和 1000 行非空的 50000 行稀疏矩阵,以便保留映射/名称。
但我怀疑还有其他我还没有发现...
matrix - Julia 如何使用 Lufact 解决 Ax=b
我想为稀疏矩阵重新创建一个求解函数(求解 Ax = b for x)。在 Julia 文档中,它说当我们将稀疏矩阵应用于 lufact() 时,它返回以下内容:
使用 Julia doc 中给定的公式:LU = Rs.*A[p,q],我做了一些代数并得到以下公式:
当矩阵密集时,此公式与 Julia 中的默认 F\b 求解器匹配,但当矩阵稀疏时,结果关闭。有谁知道为什么?
python - 评估 LightFM 推荐模型
我玩lightfm已经有一段时间了,发现生成推荐真的很有用。但是,我想知道两个主要问题。
在推荐排名很重要的情况下评估 LightFM 模型,我应该更多地依赖
precision@k
或其他提供的评估指标,例如AUC score
?precision@k
与其他指标相比,在哪些情况下我应该专注于改进我的指标?或者它们是否高度相关?这意味着如果我设法提高我的precision@k
分数,其他指标也会随之而来,对吗?WARP
如果使用损失函数训练的模型的得分为 0.089,您将如何解释precision@5
?AFAIK,Precision at 5 告诉我前 5 个结果中有多少是积极的/相关的。这意味着precision@5
如果我的预测无法进入前 5 名,我将得到 0,或者如果我在前 5 名中只有一个预测正确,我将得到 0.2。但我无法解释 0.0xx 的含义precision@n
谢谢
julia - Julia 中 LowRankApprox 的问题
我正在尝试使用 Julia v0.6.0 中的 LowRankApprox.jl 包提供的 pheigfact 函数进行 Hermitian 特征分解。基本上,它只是一行代码,例如:
其中 A 是实对称正定矩阵。但是,我收到以下错误:
感谢任何帮助!
machine-learning - 我在矩阵分解中检测过度拟合的方法是否正确?
我使用矩阵分解作为基于用户点击行为记录的推荐系统算法。我尝试了两种矩阵分解方法:
第一个是基本 SVD,其预测只是用户因子向量u和项目因子i的乘积:r = u * i
我使用的第二个是带有偏置分量的 SVD。
r = u * i + b_u + b_i
其中b_u和b_i表示用户和项目的偏好偏差。
我使用的一种模型性能非常低,另一种是合理的。我真的不明白为什么后者表现更差,我怀疑它是否过度拟合。
我搜索了检测过拟合的方法,发现学习曲线是一个好方法。但是,x 轴是训练集的大小,y 轴是准确度。这让我很困惑。如何更改训练集的大小?从数据集中挑出一些记录?
另一个问题是,我试图绘制迭代损失曲线(损失是 )。看起来曲线是正常的:
但我不确定这种方法是否正确,因为我使用的指标是准确率和召回率。我应该绘制迭代精度曲线吗???或者这个已经告诉我我的模型是正确的?
谁能告诉我我是否朝着正确的方向前进?太感谢了。:)
julia - Julia-Lang 如何求解三对角系统
我是 Julia-Lang 的新手,我试图在 Julia 中多次求解对称三对角系统,所以我将矩阵组装为
我的系统中的变化是右手边。所以我尝试在这个线程上使用 Chris Rackauckas 解决方案,我引用:
只需执行 X=lufact(X) 然后 X\b
问题是,当我这样做时,我得到
所以我的问题是:什么是对 lufact 进行归因的正确方法!功能
python - 在 Python 中计算低秩近似
给定一个维度为 nxn 的矩阵 M,我如何计算一个低秩分解,使得 M = LT * L,其中 L 的维度为 kxn。到目前为止,我只看到使用 SVD 完成此操作,这并不是我想要的,因为该方法给了我 M = U S V 和 UT != S*V,而不是 (LT).T == L .
另一种选择可能是使用某种形式的优化来找到 L,但这并不简单,因为我已经尝试了 SciPy 的几种优化方法,在 frobenius 范数下具有差异 M - LT * L,到目前为止我还没有没有成功。
编辑:我忘了通过使用 scikit 的非负矩阵分解类来补充这一点,我可以通过将 L 和 LT 作为优化的候选矩阵传递来部分地实现这一点。但是,我的矩阵 M 不是非负数,因此这种方法对我不起作用。