现在搭一个小的推荐系统麻烦吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
James369
V2EX    程序员

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

  •  
  •   James369 2022-09-25 17:41:33 +08:00 4274 次点击
    这是一个创建于 1182 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言    2022-09-26 09:34:43 +08:00
    很小的系统,就是做影片推荐,现在库里也就 10 万部电影。
    Maxwe11
        1
    Maxwe11  
       2022-09-25 18:06:20 +08:00
    这种东西很多,但主要还是看架构和流程怎么设计,原来一堆 BI 之类的工具也都内置这种模块,那时候绝大部分都是拿 weka 包装套一下直接上了,反正基本够用;

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

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

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

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

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

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

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

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

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

    也可以非常复杂,比如打标,用户画像。为每个用户建立独特的标签,然后给每个商品,电影建立相应的标签,最后取交集即可。前期人工打标,后期 ai 打标
    summerLast
        15
    summerLast  
       2022-09-26 17:27:38 +08:00
    类型,时间,点击量
    AstroNot
        16
    AstroNot  
       2022-09-26 22:20:10 +08:00
    协同过滤
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     806 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:29 PVG 05:29 LAX 13:29 JFK 16:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86