基于内容的推荐算法(Content-Based)

简介

基于内容的推荐方法是非常直接的,它以物品的内容描述信息为依据来做出的推荐,本质上是基于对物品和用户自身的特征或属性的直接分析和计算。

内容推荐算法是指在网站或应用中向用户推荐内容的一种机器学习算法。这些算法通过分析用户的历史浏览记录、搜索关键词、偏好设置等来推荐相关的内容。这些算法可以帮助用户发现更多感兴趣的内容,同时也能帮助网站或应用提高用户的参与度和留存率。

常见的内容推荐算法包括基于协同过滤的算法、基于内容的算法、基于标签的算法等。

基于协同过滤的算法是一种基于用户-物品交互数据的推荐方法。这种算法通过分析用户的浏览记录来学习用户的兴趣偏好,然后向用户推荐与他们兴趣相似的内容。

基于内容的推荐算法是一种基于内容特征的推荐方法。这种算法通过对内容的文本、图像、视频等进行分析,来推荐与当前内容相似的内容。

基于标签的推荐算法是一种基于标签的推荐方法。这种算法通过分析用户打上的标签来推荐与这些标签相关的内容。

例如,假设已知电影A是一部喜剧,而恰巧我们得知某个用户喜欢看喜剧电影,那么我们基于这样的已知信息,就可以将电影A推荐给该用户。

基于内容的推荐实现步骤

  • 画像构建。顾名思义,画像就是刻画物品或用户的特征。本质上就是给用户或物品贴标签。

    • 物品画像:例如给电影《战狼2》贴标签,可以有哪些?

"动作"、"吴京"、"吴刚"、"张翰"、"大陆电影"、"国产"、"爱国"、"军事"等等一系列标签是不是都可以贴上
  • 用户画像:例如已知用户的观影历史是:“《战狼1》”、“《战狼2》”、“《建党伟业》”、“《建军大业》”、“《建国大业》”、“《红海行动》”、"《速度与激情1-8》"等,我们是不是就可以分析出该用户的一些兴趣特征如:“爱国”、“战争”、“赛车”、“动作”、“军事”、“吴京”、"韩三平"等标签。
问题:物品的标签来自哪儿?
  1. PGC 物品画像–冷启动

    • 物品自带的属性(物品一产生就具备的):如电影的标题、导演、演员、类型等等
    • 服务提供方设定的属性(服务提供方为物品附加的属性):如短视频话题、微博话题(平台拟定)
    • 其他渠道:如爬虫
  2. UGC 冷启动问题
    • 用户在享受服务过程中提供的物品的属性:如用户评论内容,微博话题(用户拟定)

根据PGC内容构建的物品画像的可以解决物品的冷启动问题

基于内容推荐的算法流程:
  • 根据PGC/UGC内容构建物品画像
  • 根据用户行为记录生成用户画像
  • 根据用户画像从物品中寻找最匹配的TOP-N物品进行推荐
物品冷启动处理:
  • 根据PGC内容构建物品画像
  • 利用物品画像计算物品间两两相似情况
  • 为每个物品产生TOP-N最相似的物品进行相关推荐:如与该商品相似的商品有哪些?与该文章相似文章有哪些?

N最相似的物品进行相关推荐:如与该商品相似的商品有哪些?与该文章相似文章有哪些?

代码实例:

