现在搭一个小的推荐系统麻烦吗?

2022-09-25 17:41:33 +08:00
 James369

推荐系统现在很常见,比如: 我在电商平台购买了 a,b,c ,它可能就会给你推 a1,b1,c1 。或者我看了视频 x,y,z ,它就会给你推类似的。 就是推的都是你喜欢的,投你所好,非常的了解你。

碰巧现在做的系统也有推荐模块,想了解下大佬这块应该怎么做,有没有现成的轮子?

3641 次点击
所在节点    程序员
16 条回复
Maxwe11
2022-09-25 18:06:20 +08:00
这种东西很多,但主要还是看架构和流程怎么设计,原来一堆 BI 之类的工具也都内置这种模块,那时候绝大部分都是拿 weka 包装套一下直接上了,反正基本够用;

小企业是看系统本身的设计,本身是什么框架,还有业务特征以及未来预期的业务量程度,找个好套的;

不大不小的,很多是系统提前设计好接口,后台有服务团队,如果分析挖掘团队是统计为主的人,基本是根据业务拿 R 跑个合适的模型再根据业务量性能要求等改用其他语言部署一下,接口调用;计算机为主的团队是拿 python 跑一个,流程是一样的;

再大型的都有自己的框架和管理了;

各种轮子都有,主要还是看规模看投入看框架看已有人员配置
statumer
2022-09-25 21:23:10 +08:00
构思好流程再想有的没的,小公司用 es 和 redis 就行了。
EdmondGUO
2022-09-25 21:26:46 +08:00
原理上挺简单的,多路召回,粗排精排重排都不用搞。先整个协同过滤就能用了
sy20030260
2022-09-25 22:41:51 +08:00
这个“小”具体是多“小”啊。上推荐系统的话,最后上线得能验证效果,那就得先有简单的 AB Test 吧。要 AB Test 的话,就得有简单的数据平台,简单的埋点 /离线数仓 /取数 /报表不能少吧。而且 AB Test 要能跑起来样本量不能太少吧,说明产品已经比较稳定且具备一定用户规模了。

到这个程度其实已经过滤掉大部分小公司了,这种公司一般都有一个小型的 BI 或算法团队了。这个时候搞个推荐系统应该比较水到渠成了,毕竟业界都有相对成熟的方案,丢给算法团队搞就是了,应该轮不到 OP 来提这个问题吧。如果确实还有这种问题,可能得检查下算法团队是不是有水分了(逃
James369
2022-09-26 09:41:25 +08:00
@sy20030260 没有那么复杂,现在就是一条 select 语句从用户已查看过的同类型条目中,random 随机返回几条出来做推荐用。虽然有点糊弄的意思,勉强可用,但推荐的精度不高。
zoyua
2022-09-26 10:16:08 +08:00
在 es 里根据影片标签搜索就能实现个比较简单的推荐
frank1256
2022-09-26 10:17:15 +08:00
简单的推荐系统就如你说的只是 sql 语句,如果需要精确打击,则需要构建用户画像,举个简单例子:一个男用户,买了个游戏。在画像中会被打上”男“,”游戏爱好者“的标签。然后将标签数据导入 Es ,进行检索出,符合这些标签的商品 id ,再去查商品详情返给用户。

核心在打标签这个动作上,标签越多画像越丰富,推荐精度越高,这需要大量的用户行为日志不断采集出来的,属于大数据范围内的一个应用。
James369
2022-09-26 10:43:51 +08:00
@frank1256 你说的对我启发很大,基本原理就是用户一套标签,影片对象一套标签,两组标签进行匹配计算相似度距离,距离越近则越匹配。

那么现在要做的文章就是标签的定义,以及权重之类。那么我将这些标签分为“固定标签”和“动态标签”:
固定标签:影片的名字、类型、主演、导演、年代等等每个影片都有的固定分类。
动态便签:不是每个影片都存在的,比如影片中大量出现的场景,比如“帝国大厦”。或者男主角的口头禅。或者女主角喜欢吃的一种巧克力。或者墙上挂的一副画等等。(动态标签没有固定的套路,但可能跟用户喜好有关)

所以,这个动态标签,应该如何生成、录入、检索、匹配等等?
yuanchao
2022-09-26 11:13:17 +08:00
很多年以前做过,其实说白了就是标签那一套,主要是如何精准的给用户打上标签,给商品打上标签,我们之前这部分工作都是人工来干的
frank1256
2022-09-26 11:26:51 +08:00
@James369 人工,有大公司有个岗位叫数据标注,去找应届大学生,一天给多少钱去给图片或者某些数据,做标注。这就是来源,一般的推荐系统,固定标签就差不多了。
jeesk
2022-09-26 11:30:03 +08:00
自己写过一个 opendsp , 架构参考百度 opendsp, https://gitee.com/imomoda/open_dsp
James369
2022-09-26 11:53:31 +08:00
@frank1256 可以啊这招不错。标注电影则免费看电影。哈哈。
不过我想到另外一个办法,就是从电影的详情介绍中,去提取有用的信息,从而形成标签。

这块有具体实现方法吗?
frank1256
2022-09-26 13:06:32 +08:00
@James369 爬知名网站的电影数据,利用 es 分词就可以了,更高级的是 nlp ,代价太大,用不到,一般用于科研。
sadfQED2
2022-09-26 15:47:18 +08:00
可以非常简单,比如推荐同一个类型的商品,比如同一类型的电影。

也可以非常复杂,比如打标,用户画像。为每个用户建立独特的标签,然后给每个商品,电影建立相应的标签,最后取交集即可。前期人工打标,后期 ai 打标
summerLast
2022-09-26 17:27:38 +08:00
类型,时间,点击量
AstroNot
2022-09-26 22:20:10 +08:00
协同过滤

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/882825

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX