如果你的本科毕设是要写一个推荐系统,如何快速水过去

栏目: 编程工具 · 发布时间: 5年前

内容简介:最近碰到一位兄台的毕设题目是: 基于用户画像的音乐推荐系统, 然后这哥们就被网上的各种资料给绕进去了, 比如item2vec, 各种基于模型的, 偏偏是跟用户画像没关系, 为了应付过去可以按照以下思路来做, 更多资料关注公众号 【推荐系统与机器学习】每次处理点击时, 拿到该用户的过去某一段时间的所有点击根据点击能够拿到点击对应的所有正排, 然后 tag 权重 * 点击数据权重,做聚合, 如果是author的话,可以认为权重为1

最近碰到一位兄台的毕设题目是: 基于用户画像的音乐推荐系统, 然后这哥们就被网上的各种资料给绕进去了, 比如item2vec, 各种基于模型的, 偏偏是跟用户画像没关系, 为了应付过去可以按照以下思路来做, 更多资料关注公众号 【推荐系统与机器学习】

准备数据

正排数据, 直接扔 redis 里, 可以直接通过id查询正排信息

message Pair {
    string tag;
    float weight;
}

message Music {
    
    string id;
    string title;
    string author;
    repeated Pair tags; //歌曲的tag列表, 比如电子/时尚/爱情等标签, 标签有多个 并且有对应权重, 最大权重为1
}

画像定义

messsage UserProfile {
    string uid; //用户ID
    
    repeated Pair tags; //用户的标签体系, 与正排对应
    repeated Pair authors; //用户的喜欢音乐人, 由于是多个, 所以是列表, 与正排对应
}

埋点数据

{
    'id' : '12412414', //音乐music id,
    'uid' : '2412125125', //用户id
    'avg' : 0.5 //播放时长百分比, 用于做用户对改首音乐的喜爱权重
}

画像构建

每次处理点击时, 拿到该用户的过去某一段时间的所有点击

根据点击能够拿到点击对应的所有正排, 然后 tag 权重 * 点击数据权重,做聚合, 如果是author的话,可以认为权重为1

然后可以构造出该用户的这类数据

author 周杰伦 2.5
author 蔡依林 1.2
author 五月天 3.4

tag 爱情 4.5
tag 民谣 2.3
tag 摇滚 5.6

然后设计一个sigmoid函数(自己随便设计), 主要是让 author/tag 对应的权重在 0-1 区间之内, 然后这个就是你的画像

开始做推荐

有了用户画像之后, 基于正排做倒排链, 正排是 id->整个item属性, 倒排就是 属性->id列表 (其实就是 mysql 一张表, id, tag, weight/id,author,weight, 可以根据tag按照weight降序查该tag有哪些歌曲)

比如你要候选集生成100个。。然后按照画像里的权重, 可能需要 周杰伦拿出10个, 蔡依林拿出5个, 爱情拿出20个。。

拿到这100个后, 按照上面的那俩protobuf 做cos相似度。。直接前几选出来

为了演示个性化, 需要保证刷两次之后, 该音乐不再出来

进阶

通过在产品设计上加入歌单功能, 可以让用户帮你准备数据, 基于歌单列表, 可以做一个item2vec 的 映射关系, 这个在候选集生成的时候可以用到


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程真好玩

编程真好玩

[英] 乔恩·伍德科克 / 余宙华 / 南海出版公司 / 2017-8-1 / 88.00元

在美国,编程已进入幼儿园和中小学课堂,是备受欢迎的课程之一。 在英国,编程被列入国家教学大纲,成为6~15岁孩子的必修课。 在芬兰,编程理念融入了小学的各门课程,孩子们可以随时随地学编程。 编程已经成为世界的通用语言,和听、说、读、写、算一样,是孩子必须掌握的技能。 Scratch是美国麻省理工学院设计开发的可视化少儿编程工具,全球1500多万孩子正在学习使用。它把枯燥乏味......一起来看看 《编程真好玩》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具