GitHub-HongweiZhang / prediction-flow

Deep-Learning based CTR models implemented by PyTorch
MIT License
250 stars 52 forks source link

deepfm跑movielens-1M的AUC是多少? #22

Closed shuDaoNan9 closed 4 years ago

shuDaoNan9 commented 4 years ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like A clear and concise description of what you want to happen. 请问你的deepfm跑movielens-1M的AUC是多少?我看网上别人动不动就是0.88左右的,我自己写的跑测试集才0.77至0.85左右AUC,可能是我的参数没优化好

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context Add any other context or screenshots about the feature request here.

GitHub-HongweiZhang commented 4 years ago

@JWenBin

您好。由于movielens-1M的数据太小了。用来评价模型的精度可能不太具有很高的参考价值。我没有具体测试过AUC。如果您把分好的train/valid数据放到网盘上,我可以测一下看看。

shuDaoNan9 commented 4 years ago

那你们的推荐是 离线计算保存模型,然后实时计算推荐得分排序吗? 还是直接离线每天计算好推荐结果呢?存推荐结果的话感觉太大了

GitHub-HongweiZhang commented 4 years ago

模型一般是每天更新的

直接离线每天计算好推荐结果

这个各种情况都有,有离线的有实时的。有些服务对实时性不高,就离线。离线的好处是维护成本低。

存推荐结果的话感觉太大了

这个一般是选取topK,目前的公司存储方面没有瓶颈。可以用redis或者cassandra的。 如果存储空间受限,可以尝试只cache热点数据。

shuDaoNan9 commented 4 years ago

如果推荐结果存几百万用户的top1000,到redis的话,岂不是要几个T的内存?

GitHub-HongweiZhang commented 4 years ago

如果推荐结果存几百万用户的top1000,到redis的话,岂不是要几个T的内存?

这个到不了那么大,一般只缓存ID。item 的详细信息一般都是实时从API获取。

top1000

用户真的能看到top1000吗?

到redis的话,岂不是要几个T的内存?

可以做一些分散。我用过cassandra集群。平均到每个机器也没多大。

shuDaoNan9 commented 4 years ago

我存了 商品id,得分score,推荐引擎代号,推荐引擎版本号。共4个字段。一天推荐数据1.3T内存。 大部分用户top100就够用了,少部分用户会出现滑到top几百的情况,然后取了个1000做推荐

GitHub-HongweiZhang commented 4 years ago

少部分用户会出现滑到top几百的情况,然后取了个1000做推荐

感觉这样就比较浪费空间。因为大部分都看不到那么多。 可能用异步更新会比较好,只存储TOP100。当用户有新的浏览记录时,异步生成新的推荐,更新数据库中推荐list。理论上只需要1/10的空间

shuDaoNan9 commented 4 years ago

那实时性能要求比较高哦,Java后台应该不会弄这个,flink又没玩过o(╯□╰)o

GitHub-HongweiZhang commented 4 years ago

那实时性能要求比较高哦,Java后台应该不会弄这个,flink又没玩过o(╯□╰)o

搞个pub/sub,中间做个缓存,用python就可以。