风暴项目个性化推荐系统浅析

2024-09-07 19:32

本文主要是介绍风暴项目个性化推荐系统浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

风暴项目的主要任务是搭建自媒体平台,作为主开发人员的我希望把工作重心放在个性化推荐系统上。

目前风暴项目的个性化推荐是基于用户行为信息记录实现的,也就是说对于每条资讯,数据库中有字段标明其类型。建立一张用户浏览表,对用户的浏览行为进行记录,从中可以获取当前用户对哪类资讯感兴趣。

若用户第一次登陆,则按默认规则选取热点资讯做推荐,及所有资讯按浏览量降序排序,取前4个。另外,我考虑到后期可能有商业合作,需要人为的推荐上榜(参考新浪微博的上热点)。所以对于每条资讯,再增加is_hot字段,扫描所有资讯,把人为推荐的热点加入推荐列表。

若用户不是第一次登录,则查找该用户的浏览记录,取其浏览量最多的资讯类型,对该类型下资讯降序排列,取前4个。然后考虑人为推荐,操作同上。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

(分割线)

曾经看过一段时间机器学习,颇感兴趣。所以,我考虑后期采用基于用户的协同过滤算法对个性化推荐系统进行改进。

首先,我们的推荐是基于用户的,也就是说对于当前用户,我们找到跟他兴趣喜好相近的K个用户,依据这K个用户对当前用户进行资讯推荐。这里需要对资讯的喜好标识做下规定,每条资讯1~5分,由用户进行评判,据此得出用户的喜好。

然后,如何找到跟他喜好相近的用户。遍历整张表去查找跟当前用户有相同喜好的其他用户固然可行,一旦这张表过大,遍历必然耗时。所以建立一张资讯用户反查表,记录该条资讯有哪些用户喜欢,这样可以快速的找到和当前用户有相近喜好的所有用户。

接下来就是相似度计算,这里我采用余弦相似性计算,cos(a,b) = <a,b>/ (|a|*|b|),a、b均为向量。分别计算出的每个用户和当前用户的相似度,据此找出与当前用户喜好相近的前K个用户。

最后,我们根据之前计算出的相似度作为权值,每条资讯作权值和对应用户喜欢的乘积累加和,结果降序排列取前4即可。


总结:

1.计算其他用户和你的相似度,利用反查表排除与你无关的用户。

2.根据相似度降序取前K个与你喜好相近的用户。

3.在K个用户喜欢的资讯里,根据相似度计算每条资讯的推荐度

4.根据推荐度降序推荐资讯。

这篇关于风暴项目个性化推荐系统浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145958

相关文章

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和

gitlab项目实现添加新成员

《gitlab项目实现添加新成员》:本文主要介绍gitlab项目实现添加新成员方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录gitlabhttp://www.chinasem.cn项目添加新成员1、进入项目2、手动输入要添加成员的账号或者搜索总结gitlab项