分享好友 最新动态首页 最新动态分类 切换频道
golang源码分析:推荐系统gorse(part I)
2024-12-26 20:48

con gorse使纯go实现的一套分布式推荐系统解决方案:

https://github.com/zhenghaoz/gorse,包含了master,worker和server三个部分。

整套模型中包含了三个实体:用户、物料、反馈

用户通过一个ID来唯一标示

物料包含一个时间戳,通过它来判断物料是否过期,Lables是物料的特征

反馈的类型可以是正向、负向或者中性( positive (like), negative (dislike) or neutural (read))

gorse做的事情就是把合适的物料推荐给合适的人:推荐数据包括两部分:个性化推荐和非个性化推荐(popular/latest/similar)。

三个节点的分工非常明确:

master节点负责用所有的物料数据和用户数据以及反馈数据来拆分训练集和测试集,然后训练模型,模型分为两大类:排序和点击预测;训练完毕后通过模型搜索来获取最优模型和参数。同时非个性化推荐也是master节点完成的。推荐结果写入缓存,缓存是用list来维护的,会定期过滤过期的数据。

worker节点 ,通过grpc从master拉取模型数据,还有用户列表,定时分批对每一个用户来计算推荐数据,存入缓存。

server节点提供,提供restful的api接口和swagger文档,前端可以通过接口从缓存中获取当前用户的推荐数据,或者对推荐的数据做出反馈。

以上就是gorse的架构和核心数据,下面结合源码来进行分析。源码目录如下:

master

master 节点的核心逻辑主要包含下面几步

1,训练模型的大循环也分为三个部分

其中排序模型包含三部分的内容

2,最佳模型参数筛选大循环

主要包括两部分的筛选:排序模型和点击预测模型:

排序模型具体有多种

点击预测模型参数搜索也分两步:搜索、计算评分

3,全局非个性化推荐,存入缓存

worker

个性化推荐的逻辑在worker节点上,运用master节点训练的模型数据,来做排序推荐,主要分为下面几步:

1,同步的数据分三类

2,个性化推荐是根据系统的处理能力和用户数量进行分批处理的,处理过程如下

server

其它两个节点主要是离线的,server节点提供在线服务,分为三步

提供http服务包括三个部分

以上就是三个节点的相关核心源码,下面介绍下排序模型和点击预测模型

1,排序模型

gorse实现了4个排序模型

A,als:Alternative -Least-Squares

交替最小二乘法

它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法可用于曲线拟合。

B,bpr:Bayesian Personalized Ranking

基于贝叶斯后验优化的个性化排序算法

BPR算法将用户对物品的评分(显示反馈“1”,隐式反馈“0”)处理为一个pair对的集合<i,j>,其中i为评分为1的物品,j为评分为0的物品。假设某用户有M个“1”的评分,N个“0”的评分,则该用户共有M*N个pair对。

这样数据集就由三元组 <u,i,j>表示,该三元组的物理含义为:相对于物品“j”,用户“u”更喜欢物品“i”。

C,ccd:Cyclic Coordinate Descent (CCD)

是一个启发式的迭代搜索算法,

D,knn:k-Nearest Neighbor

K最近邻分类算法

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的

大多数属于某一个类别,则该样本也属于这个类别

2,点击预测模型

Classification

Regression

分离器:支持k-fold、 比率ratio 、 leave-one-out分离数据集

模型:推荐模型基于协同过滤算法,包括矩阵分解、基于临接的方法、Slope One、Co-Clustering2

评估:可使用RMSE、 MAE来评分,包括准确率Precision、召回率Recall、归一化折损累积增益NDCG、MAP、MRR、AUC

参数搜寻:使用方式网格搜索grid search 或 随机搜索random search寻找最佳超参数

最新文章
厦门大数匠教育
H5数据可视化课程
用AI生成超逼真美女写真,轻松get你的AI女友!
DreamlikeDreamlike是一款近期备受追捧的AI图像生成工具,其特点在于可以生成超逼真的人物照片。用户只需输入一些简单的文本描述,AI就能根据指令生成相应的图像。其生成的图像在细节表现上堪称一绝,甚至连肌肤的纹理、光影的变化都处理得
青牛电话销售手机卡批发零售
作为一名电销卡运营商,我深深体会到了电销卡在现代通讯中的重要性。无论是个人还是企业,电话通讯都是必不可少的一环。而电销卡的出现,则为我们带来了许多优势和便利。电销卡可以被分为三种类型,分别是流量卡、注册卡和红包卡。其中流量
通达信指标公式源码主力追踪指标.doc
多线:27;空线:55;P:=((2)*(CLOSE) + HIGH + LOW + OPEN)/(5);BB:=MA(P,3);CC:=(SUM(IF((PREF(P,1)),(P)*(VOL),0),4))/(SUM(IF((PREF(P,1)),(P)*(VOL),0),4));DD:=REF(100 - (100)/(1 + CC),1);A1:=HHV(P,15);A2:=LLV(P,15);A3:=A1 - A2;A4:
白云网站排名优化公司,提升网站排名的专业策略与实践,白云网络科技有限公司
白云网络科技有限公司是一家专注于网站排名优化的公司,提供提升网站排名的专业策略与实践。公司拥有一支经验丰富的团队,通过优化网站内容、提升网站质量、建立外部链接等方式,帮助客户提高搜索引擎排名,从而增加网站流量和曝光率。公司
快手引流获客软件——以用户体验为核心的增长引擎
随着互联网的快速发展,越来越多的企业开始意识到通过快手引流获客软件来提升用户体验的重要性。快手引流获客软件作为一种增长引擎,可以帮助企业快速吸引潜在用户,增加用户粘性,并提升用户转化率。下面将从三个方面介绍如何通过快手引流
如何触发亚马逊店铺二审?实用技巧与方法全解析!
最近,亚马逊店铺的二审问题似乎稍有缓和,但依然是许多卖家心中的一块“绊脚石”。尽管情况有所改善,二审依旧令不少亚马逊卖家感到困惑和焦虑。在此背景下,XX互联的注册部门自6月初便开始积极探索应对二审的策略,然而直至今日,依然未
百度地图北斗导航最新版
百度地图北斗导航最新版本app支持在这浏览到很多的导航信息,全部的城市位置都可以帮你定位到,城市布局也是很清晰的,最全的道路给你来切换,不同的模式给你来切换,多样化供你切换。1、应用程序结合了AR技术和GPS定位技术,导航也是带你
白茶一斤售价如何才能不亏本
其次,合理安排生产计划也是提高生产效率的重要手段。根据市场需求量进行合理预测,并制定相应的采摘和加工计划,避免资源浪费和库存积压。供应链管理对于降低成本、提升竞争力至关重要。建立稳定可靠的供应链网络能够确保原材料及时到达并
SEO介绍质量,详细分析关键词布局的艺术
在当今互联网时代,搜索引擎优化(SEO)已经成为企业提升网站排名、增加流量、提高品牌知名度的重要手段。SEO的核心在于对网站内容的优化,而的则是优化过程中的关键环节。本文将从关键词布局的角度,探讨如何进行SEO评估,以提升网站质量
相关文章
推荐文章
发表评论
0评