在咱们平常浏览各类网站的时候,常常会受到该网站或者应用的推荐,比较典型的例子就是在淘宝天猫上买东西的时候,点击商品,搜索商品或者付款完成后,咱们会发现系统给咱们
列举出了不少类似的物品,或者一些可能相关的物品。好比你要买牙膏,可能点了一款牙膏,它就给你推荐好多款牙膏,可能还会有牙刷,牙线等其余东西。那么咱们不由想问,这个推荐算法它是怎么实现的呢?
咱们今天就来简单的讲讲推荐算法。
首先咱们知道系统推荐的东西,会和咱们想要找的物品很类似,因此这个推荐算法的本质就是在于,根据你搜索点击输入的信息,去给你找到类似的东西。 这里咱们先提出一个概念:类似度。 咱们先来看看二维的世界里,类似度是怎么定义的,也就是咱们这片博文要讲的余弦类似度。
算法
推广到多维向量:a(a1,a2...an),b(b1,b2...bn)
咱们要用到的协同过滤算法和这个差很少:
摘自百度百科:协同过滤简单来讲是利用某兴趣相投、拥有共同经验之群体的喜爱来推荐用户感兴趣的信息,我的经过合做的机制给予信息至关程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不必定局限于特别感兴趣的,特别不感兴趣信息的纪录也至关重要。
协同过滤又可分为评比(rating)或者群体过滤(social filtering)协同过滤以其出色的速度和健壮性,在全球互联网领域煊赫一时。 这样讲干干的咱们看个例子,这里咱们就是根据物品维度来协同过滤bash
咱们如今假设有用户A,B,C,物品1,2,3,4, 5
行为的权重:点击1分, 搜索3分, 收藏6分, 付款10分
而后他们的行为以下
用户 物品 行为
A 1 点击
C 1 付款
A 2 搜索
C 5 点击
B 2 收藏
B 3 点击
B 1 收藏
C 3 点击
A 1 收藏
A 4 点击
B 2 点击网站
1.先将用户信息给聚合成一个用户行为矩阵spa
A B C
1 1点击+1收藏 1收藏 1付款
2 1搜索 1收藏+1点击
3 1点击 1点击
4 1点击
5 1点击
复制代码
转化为数学矩阵3d
A B C
1 1+6 6 10
2 3 6+1
3 1 1
4 1
5 1
复制代码
继续转化code
A B C
1 7 6 10
2 3 7 0
3 0 1 1
4 1 0 0
5 0 0 1
复制代码
2.如今咱们就获得了一个用户和物品的评分矩阵,令它为A,而后用咱们上面说的余弦类似度算法计算出每一种物品间的类似程度。 好比物品1,2之间的类似度
而后咱们能够获得一张物品之间类似度的表格,令它为Bcdn
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | 0 | 0.74 | 0.83 | 0.51 | 0.74 |
2 | 0.74 | 0 | 0.65 | 0.39 | 0 |
3 | 0.83 | 0.65 | 0 | 0 | 0.71 |
4 | 0.51 | 0.39 | 0 | 0 | 0 |
5 | 0.74 | 0 | 0.71 | 0 | 0 |
3.而后咱们经过物品类似度矩阵和以前用户物品评分矩阵相乘得出用户的推荐列表blog
0 | A | B | C |
---|---|---|---|
1 | 2.73 | 6.01 | 1.57 |
2 | 5.57 | 5.09 | 8.05 |
3 | 7.76 | 9.53 | 9.01 |
4 | 4.74 | 5.79 | 5.1 |
5 | 5.18 | 5.15 | 8.11 |
4.将计算结果去除用户已经产生过操做的物品,获得ci
0 | A | B | C |
---|---|---|---|
1 | 0 | 0 | 0 |
2 | 0 | 0 | 8.05 |
3 | 7.76 | 0 | 0 |
4 | 0 | 5.79 | 5.1 |
5 | 5.18 | 5.15 | 0 |
5.最后根据实际状况选取须要的推荐物品,这里咱们就只选评分最高的那个物品,获得 用户_商品_分数的数据 A_3_7.76
B_4_5.79
C_2_8.05
而后就能够选出推荐的物品了~数学