推荐系统现在很常见,比如: 我在电商平台购买了 a,b,c ,它可能就会给你推 a1,b1,c1 。或者我看了视频 x,y,z ,它就会给你推类似的。 就是推的都是你喜欢的,投你所好,非常的了解你。
碰巧现在做的系统也有推荐模块,想了解下大佬这块应该怎么做,有没有现成的轮子?
1
Maxwe11 2022-09-25 18:06:20 +08:00
这种东西很多,但主要还是看架构和流程怎么设计,原来一堆 BI 之类的工具也都内置这种模块,那时候绝大部分都是拿 weka 包装套一下直接上了,反正基本够用;
小企业是看系统本身的设计,本身是什么框架,还有业务特征以及未来预期的业务量程度,找个好套的; 不大不小的,很多是系统提前设计好接口,后台有服务团队,如果分析挖掘团队是统计为主的人,基本是根据业务拿 R 跑个合适的模型再根据业务量性能要求等改用其他语言部署一下,接口调用;计算机为主的团队是拿 python 跑一个,流程是一样的; 再大型的都有自己的框架和管理了; 各种轮子都有,主要还是看规模看投入看框架看已有人员配置 |
2
statumer 2022-09-25 21:23:10 +08:00 via iPhone
构思好流程再想有的没的,小公司用 es 和 redis 就行了。
|
3
EdmondGUO 2022-09-25 21:26:46 +08:00
原理上挺简单的,多路召回,粗排精排重排都不用搞。先整个协同过滤就能用了
|
4
sy20030260 2022-09-25 22:41:51 +08:00
这个“小”具体是多“小”啊。上推荐系统的话,最后上线得能验证效果,那就得先有简单的 AB Test 吧。要 AB Test 的话,就得有简单的数据平台,简单的埋点 /离线数仓 /取数 /报表不能少吧。而且 AB Test 要能跑起来样本量不能太少吧,说明产品已经比较稳定且具备一定用户规模了。
到这个程度其实已经过滤掉大部分小公司了,这种公司一般都有一个小型的 BI 或算法团队了。这个时候搞个推荐系统应该比较水到渠成了,毕竟业界都有相对成熟的方案,丢给算法团队搞就是了,应该轮不到 OP 来提这个问题吧。如果确实还有这种问题,可能得检查下算法团队是不是有水分了(逃 |
5
James369 OP @sy20030260 没有那么复杂,现在就是一条 select 语句从用户已查看过的同类型条目中,random 随机返回几条出来做推荐用。虽然有点糊弄的意思,勉强可用,但推荐的精度不高。
|
6
zoyua 2022-09-26 10:16:08 +08:00
在 es 里根据影片标签搜索就能实现个比较简单的推荐
|
7
frank1256 2022-09-26 10:17:15 +08:00
简单的推荐系统就如你说的只是 sql 语句,如果需要精确打击,则需要构建用户画像,举个简单例子:一个男用户,买了个游戏。在画像中会被打上”男“,”游戏爱好者“的标签。然后将标签数据导入 Es ,进行检索出,符合这些标签的商品 id ,再去查商品详情返给用户。
核心在打标签这个动作上,标签越多画像越丰富,推荐精度越高,这需要大量的用户行为日志不断采集出来的,属于大数据范围内的一个应用。 |
8
James369 OP @frank1256 你说的对我启发很大,基本原理就是用户一套标签,影片对象一套标签,两组标签进行匹配计算相似度距离,距离越近则越匹配。
那么现在要做的文章就是标签的定义,以及权重之类。那么我将这些标签分为“固定标签”和“动态标签”: 固定标签:影片的名字、类型、主演、导演、年代等等每个影片都有的固定分类。 动态便签:不是每个影片都存在的,比如影片中大量出现的场景,比如“帝国大厦”。或者男主角的口头禅。或者女主角喜欢吃的一种巧克力。或者墙上挂的一副画等等。(动态标签没有固定的套路,但可能跟用户喜好有关) 所以,这个动态标签,应该如何生成、录入、检索、匹配等等? |
9
yuanchao 2022-09-26 11:13:17 +08:00
很多年以前做过,其实说白了就是标签那一套,主要是如何精准的给用户打上标签,给商品打上标签,我们之前这部分工作都是人工来干的
|
10
frank1256 2022-09-26 11:26:51 +08:00
@James369 人工,有大公司有个岗位叫数据标注,去找应届大学生,一天给多少钱去给图片或者某些数据,做标注。这就是来源,一般的推荐系统,固定标签就差不多了。
|
11
jeesk 2022-09-26 11:30:03 +08:00
自己写过一个 opendsp , 架构参考百度 opendsp, https://gitee.com/imomoda/open_dsp
|
12
James369 OP |
13
frank1256 2022-09-26 13:06:32 +08:00 1
@James369 爬知名网站的电影数据,利用 es 分词就可以了,更高级的是 nlp ,代价太大,用不到,一般用于科研。
|
14
sadfQED2 2022-09-26 15:47:18 +08:00 via Android
可以非常简单,比如推荐同一个类型的商品,比如同一类型的电影。
也可以非常复杂,比如打标,用户画像。为每个用户建立独特的标签,然后给每个商品,电影建立相应的标签,最后取交集即可。前期人工打标,后期 ai 打标 |
15
summerLast 2022-09-26 17:27:38 +08:00
类型,时间,点击量
|
16
AstroNot 2022-09-26 22:20:10 +08:00
协同过滤
|