我们有很多用户的页面浏览数据,需要做一个推荐系统(猜你喜欢),但用户和页面浏览数据量特别大,一般用什么模型好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
不要在回答技术问题时复制粘贴 AI 生成的内容
alexapollo
V2EX    程序员

我们有很多用户的页面浏览数据,需要做一个推荐系统(猜你喜欢),但用户和页面浏览数据量特别大,一般用什么模型好?

  •  1
     
  •   alexapollo
    geekan 2015-03-30 18:09:45 +08:00 6189 次点击
    这是一个创建于 3856 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像小说和视频都是百万量级的,每天新增的url也不多
    而我们这数据量特别大,有啥好方法吗?

    36 条回复    2015-07-30 15:25:29 +08:00
    O14
        1
    O14  
       2015-03-30 18:55:36 +08:00
    给页面加tag,根据用户的页面浏览数据计算用户偏爱的tag, 推荐tag相似的页面.定时做这些统计,将计算出来的页面保存在表中
    erse
        2
    erse  
       2015-03-30 19:16:10 +08:00
    关注这个问题
    Tianpu
        3
    Tianpu  
       2015-03-30 20:38:51 +08:00 via iPhone
    有来路吗?造关系链
    有用户属性吗?区分不同用户

    两个维度交叉下,大致够用了吧
    babyname
        4
    babyname  
       2015-03-30 21:34:42 +08:00 via iPhone
    mahout
    qiayue
        5
    qiayue  
    PRO
       2015-03-30 22:10:08 +08:00
    最简单的就是向喜欢 A 的人推荐其他也喜欢 A 的人喜欢的内容 B
    sleeperqp
        6
    sleeperqp  
       2015-03-30 22:22:54 +08:00
    user多还是item多
    页面浏览数据量更偏向计算权值吧
    alexapollo
        7
    alexapolo  
    OP
       2015-03-30 22:35:16 +08:00
    @O14 tag系统已经做好了,基于tag推荐是不是等同基于内容推荐?但有个问题,假如用户1亿,url也是1亿,那么这个用户矩阵感觉很大?要算1亿*1亿的数据量?
    还有,除了cosine,相似度算法你觉得应该用啥?
    alexapollo
        8
    alexapollo  
    OP
       2015-03-30 22:35:44 +08:00
    @Tianpu 关系链数据比较难搞,用户属性你指的是哪方面?
    alexapollo
        9
    alexapollo  
    OP
       2015-03-30 22:36:10 +08:00
    @babyname 有关注,但还没有用上,有啥相似的case吗?
    alexapollo
        10
    alexapollo  
    OP
       2015-03-30 22:36:25 +08:00
    @qiayue 基于user的CF?
    alexapollo
        11
    alexapollo  
    OP
       2015-03-30 22:37:06 +08:00
    @sleeperqp 权值指的是?
    @qiayue 还有一点,用户量和url量都很大,CF能跑得动吗
    ligyxy
        12
    ligyxy  
       2015-03-30 22:58:47 +08:00
    @alexapollo 确实是高维稀疏矩阵,肯定要降维
    sleeperqp
        13
    sleeperqp  
       2015-03-30 23:09:54 +08:00
    @alexapollo 额 你的item是网站吗? 还是什么
    权值是后面考虑的问题
    比如说你一个人经常去体育类的网站 那么体育类的权值就高
    alexapollo
        14
    alexapollo  
    OP
       2015-03-30 23:13:41 +08:00
    @ligyxy 有什么好的降维方法吗?我之前咨询过几个同学,有一些learning to rank的想法,不过我对这块也不大熟
    alexapollo
        15
    alexapollo  
    OP
       2015-03-30 23:14:24 +08:00
    @sleeperqp 恩,我现在是根据PV来算的,每个PV都加对应tag的权重,item是url
    sleeperqp
        16
    sleeperqp  
       2015-03-31 08:45:59 +08:00
    @alexapollo 如果item是url的话 我觉得你不要直接用推荐系统的常用算法 一定要用的话还是基于user比较好
    我个人觉得倒是可以借用下信息检索的思想 从搜索引擎的角度来考虑这个问题
    alexapollo
        17
    alexapollo  
    OP
       2015-03-31 10:12:18 +08:00
    @sleeperqp 我打算先去掉点击量小的url,或者一些其他方法filter掉数据来降维,或者从tag的角度出发
    你是做搜索引擎相关吗?指点一下?我觉得这个想法挺靠谱的
    liuhaotian
        18
    liuhaotian  
       2015-03-31 10:23:53 +08:00 via iPhone
    Followed.
    kimmykuang
        19
    kimmykuang  
       2015-03-31 10:26:20 +08:00   1
    首先是不是先降噪,比如不小心点到“宝刀屠龙点击就送”这种item的可以干掉;其次可以尝试对url进行归类,其实归类的过程中就可以得到用户大致浏览过的类目,对于类目可以加tag,weight啊之类的;有了数据的清理之后,再用上相似算法,比如最简单的线性算法:A用户与B用户经常浏览的类目有70%相近,那么是不是可以给B用户推荐A用户喜欢的其余30%,基于这个算法还有很多变种,比如可以基于权重进行调整。
    alexapollo
        20
    alexapollo  
    OP
       2015-03-31 10:31:28 +08:00
    @kimmykuang 嗯,想法就是数据清洗+聚类+usercf?
    看起来靠谱。。。有实践过吗?不知道效果好不好?
    kimmykuang
        21
    kimmykuang  
       2015-03-31 11:00:30 +08:00
    @alexapollo 没有做过推荐系统,不过当初在学数据挖掘时做过降噪和聚类,我还记得当时的样本数据是国外工资与性别、年龄、教育、地域等有关的一大堆带有较多噪音数据的记录,样本数据是10W条左右,比较小纯练手项目。
    kimmykuang
        22
    kimmykuang  
       2015-03-31 11:01:55 +08:00
    @alexapollo 如果有实践的话可以反馈下效果~我觉得坛子里对于这方面感兴趣的人还是挺多的,比较大数据。
    sleeperqp
        23
    sleeperqp  
       2015-03-31 11:38:51 +08:00
    @alexapollo 我的想法是把user过去的浏览记录提取成向量 比如说经常看体育 娱乐其他就基本不看 然后抽象成搜索向量(5,4,0,0,0...)这样
    然后对url内容进行处理然后进行相似度计算这类的 推荐前K相关
    当然这样就不是纯粹的CF了
    其实说到底推荐系统也是一个求相似度的过程
    alexapollo
        24
    alexapollo  
    OP
       2015-03-31 11:47:53 +08:00
    @sleeperqp 嗯。。。。我也是这样想的,不过这样应该是content-based推荐吧,容易一直推用户以前喜欢看的
    并且问个小白问题:用户有特征向量,而文章也有特征向量(很多tag),那么这个相似度要全部都算过去吗?用户*文章?
    SmiteChow
        25
    SmiteChow  
       2015-03-31 12:30:38 +08:00
    协同过滤足够了,user-url
    bluewinger
        26
    bluewinger  
       2015-03-31 12:56:31 +08:00
    《推荐系统实践》
    alexapollo
        27
    alexapollo  
    OP
       2015-03-31 16:58:45 +08:00
    @bluewinger 看过了,不顶用,因为我们这个数据量比较大,它里面的手段没法直接用(可能做一些过滤、初始化也可以)
    alexapollo
        28
    alexapollo  
    OP
       2015-03-31 16:59:29 +08:00
    @SmiteChow 矩阵特别大= = 而且user-url的评分都是0/1啊
    sleeperqp
        29
    sleeperqp  
       2015-03-31 17:02:26 +08:00
    @alexapollo 可以先过滤一些tag不足的 比如说用户喜欢体育 娱乐 你就可以把经济类的url去掉
    就约等于 用户*过滤后的文章
    至于推荐过去用户喜欢看的 你可以把url设置一个时效 过了一定时效就不再录入推荐
    alexapollo
        30
    alexapollo  
    OP
       2015-03-31 20:39:23 +08:00   1
    @sleeperqp 恩,现在就是做短期时间的,我指的是内容没法外延
    过滤的想法就是用户先聚类了,比如先把体育用户拿出来,专门推体育,是可以比较好降维,或者更细粒度的聚类
    有研究过这种聚类吗?
    sleeperqp
        31
    sleeperqp  
       2015-03-31 21:55:12 +08:00
    @alexapollo 我想想了觉得用搜索引擎可能导致推荐的内容过于相似 这个还是有点问题
    如果基于user的话 先根据用户(tag向量)聚类得到用户的类别 然后url根据访问的用户 对url进行评分 比如所有访问的用户tag向量求均值之类的得到url的tag向量 对其进行聚类
    然后在给某个用户进行的推荐的时候用基于user的CF 得到的url 然后进行只推荐像与该用户类别类似的url进行过滤 推荐
    laozhao0
        32
    laozhao0  
       2015-03-31 23:19:38 +08:00
    dpi 数据?
    staticor
        33
    staticor  
       2015-03-31 23:39:23 +08:00
    只说说想法, 可能没什么帮助.

    对内容(页面)作多级Tag, 比如 搞笑- [生活, 动物], 娱乐-[明星, ...]
    根据现有数据量确定分类的层数(不应让最低级的叶子节点容量过小)



    对用户关系是否建立social network, 如果有的话也可以推荐好友(亲密度最高的K个好友)正在喜欢的内容.
    如果没有用户关系直接从内容出发.

    所谓的打标签, 只是一种构造tags空间从而计算不同内容的相似度的方式, 就像两首歌怎么就相似, 也是从歌曲基本属性和歌曲演艺风格计算.

    供参考
    http://www.cnblogs.com/qwj-sysu/p/4368874.html

    最近有空会在学习推荐的东西, 希望以后我再有时间更正粗浅的见解.
    cfan8
        34
    cfan8  
       2015-04-01 10:28:26 +08:00   1
    做过推荐系统,过来给点建议

    首先你要想好是做在线的算法还是离线的算法,是基于内容的推荐还是基于用户相似度的推荐。

    在线算法要达到和离线算法一样的结果,要复杂很多。个人建议是,如果基于内容,在线可以做但是如果是基于用户的话,建议做离线算法。网易云音乐的推荐就是离线跑的。

    第二,算法不要太复杂。算法复杂之后就得上hadoop,而且一般来说,简单的算法已经足够用了。通常情况R树+kNN已经能解决很多问题了。

    第三,与其纠结如何把推荐准确度提升10%,不如考虑好如何在推荐的时候把用户体验给做好,比如过滤掉已经看过的东西,增加屏蔽系统等等。
    padthai
        35
    padthai  
       2015-04-01 17:20:36 +08:00
    外包无觅吧 还能拉些流量来
    chevalier
        36
    chevalier  
       2015-07-30 15:25:29 +08:00
    @cfan8 你好,能不能推荐点入门资料和书籍?刚接触推荐系统,不知道怎么下手
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3327 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 04:54 PVG 12:54 LAX 21:54 JFK 00:54
    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