IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python】推荐系统记录(包括基于内容+基于用户协同过滤+基于物品协同过滤) -> 正文阅读

[Python知识库]【Python】推荐系统记录(包括基于内容+基于用户协同过滤+基于物品协同过滤)

学院实训项目:二次元动漫推荐系统
记录一下学习推荐系统的浅薄认识,只有最基础的三种推荐方法:

  1. 基于内容的推荐
  2. 基于用户的推荐(协同过滤1)
  3. 基于物品的推荐(协同过滤2)

推荐系统概述

推荐系统一般包括三个部分:

  1. 用户建模(刻画用户画像)
  2. 物品建模(刻画物品画像)
  3. 推荐算法

推荐系统的运作方式就是:通过对用户和物品进行建模,用推荐算法将用户感兴趣的点与物品的特征进行匹配并推荐。

  1. 用户建模方法:
  • 基于用户本身的属性(性别、年龄、职业等)
  • 基于用户的行为
    • 显式反馈:主动对物品进行评分
    • 隐式反馈:对物品的浏览时间、收藏、点赞、转发等

对比如下
在这里插入图片描述

  1. 物品建模方法
  • 基于物品本身的属性(分类、特征、内容等)
  • 基于用户的行为(不同用户对该物品的操作,包括点赞、收藏、浏览等)
  1. 推荐算法: 最基本的就是本文提到的三种,一般过程都是如下
  • 首先计算相似度:根据用户模型或物品模型计算用户之间或者物品之间的相似度
  • 其次进行推荐:找到相似的之后,进行喜好程度的计算,将物品按照喜好程度从大到小排序推荐给用户。当然在推荐的时候要去除用户已经看过的物品。

1. 基于内容的推荐

可参考博客

思想阐述

说白了就是:
我买过A和B,那么我就对A和B所在领域的东西感兴趣,而C就在这个领域,那么可以认为我可能会买C,所以推荐C给我。(我过去喜欢的,将来也会喜欢)

  1. 刻画用户画像:我买过A和B,将A和B的特征平均一下来代表我这个用户
  2. 刻画物品画像:A有三个属性,将三个属性组合为向量代表A这个物品
  3. 推荐算法:计算用户和其他物品的相似度,简单点的方法就是余弦相似度,相似度从高到低推荐给用户。当然也可以看做是分类问题,在刻画用户画像时运用决策树等方法建模,输入新的物品,输出喜欢或不喜欢。

优缺点

在这里插入图片描述

代码实现

可参考GitHub代码

2. 基于用户的推荐(协同过滤1)

可参考博客1,包含手推例子
可参考博客2,思想上的理解

说明

首先需要说明的是,协同过滤的两个算法操作的数据源是相同的,都是“用户-物品”矩阵C,每一行是每个用户,每一列是每个物品,C[i][j]代表用户i对物品j的偏好程度,这个偏好程度可以通过综合计算用户的显式反馈与隐式反馈得到。

思想阐述

说白了就是:
我喜欢的和他喜欢的东西差不多,我没有买过B,他买过B,那么可以认为我可能会买B,所以推荐B给我。(人以群分)

完成该算法需要两步:

  1. 找到与目标用户兴趣相似的用户集合
  2. 找到这个集合中的用户最喜欢的,且目标用户还未接触过的物品推荐给目标用户

第一步:计算用户之间的相似度

  • 操作矩阵:用户-物品矩阵
  • 计算方法:余弦相似度或其他改进方法,即计算矩阵中的行向量两两之间的相似度,得到用户相似度矩阵。在计算的时候为了方便,一般会建立物品-用户倒排矩阵辅助计算,例子见参考博客1

第二步:计算用户u对物品的感兴趣程度进行推荐(这些物品来自相似用户v的喜好物品集合)
一般算法如下:
在这里插入图片描述
也就是对于物品i而言,目标用户ui的感兴趣程度=uv的相似度乘vi的偏好程度,将所有这样的i进行计算求和(因为i可能是v1喜欢的,也可能是v2喜欢的)

代码实现

可参考GitHub代码

3. 基于物品的推荐(协同过滤2)

可参考博客1,包含手推例子
可参考博客2,思想上的理解

思想阐述

说白了就是:
我买了A,还会买什么?因为很多人买了A之后,就会买B,那么可以认为我买了A之后,可能会买B。所以推荐B给我。(啤酒和尿布的故事)

我个人认为,基于物品的协同过滤算法是借助用户这个中间桥梁去寻找物品之间隐含的联系,这种联系往往不局限于物品属性的相似,还会有意想不到的联系,比如啤酒和尿布。

完成该算法需要两步:

  1. 计算物品之间的相似度
  2. 根据物品的相似度和用户的历史行为给用户生成推荐列表

第一步:计算物品之间的相似度

  • 操作矩阵:理应是物品-用户矩阵,但实际代码实现的时候还是采用用户-物品矩阵
  • 计算方法:余弦相似度或其他改进方法,即计算“物品-用户”矩阵中的行向量两两之间的相似度,得到物品相似度矩阵。在计算的时候为了方便,一般会建立共现矩阵辅助计算,例子见参考博客1

第二步:计算用户u对物品的感兴趣程度进行推荐(这些物品来自与用户u喜好的物品相似度高的物品集合)
一般算法如下:
在这里插入图片描述
对于用户过去喜欢的每个物品i,有和i相似的物品集合,对于集合中的物品j,计算用户uj的感兴趣程度=ji的相似度乘用户ui的偏好程度,将所有这些j进行累加求和(因为j可能和i1相似,也可能和i2相似)

代码实现

可参考GitHub代码

协同过滤算法优缺点

在这里插入图片描述

基于用户的与基于物品的协同过滤对比

参考博客
在这里插入图片描述

可以参考的论文综述与推荐系统实现过程

[1]王国霞,刘贺平.个性化推荐系统综述[J].计算机工程与应用,2012,48(07):66-76.
[2]肖倩. 基于用户行为特征的水果搭配混合推荐方法设计与实现[D].西安理工大学,2017.

其他更深层次的推荐算法博客

参考博客主页

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:00:05  更:2022-06-29 19:00:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 5:40:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计