Collaborative topic modeling(推荐)算法实现中的大数组问题
本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 。
以下内容是个人的论文阅读笔记,内容可能有不到之处,欢迎交流。
未经本人允许禁止转载。
问题背景
最近,在使用Java实现一个个性化推荐算法时,遇到了非常常见的问题。实现的算法为:
Wang C, Blei D M. Collaborative topic modeling for recommending scientific articles[C]//Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2011: 448-456.
该算法主要针对的是科研文章的推荐问题。
在算法的公式推理中,即:
)
其中,CiC_{i}Ci为J∗JJ*JJ∗J的对角矩阵。对角矩阵上的值为:
由于我用的数据集包含16800左右的商品,即CiC_{i}Ci的维度为16800*16800。在算法实现的过程中,我已对其他变量做了初始化。
在产生该对角阵时,我是用了下面的操作方式:
public RealMatrix matrixCEachUser(int u){double[][] cUserNew = new double[M][M];for (int i = 0; i < rating[u].length; i++) {cUserNew[rating[u][i]][rating[u][i]] = 0.99;}for (int i = 0; i < M; i++) {if (cUserNew[i][i] < 0.5) {cUserNew[i][i] = 0.01;}}RealMatrix mat1 = new Array2DRowRealMatrix(cUserNew).transpose();return mat1;}
即如果rij=1r_{ij}=1rij=1,则该对角上的值为0.99,否则为0.01。但在实际产生这个大对角阵时,却出现了内存溢出,即:
Java heap space
同时,调整VM也没有解决。
为此,需要寻找更好的解决方案。
解决方案
为了防止内存溢出,能够进行矩阵运算,我这里使用了math3中的DiagonalMatrix类。在使用时,我将二维数组变成了一维数组,之后直接产生对角阵。解决的程序如下面所示:
//get matrix C_i: a diagonal matrixpublic RealMatrix matrixCEachUser(int u){double[] cUserNew = new double[M];for (int i = 0; i < rating[u].length; i++) {cUserNew[rating[u][i]] = 0.99;}for (int i = 0; i < M; i++) {if (cUserNew[i] < 0.5) {cUserNew[i] = 0.01;}}DiagonalMatrix matrix = new DiagonalMatrix(cUserNew);return matrix;}
Collaborative topic modeling(推荐)算法实现中的大数组问题相关推荐
- Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发
Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...
- 在线音乐推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化音乐推荐系统 音乐网站+协同过滤推荐算法 机器学习、分布式大数据、人工智能开发
在线音乐推荐网 Python+Django+Mysql开发技术 基于用户.物品的协同过滤推荐算法 个性化音乐推荐系统 音乐网站+协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 MusicRec ...
- 简单在线音乐推荐网 基于用户、物品的协同过滤推荐算法 使用Python+Django+Mysql开发技术 在线音乐推荐系统 音乐网站推荐系统 个性化推荐算法开发 人工智能、大数据分布式、机器学习开发
简单在线音乐推荐网 基于用户.物品的协同过滤推荐算法 使用Python+Django+Mysql开发技术 在线音乐推荐系统 音乐网站推荐系统 个性化推荐算法开发 人工智能.大数据分布式.机器学习开发S ...
- 【推荐算法课程】CS246 大数据挖掘
文章目录 一.课程介绍 二.作者介绍 三.具体章节 四.小结 一.课程介绍 重点~课程对应教材(pdf可下载):http://www.mmds.org/ CS246主题包括: 频繁项集和关联规则,高维 ...
- 有关堆栈溢出(in vs 2005)的读书笔记--堆栈中 申请大数组
部分原创 66下一步 Vs 堆栈 理论修改的上限是多少 ? 问题2: 全局变量去 最大的上限是多少? 堆栈(休养版本测试) 2012年3月31日17:31:27 3月 从 10^5到 10^6数组,导 ...
- 深度学习在推荐算法上的应用进展
作者:赵鑫,中国人民大学信息学院讲师,微博:赵鑫RUC. 原文:RUC智能情报站 | 深度学习在推荐算法上的应用进展 摘要:最近几年是深度学习发展的黄金时间,在多个领域取得了重要进展,包括图像领域.语 ...
- (一)推荐算法概述——以协同过滤为主
推荐算法具有非常多的应用场景和商业价值,因此对推荐算法需要认真学习.推荐算法种类很多,但是目前应用最广泛的应该是基于协同过滤的推荐算法. 本文总结了多种推荐算法,其中重点对协同过滤的推荐算法做一个概括 ...
- 基于SVD++隐语义模型的信任网络推荐算法
点击上方蓝字关注我们 基于SVD++隐语义模型的信任网络推荐算法 陈佩武1, 束方兴2 1 平安科技(深圳)有限公司,广东 深圳 518031 2 北京大学互联网研究院(深圳),广东 深圳 51805 ...
- 从原理到落地,七大维度读懂协同过滤推荐算法
作者丨gongyouliu 来源 | 大数据与人工智能 导语:本文会从协同过滤思想简介.协同过滤算法原理介绍.离线协同过滤算法的工程实现.近实时协同过滤算法的工程实现.协同过滤算法应用场景.协同过滤算 ...
最新文章
- 自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)
- MariaDB 宣布成立基金会
- php cms word导入,phpcms V9文章编辑器不能按word文档复制过来的段头缩进显示
- OS_CORE.C(3)
- Docker将镜像上传至私有仓库
- 你发这些什么目的_吸引女生冷知识:朋友圈发照片的“潜规则”,男生要懂
- HDU 5936 Difference
- Mathematica修改默认字体
- CTO职场解惑指南系列(一)
- (转)Spring Boot(十一):Spring Boot 中 MongoDB 的使用
- fibonacci数列前20项_数学第十七课:数列综合应用第一弹
- AttributeError: module ‘tensorflow.python.layers.base‘ has no attribute ‘Node‘
- 项目lib上传maven仓库配置
- istio sidecar流量接管_istio 常见的 10 个异常
- 人民网app搜索案例
- iptables中DNAT、SNAT和MASQUERADE的理解及限速syn
- pythonurllib新浪微博_定向爬虫 - Python模拟新浪微博登录
- 深度学习整理:detection 学习(2)——detection细节知识入门
- 淘宝运营的逻辑与本质是什么?
- [025] 微信公众帐号开发教程第1篇-引言