# coding: utf-8 -*-"""Author: AlanDesc:编写一个基于内容推荐算法的电影推荐系统(训练模型)
"""
import json
import pandas as pd
import numpy as np
import math
import randomclass CBRecommend:# 加载dataProcessing.py中预处理的数据def __init__(self,K):# 给用户推荐的item个数self.K = Kself.item_profile=json.load(open("data/item_profile.json","r"))self.user_profile=json.load(open("data/user_profile.json","r"))# 获取用户未进行评分的item列表def get_none_score_item(self,user):items=pd.read_csv("data/movies.csv")["MovieID"].valuesdata = pd.read_csv("data/ratings.csv")have_score_items=data[data["UserID"]==user]["MovieID"].valuesnone_score_items=set(items)-set(have_score_items)return none_score_items# 获取用户对item的喜好程度(余弦相似度)def cosUI(self,user,item):Uia=sum(np.array(self.user_profile[str(user)])*np.array(self.item_profile[str(item)]))Ua=math.sqrt( sum( [ math.pow(one,2) for one in self.user_profile[str(user)]] ) )Ia=math.sqrt( sum( [ math.pow(one,2) for one in self.item_profile[str(item)]] ) )return  Uia / (Ua * Ia)# 为用户进行电影推荐def recommend(self,user):user_result={}item_list=self.get_none_score_item(user)for item in item_list:user_result[item]=self.cosUI(user,item)if self.K is None:result = sorted(user_result.items(), key= lambda k:k[1], reverse=True)else:result = sorted(user_result.items(), key= lambda k:k[1], reverse=True)[:self.K]print(result)# 推荐系统效果评估def evaluate(self):evas=[]data = pd.read_csv("data/ratings.csv")# 随机选取20个用户进行效果评估for user in random.sample([one for one in range(1,6040)], 20):have_score_items=data[data["UserID"] == user]["MovieID"].valuesitems=pd.read_csv("data/movies.csv")["MovieID"].valuesuser_result={}for item in items:user_result[item]=self.cosUI(user,item)results = sorted(user_result.items(), key=lambda k: k[1], reverse=True)[:len(have_score_items)]rec_items=[]for one in results:rec_items.append(one[0])eva = len(set(rec_items) & set(have_score_items)) / len(have_score_items)evas.append( eva )return sum(evas) / len(evas)if __name__=="__main__":cb=CBRecommend(K=10)cb.recommend(1)print(cb.evaluate())

基于内容的推荐算法(Content-Based)相关推荐

  1. 一文全面了解基于内容的推荐算法

    作者丨gongyouliu 来源 | 转载自大数据与人工智能(ID:ai-big-data) 这篇文章我们主要关注的是基于内容的推荐算法,它也是非常通用的一类推荐算法,在工业界有大量的应用案例. 本文 ...

  2. 吴恩达机器学习系列23:基于内容的推荐算法

    如今,推荐算法已经深入到我们生活的各个方面,比如说淘宝根据我们之前的浏览记录给我们推荐想要购买的商品:抖音不停地给我们推荐各种我们感兴趣的视频(虽然我个人不太喜欢抖音,觉得抖音会让我们丧失独立思考的能 ...

  3. 新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)

    2018/10/04更新 这篇文章似乎被越来越多的小伙伴看到了,所以觉得有必要做一些进一步的详细说明. 首先按照本文所讲解的推荐思路进行新闻推荐的推荐系统,我已经实现并已经放在Github上了.欢迎小 ...

  4. 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)

    转自: 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Content-Based Recommendation),于是借此机会,基于自己看了网上各种资料后对该分类方法的 ...

  5. 推荐系统-基于内容的推荐算法(Content-Based)

    基于内容的推荐算法(Content-Based) 简介 基于内容的推荐方法是非常直接的,它以物品的内容描述信息为依据来做出的推荐,本质上是基于对物品和用户自身的特征或属性的直接分析和计算. 例如,假设 ...

  6. 《网络电视节目推荐系统----基于用户协同过滤与基于内容的推荐算法的后融合》

    文章目录 一.什么是推荐系统 二.产生原因 由上我们可以得知,推荐系统产生的两大原因 三.应用场景 四.推荐系统的评测方法 1. 推荐系统的三大实验方法 a. 离线实验: b. 用户调查 c. 在线实 ...

  7. 基于内容的推荐算法的php实现,基于内容的个性化推荐算法

    摘要:个性化推荐算法有许多类别,主要包括基于内容的推荐.协同过滤.SVD.基于知识的推荐以及混合推荐算法.本文介绍基于内容的推荐算法(Content-basedRecommendation).基于内容 ...

  8. python机器学习之基于内容的推荐算法中推荐麻辣香锅菜品实战(附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 推荐算法相信大家都不陌生,日常生活的各种APP都会根据你的喜好和特征来给你推荐,接下来详细介绍一下其中的基于内容的推荐算法 基于内容的模式起源于信 ...

  9. 一文看懂基于内容的推荐算法

    作者 | gongyouliu 来源 | 数据与智能 从本篇开始我们来详细讲解各类推荐算法.这篇文章我们主要关注的是基于内容的推荐算法,它也是非常通用的一类推荐算法,在工业界有大量的应用案例. 本文会 ...

最新文章

  1. Elasticsearch 在互联网公司大量真实的应用案例
  2. JavaScript中的执行环境
  3. 如何克服工作经历中的挫折或低潮期
  4. Hybris (SAP旗下的软件公司)
  5. java String 转boolean
  6. 湍流退化图像复原如何使用matlab,湍流退化图像复原技术研究现状及展望
  7. Linux中的存储设备管理
  8. 织梦charset.func.php,DEDECMS织梦程序实现熊掌号API提交接口推送(PHP推送)
  9. HZOJ visit
  10. android--gradle编译龟速?offline!
  11. 中文系统使用日文键盘-转
  12. 在微信上直播的优势有那些
  13. Jenkins linux 操作系统一键部署多节点
  14. android 手机分辨率怎么查看,android获取手机屏幕分辨率
  15. ArcGIS 读写lyr层文件
  16. 图形化生物软件专题(4):MEGAN
  17. 日本测试人工智能破案,“机械战警”渐行渐近
  18. 2020年全球数据中心十大发展趋势
  19. 【总结】java.lang.StackOverflowError错误原因及解决办法
  20. 吴俊计算机音乐研究者,音乐创作中计算机音乐技术的应用研究

热门文章

  1. sublime Text3 编辑器中 ANSI编码的汉字出现乱码
  2. Pycharm、xshell、xming连接远程服务器图形界面显示
  3. OpenFace编译遇到的各种问题
  4. 揭秘 HAP 激光雷达上“车”之路
  5. oracle dba 日常工作,OracleDBA职责及日常工作是什么?
  6. 日常工作--定位查看服务器日志笔记
  7. 圣斗士星矢游戏抽奖计算机怎么计算,圣斗士星矢手游抽奖概率是多少 抽奖概率公布[多图]...
  8. 一部手机即可,在头条号做影视解说短视频,一个月有5000
  9. ps怎么做手绘水彩画效果装饰画
  10. android ratingbar 点击事件,android – Capture RatingBar点击