推荐算法介绍

推荐算法:

​ 推荐算法是计算机专业中的一种算法,通过一些数学算法,推测出用户可能喜欢的东西,目前应用推荐算法比较好的地方主要是网络,其中淘宝做的比较好。

发展背景:

​ 推荐算法的研究起源于20世纪90年代,由美国明尼苏达大学 GroupLens研究小组最先开始研究,他们想要制作一个名为 Movielens的电影推荐系统,从而实现对用户进行电影的个性化推荐。首先研究小组让用户对自己看过的电影进行评分,然后小组对用户评价的结果进行分析,并预测出用户对并未看过的电影的兴趣度,从而向他们推荐从未看过并可能感兴趣的电影。此后, Amazon开始在网站上使用推荐系统,在实际中对用户的浏览购买行为进行分析,尝试对曾经浏览或购买商品的用户进行个性化推荐。根据 enture Beat的统计,这一举措将该网站的销售额提高了35%自此之后,个性化推荐的应用越来越广泛。

推荐算法分类:

基于内容:项目或对象是通过相关特征的属性来定义的,系统基于用户评价对象的特征、学习用户的兴趣,考察用户资料与待预测项目的匹配程度。用户的资料模型取决于所用的学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。

基于协同:基于协同过滤的推荐算法( Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,从而根据这一喜好程度来对目标用户进行推荐。

基于关联规则:以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集y,其直观的意义就是用户在购买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会购买面包。

基于效用:基于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。

基于知识:基于知识的方法因它们所用的功能知识不同而有明显区别。效用知识( FunctionalKnowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。

组合推荐:由于各种推荐方法都有优缺点,所以在实际中,组合推荐( Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。

推荐方法 优点 缺点
基于内容推荐 推荐结果直观,容易解释;不需要领域知识 新用户问题;复杂属性不好处理;要有足够数据构造分类器
协同过滤推荐 新异兴趣发现、不需要领域知识;随着时间推移性能提高;推荐个性化、自动化程度高;能处理复杂的非结构化对象 稀疏问题;可扩展性问题;新用户问题;质量取决于历史数据集;系统开始时推荐质量差;
基于规则推荐 能发现新兴趣点;不要领域知识 规则抽取难、耗时;产品名同义性问题;个性化程度低;
基于效用推荐 无冷开始和稀疏问题;对用户偏好变化敏感;能考虑非产品特性 用户必须输入效用函数;推荐是静态的,灵活性差;属性重叠问题;
基于知识推荐 能把用户需求映射到产品上;能考虑非产品属性 知识难获得;推荐是静态的

协同过滤推荐:

1.启发式推荐算法(Memory-based algorithms)

启发式推荐算法易于实现,并且推荐结果的可解释性强。启发式推荐算法又可以分为两类:

基于用户的协同过滤(User-based collaborative filtering):主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。举个例子,李老师和闫老师拥有相似的电影喜好,当新电影上映后,李老师对其表示喜欢,那么就能将这部电影推荐给闫老师。

基于物品的协同过滤(Item-based collaborative filtering):主要考虑的是物品和物品之间的相似度,只有找到了目标用户对某些物品的评分,那么就可以对相似度高的类似物品进行预测,将评分最高的若干个相似物品推荐给用户。举个例子,如果用户A、B、C给书籍X,Y的评分都是5分,当用户D想要买Y书籍的时候,系统会为他推荐X书籍,因为基于用户A、B、C的评分,系统会认为喜欢Y书籍的人在很大程度上会喜欢X书籍。

2.基于模型的推荐算法(Model-based algorithms)

基于模型的推荐算法利用矩阵分解,有效的缓解了数据稀疏性的问题。矩阵分解是一种降低维度的方法,对特征进行提取,提高推荐准确度。基于模型的方法包括决策树、基于规则的模型、贝叶斯方法和潜在因素模型。

推荐框架:tensorflow,pytorch

推荐系统的目的:

1.帮助用户快速找到想要的商品,提高用户对网站的忠诚度;

2.提高网站交叉销售能力、成交转化率;

流程

首先,找到User1 喜欢的商品;

找出与User1具有相同的商品兴趣爱好的人群;

找出该人群喜欢的其他商品;

将这些商品推送给User1。

例子

两名用户都在某电商网站购买了A、B两种产品。当他们产生购买这个动作的时候,两名用户之间的相似度便被计算了出来。其中一名用户除了购买了产品A和B,还购买了C产品,此时推荐系统会根据两名用户之间的相似度会为另一名用户推荐项目C。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xG5NFnTQ-1589271640144)(C:/Users/lql/Desktop/笔记/pic/推荐算法1.png)]

难点1:如何获取兴趣相似的用户

思路:通过购买过相同商品为介质,关联用户的关系

难点2:计算相似度

欧氏距离计算(计算两个点之间的直线距离)
∣x∣=(x12+x22+…+xn2)|x| = \sqrt{ (x_1^2 + x_2^2 + … + x_n^2)} ∣x∣=(x12​+x22​+…+xn2​)​

import math
# 计算两点之间的距离
def eucliDist(A,B):return math.sqrt(sum([(a - b)**2 for (a,b) in zip(A,B)]))
X = [1,2,3,4]
Y = [0,1,2,3]
print(eucliDist(X,Y))

难点3:如何将算法落地,实现推荐功能

根据用户的购买/收藏关系推荐商品

data = {"1":{"诺基亚":4.8,'iphone':5.0,"联想":0.1},"2":{"诺基亚":3.0,"vivo":5.0,"htc":0.2},"3":{"锤子":0.1,"魅族":0.3,"一加":5.0}
}#| x | = √(x[1]2 + x[2]2 + … + x[n]2)from math import *#pow返回 xy(x的y次方) 的值
#sqrt返回数字x的平方根#计算用户之间的相似度
def Euclid(user1,user2):#根据key获取valueuser1_data = data[user1]user2_data = data[user2]distance = 0for key in user1_data.keys():if key in user2_data.keys():distance += pow(float(user1_data[key]) - float(user2_data[key]),2)#变成小数便于比较,值越小相似度越高return 1/(1+sqrt(distance))print(Euclid("1","2"))#构建最相似的用户top_people
def top_user(user):res = []for uid in data.keys():if not uid == user:simliar = Euclid(user,uid)res.append((uid,simliar))res.sort(key=lambda val:val[1])return resprint(top_user('1'))#构建推荐商品
def recommend(user):top_people = top_user(user)[0][0]#获取当前相似度最高的用户的商品列表items = data[top_people]recommed_list = []for item in items.keys():#当这个商品不存在于目标用户的商品列表中,添加到推荐列表中if item not  in data[user].keys():recommed_list.append((item,items[item]))#根据推荐列表里的打分请款从小到大排序,然后反转recommed_list.sort(key=lambda val:val[1],reverse=True)#取出top10推荐return recommed_list[:10]print(recommend("1"))

推荐算法的介绍+简单例子相关推荐

  1. 常见的推荐算法原理介绍

    常见的推荐算法原理介绍,随着互联网的发展短视频运营越来越精准化,我们身边常见的抖音.火山小视频等软件让你刷的停不下来,这些软件会根据你的浏览行为推荐你感兴趣的相关内容,这就用到了很多推荐算法在里面. ...

  2. 推荐算法的介绍以及实现一个简单的推荐算法(python实现协同过滤)

    推荐算法: ​ 推荐算法是计算机专业中的一种算法,通过一些数学算法,推测出用户可能喜欢的东西,目前应用推荐算法比较好的地方主要是网络,其中淘宝做的比较好. 发展背景: ​ 推荐算法的研究起源于20世纪 ...

  3. slope one 推荐算法python 代码_基于协同的SlopeOne推荐算法原理介绍和实现

    Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 的协同过滤推荐算法. --文章概要 该篇文章主要介绍Slope One算法.Slope ...

  4. 神经网络算法基本介绍,简单神经网络算法原理

    神经网络是什么? 生物神经网络主要是指人脑的神经网络,它是人工神经网络的技术原型. 人脑是人类思维的物质基础,思维的功能定位在大脑皮层,后者含有大约10^11个神经元,每个神经元又通过神经突触与大约1 ...

  5. java常用算法之冒泡排序简单例子

    为了更好的理解冒泡排序过程,下面举一个实例. 初始数组 118 101 105 127 112 一次排序 101 118 105 112 127 二次排序 101 105 118 112 127 三次 ...

  6. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法

    作者丨gongyouliu 编辑丨Zandy 来源 | 大数据与人工智能(ID: ai-big-data) 作者在<协同过滤推荐算法>.<矩阵分解推荐算法>这两篇文章中介绍了几 ...

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

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

  8. 我注册了某音帐号之后。。。(内含推荐算法)

    写在前面 某音作为风靡中外的一款音乐创意短视频社交软件,其成功性不言而喻,一直听说其强大的"威力",但却从没深入研究过,作为人民的先锋队,这怎么行,毅然决然的我,在上周五注册了一个 ...

  9. (三)协同过滤算法之基于物品的推荐算法python实现

    一.背景介绍 互联网的迅猛发展将人类带入了信息社会和网络经济时代,信息化影响到了生活的方方面面.但是随着互联网产业的扩大,为用户提供更多选的同时也带来了筛选与推荐的难题.于是便提出了推荐算法帮助用户快 ...

最新文章

  1. docker 安装mysql_docker|docker安装mysql数据库
  2. int *p=new int; int *p=new int[10]; int *p=new int(10);这三个有什么区别
  3. linux线程相关函数接口
  4. GPT Plus Money!B O O M
  5. 激战2:逐火之路-概念艺术设计
  6. Linux下查看端口状态的小工具lsof
  7. dfs深度优先算法实现图的遍历(C++)
  8. Typora实用快捷键
  9. html标题居中加背景色,如何设置CSS背景宽度后让文字居中?
  10. 一加7从服务器检索信息时出错,一加全能盒子(com.daxiaamu.op7mutools) - 7.8 - 应用 - 酷安...
  11. nest中文文档_如何将Nest Cam事件记录到Google文档电子表格
  12. Git中创建一个新的分支并推送
  13. 文件管理 磁盘空间管理
  14. 佛山市专精特新中小企业培育奖励及申报条件,补贴20-50万
  15. QQ空间游戏基地刷分0821更新版
  16. C/C++ Qt 数据库QSql增删改查组件应用
  17. 多种发动机,的机械原理图 动画图解
  18. Random Forest随机森林
  19. 强烈建议学好计算机专业五大核心课程:
  20. Intellij IDEA web项目页面中文乱码解决方案

热门文章

  1. 点阵字符和矢量字符的区别
  2. Storm上游数据源之Kakfa
  3. 基于RK3588的8K全景相机方案
  4. linux centos7 rhel7 虚拟机中怎么挂在卸载 光盘镜像 U盘
  5. java数组初始_java数组初始化的三种方式
  6. Python爬虫——XPath的使用
  7. 新疆阿克苏市领导一行考察实在智能,实在数字员工,用技术助力政企数字化转型
  8. python set函数排序_python的set函数 Python中的set会自动排序
  9. Linux下设置后台启动nohup命令
  10. 华为p40手机自带计算机,华为P40自带哪些应用?