协同过滤算法(一种内容推荐算法)的表结构一般怎么设计? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhenzinian
V2EX    数据库

协同过滤算法(一种内容推荐算法)的表结构一般怎么设计?

  •  
  •   zhenzinian 2019-12-29 21:18:59 +08:00 2112 次点击
    这是一个创建于 2190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己开发着一款基于 UGC 的 APP,后台硬件环境是一台 1C,512M,15G SSD 的 Kvm 小鸡,装上 nginx+php7+MySQL5.5 后勉勉强强内存够用,但是使用时资源不能超,据说因为是特价机型,资源一超就会 suspend

    现在还用不,但可能以后用户多了会需要利用协同过滤算法来给用户做内容推荐。

    关于这个算法简单的例子如下: 比如,

    用户 1 喜欢 :A C D G T I 用户 2 喜欢 : B G F S 用户 3 喜欢 :A C G T I

    那么可以认为用户 3 和用户 1 的喜好类似,所以给用户 3 推荐 D

    但自己水平太菜,对这方面完全没有头绪,从表结构的设计,到计算的时机(因为不知道计算量和用户量增大之间的关系,如果计算量大是否可以安排到业务访问闲时来计算?),再到用到哪些 php 函数都不甚清楚

    请问下有过经验的大人,有没有最简单的协同过滤方案,在这台小鸡上的最佳实践是?

    5 条回复    2019-12-30 19:29:37 +08:00
    luckTtian
        1
    luckTtian  
       2019-12-30 09:28:41 +08:00
    不知道你推荐的内容是什么,我曾经玩过 hadoop+hbase+spark,(迫于毕设) hadoop 有协同过滤的包。最简单的协同过滤算法,复杂一点多个算法结合。
    DDDjango
        2
    DDDjango  
       2019-12-30 11:24:17 +08:00
    最简单的,皮尔逊积矩相关系数。基于项目。跑出来的训练集我记得应该是 每个电影最相似的十部电影,然后有新用户进入后,算出新用户历史观看的每部电影相似的程度,再推荐一波。。。毕设的时候做的,忘的差不多了
    MinQ
        3
    MinQ  
       2019-12-30 16:53:19 +08:00
    这得看你是用的 ItemCF 还是 UserCF 了,首先这两个都需要用户对商品的评分表,然后如果是 ItemCF 的话需要建立用户物品倒排表,即每个用户喜欢哪些商品。然后构造同现矩阵(商品*商品矩阵),即表示同时喜欢某两种商品的用户数。然后就可以计算 item 之间的相似度了。最后得出来的是商品之间的相似度矩阵(商品*商品矩阵),当每一个用户进来以后,就可以根据他的已有评分,从相似度矩阵中取出对应的行,来计算用户对其它商品的评分
    MinQ
        4
    MinQ  
       2019-12-30 16:55:20 +08:00
    这些都是离线计算,每天 0 点取前一天数据计算相似度,相似度算完了往 hive 表或者 mysql 里一扔,然后内存里留一份就行了。用户进来以后需要实时评分。
    wuyifar
        5
    wuyifar  
       2019-12-30 19:29:37 +08:00
    根据你的描述你想要的是基于用户的协同过滤做推荐属于离线召回,对于协同过滤不需要再数据库中键额外的表, 你需要通过用户的历史行为,构建一个矩阵 T T 有 N 列, 每一列代表一个 item 有 M 行, 每一行代表一个 user, 矩阵构建好了之后, 可以利用余项相识度等很多数学公式计算,每个用户之间的相似度,并保存。 最后再推荐的时候只需要返回前 N 个相似用户,喜欢的但是该用户没有行为的 item 就好了, 大概是这样。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2601 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 09:40 PVG 17:40 LAX 01:40 JFK 04:40
    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