【发布时间】:2015-07-15 23:04:42
【问题描述】:
我正在实施矩阵分解来预测评论者对电影的评分。数据集取自 MovieLen (http://grouplens.org/datasets/movielens/)。这是一个经过充分研究的推荐问题,所以我只是为了学习目的实现了这种矩阵分解方法。
我将成本函数建模为训练数据集中预测评分和实际评分之间的均方根误差。我使用 scipy.optimize.minimize 函数(我使用共轭梯度下降)来分解电影评分矩阵,但是即使对于只有 100K 个项目的数据集,这个优化工具也太慢了。我计划为包含 2000 万个项目的数据集扩展我的算法。
我一直在寻找基于 Python 的随机梯度下降解决方案,但我在 scikit-learn 上找到的随机梯度下降不允许我使用自定义成本和梯度函数。
我可以实现我自己的随机梯度下降,但我正在与你们核实是否已经存在执行此操作的工具。
基本上,我想知道是否有类似这样的API:
optimize.minimize(my_cost_function,
my_input_param,
jac=my_gradient_function,
...)
谢谢! 不
【问题讨论】:
-
您应该看两件事:(1) 矩阵库是否是矢量化/并行化的;(2) 梯度步长的收敛性。绘制成本函数与迭代的关系图,看看步长是否可以让它更快。您可能采取了太多的小步骤来收敛到一个解决方案。
-
感谢您的回复。关于步长的要点。
标签: machine-learning scikit-learn gradient-descent