留一法评估 HR 与 NDCG

  Posted by Mr.Zhangon 02 Aug, 2019

   PYTHON   

所谓留一法(leaveoneout cross validation)是指每次只留下一个样本作测试集,其它作为训练集,在推荐系统的模型评估中,计算命中率(hate ratio,HR)和归一化折损累积增益(Normalized Discounted Cumulative Gain,NDCG)所用时间很久,普遍采用留一法。 在MovieLens数据集中,根据时间戳保留最后一个项目评估,可以使用下列方法得到训练和测试数据集: python df.sortvalues(by='user', 'timestamp', axis=0, ascending=Tr[...]

NeuMF 的 gluon 实现

  Posted by Mr.Zhangon 30 Jul, 2019

   MXNET   

Xiangnan He et al.,2017,Neural Collaborative Filtering(http://dl.acm.org/citation.cfm?id=3052569)论文的gluon复现,原作的代码github(https://github.com/hexiangnan/neuralcollaborativefiltering/)。NeuMF模型分为两块:GMF与MLP,具体架构如下图: NeuMF(/static/upload/201907/NeuMF.png) 本文作二分类问题,user与item分别embedding后丢入GMF作内积;丢入MLP学[...]

基于贝叶斯概率模型推荐算法 Bayesian Personalized Ranking

  Posted by Mr.Zhangon 22 Jul, 2019

   STATISTICS   

参考论文:Rendleetal2009BayesianPersonalizedRanking 基本概念 隐式反馈是指用户浏览、购买等反馈数据,通常是二值形式;显式反馈通常指评分数据,为一段区间的数值评分 假设$n$个用户集合$U=\{u1,u2,...,un\}$ $m$个项目集合$I=\{i1,i2,...,im\}$ 用户对项目显式评分数据为一个$n\times m$维的矩阵$R$表示,$r{u,i}$表示用户$u$对项目$i$的评分 对偶的,定义隐式反馈矩阵$D$,其中$d{u,i}\in\{0,1\}$,$d{u,i}=1$表示用户$u$对项目$i$有[...]

mxnet 混合编程

  Posted by Mr.Zhangon 24 Jun, 2019

   MXNET    PYTHON   

深度学习几个python库,可以分为命令式编程和符号式编程,前者以PyTorch为代表,后者主要是Tensorflow,符号式编程不易理解与调试,所以Keras成为大多数人的选择,目前官方支持中文文档。除此之外,还有一种选择,那就是mxnet,支持两类模式的混合编程,很好很强大。 在设计模型时候,可以符号式方法丢数据进去看看中间量;正式跑参数的时候可以调用hybridize函数加速性能,减少等待时间,十分适合炼丹。官方介绍地址是: , 感觉太过简略。 一个简单模型设计: python class MLP(gluon.HybridBlock): 使用混[...]

h5py 批量存储数据

  Posted by Mr.Zhangon 19 Jun, 2019

   PYTHON   

最近做个数据处理任务,50万条数据,独热编码6000维,numpy用uint8勉强内存里能跑,硬盘缓存大的惊人,想用批量处理,批量硬盘读写的方法来做,管理比较麻烦。用mxnet做批数据迭代,发现支持HDF5格式,查一查果然好东西,而且这本来就是设计用来做数据分析用的。 使用h5py可以轻易的创建和读取h5格式文件,两个主要概念group和dataset对应于常用的文件夹和数据库,下面示例是如何批量追加到文件中,避免内存溢出。 python import numpy as np import h5py def saveh5(h5f,data,target): shap[...]

traefik 域名路由及 jupyter 远程访问

  Posted by Mr.Zhangon 12 Jun, 2019

   DOCKER   

traefik真是一个好东西啊,动态监听和管理微服务。可以方便的路由二级域名,并支持多个域名的SSL证书,只需要添加证书位置即可,如下: toml defaultEntryPoints = "http", "https" entryPoints entryPoints.http address = ":80" entryPoints.http.redirect entryPoint = "https" entryPoints.https address = ":443" [...]

Pagination