七(11)推荐系统-RabbitMq应用

一. 了解推荐系统

1-1 概述

搜索推荐隐藏在生活的各个角落里,比如抖音、快手的视频推荐,京东、淘宝的商品推荐

推荐系统基于用户数据和物品数据,通过的算法,为用户推荐符合需求的物品,以达到提高用户体验的目的

电子商务网站是个性化推荐系统重要地应用的领域之一,亚马逊就是个性化推荐系统的积极应用者和推广者,亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销售额。

不光是电商类,推荐系统无处不在。QQ,微信的好友推荐;新浪微博的你可能感兴趣的人;优酷,土豆的电影推荐;豆瓣的图书推荐;大从点评的餐饮推荐;脉脉的同事推荐等。

1-2 推荐系统业务流程

image-20221002084342148
  • 用户使用应用产生日志数据
  • 日志数据经由数据采集系统存入数据库
  • 推荐系统获取数据,使用推荐算法计算推荐结果

1-3 协同过滤推荐算法

协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。人以类聚,物以群分

协同过滤推荐算法分为两类:

  • 基于用户推荐的UserCF

  • 基于商品推荐的IteamCF

1. 基于用户的推荐 UserCF
image-20221002084622991
2. 基于商品的推荐 ItemCF

基于商品的推荐(ItemCF):给目标用户推荐那些和他们之前喜欢的物品相似的其他物品

image-20221002084713024

1-4 ALS算法

ALS 是交替最小二乘 (alternatng least squares)的简称,是基于模型的推荐算法。

通过观察到的所有用户给产品的打分,来推断每个用户的喜好并向用户推荐适合的产品。

从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF,它同时考虑了User和Item两个方面。

举例

首先拿到的原始数据是每个听众对每首歌的评分矩阵A

ALS矩阵分解会把矩阵A分解成两个矩阵的相乘,分别是X矩阵和Y矩阵

image-20221002084916094

评分矩阵A=矩阵X和矩阵Y的转秩的乘积

image-20221002084946025

二. 好友推荐

2-1 评分规则

对于好友的推荐,需要找出每个用户之间的相似性,具体规则如下:

image-20221002085425598

2-2 流程分析

  • 推荐系统读取数据库中的用户数据
  • 根据用户资料,进行推荐运算
  • 将推荐数据存入到MongoDB
image-20221002085510485

2-3 部署好友推荐服务

推荐系统是由专业的大数据人员开发编写的,我们只需要部署运行。在课程中已经以docker-compose提供了相应系统

#进入目录
cd /root/docker-file/recommend/
#创建容器并启动
docker-compose up –d
#查看容器
docker ps -a

推荐系统内部包含了好友推荐,动态推荐以及视频推荐。

推荐系统会访问本地数据库,所以需要打开本地数据库的远程访问权限

如果想要用户root可以远程登录,则可通过修改user表中root用户对应的host字段值为“%”即可。我们用以下语句进行修改:

update user set host = '%' where user = 'root';

#或者
GRANT ALL PRIVILEGES ON *.* TO '登录id'@'%' IDENTIFIED BY '登录密码' WITH GRANT OPTION;

三. 圈子推荐

在圈子功能中,针对于用户发布的动态信息,系统可以根据用户的发布、浏览、点赞等操作,对动态信息做计算,然后对每个用户进行不同的推荐。

3-1 流程说明

  • 用户的业务操作,发送日志消息到RabbitMQ
  • 数据采集系统获取消息,将数据存入MongoDB
  • 推荐系统(Spark)拉取数据,进行推荐计算并存入Redis
  • 探花系统从Redis获取推荐数据结果
image-20221002085815986

3-2 消息类型说明

探花项目间使用RabbitMQ收发消息,这里采用topic类型消息

日志消息key规则:log.xxx

image-20221002085910875

3-3 动态计分规则

为了更加精准的进行数据推荐,针对用户不同的行为,设置不同的评分规则。

image-20221002085946416

为什么自己发布动态还要计分?

自己发布就相当于自己对此动态也感兴趣,这样就可以在相似的人之间进行推荐了

3-4 代码实现

接收消息的工作需要新创建tanhua-recommend工程,在此工程中完成相关的操作。

1. 创建tanhua-recommend工程
<dependencies>
    <dependency>
        <groupId>com.itheima</groupId>
        <artifactId>tanhua-model</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <!--RabbitMQ-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.4.3</version>
    </dependency>
</dependencies>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值