浅析|用协同过滤实现电商个性化推荐系统

Posted 人机耦合

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析|用协同过滤实现电商个性化推荐系统相关的知识,希望对你有一定的参考价值。


我们平时使用的app里面,会有一些类似于猜你喜欢的功能,如网易云、酷狗,或者有些app会优先推荐你喜欢的商品


逛淘宝的时候,我们会被一些推荐的商品吸引到,它们诱发了你的购买欲,结果脑子一热,就把它们加入了购物车


这些“剁手邀请”背后都有一个推荐系统的概念


他们在做完用户画像分析后,对用户分类,挖掘出潜在的价值,从而提升业务价值,以提高公司的利润


推荐系统最基本的算法就是协同过滤

具体来说,协同过滤的思路是通过群体的行为来找到某种相似性(用户之间的相似性或者标的物之间的相似性),通过该相似性来为用户做决策和推荐。

协同过滤分四种 

基于用户相似的推荐

基于物品相似的推荐

基于标签的推荐

基于上下文的推荐

这里来实现一下基于物品相似的推荐

代码块显示效果

数据处理

from math import sqrt
import operator

#1.构建用户-->物品的倒排
def loadData(uid_score_bid):
    data ={}
    for line in uid_score_bid:
        user,score,item=line.split(",")
        data.setdefault(user,{})
        data[user][item]=score
    return data

计算共现矩阵和相似矩阵

#2.计算
# 2.1 构造物品-->物品的共现矩阵
# 2.2 计算物品与物品的相似矩阵
def similarity(data):
    # 2.1 构造物品:物品的共现矩阵
    N={}#喜欢物品i的总人数
    C={}#喜欢物品i也喜欢物品j的人数
    for user,item in data.items():
        for i,score in item.items():
            N.setdefault(i,0)
            N[i]+=1
            C.setdefault(i,{})
            for j,scores in item.items():
                if j not in i:
                    C[i].setdefault(j,0)
                    C[i][j]+=1
    print("---2.构造的共现矩阵---")
    print('N:',N)
    print('C',C)
    #2.2 计算物品与物品的相似矩阵
    W={}
    for i,item in C.items():
        W.setdefault(i,{})
        for j,item2 in item.items():
            W[i].setdefault(j,0)
            W[i][j]=C[i][j]/sqrt(N[i]*N[j])
    print( "---3.构造的相似矩阵---")
    print(W)
    return W

给用户推荐他喜欢的物品

#3.根据用户的历史记录,给用户推荐物品
def recommandList(data,W,user,k=3,N=10):
    rank={}
    for i,score in data[user].items():#获得用户user历史记录,如A用户的历史记录为{'a': '1', 'b': '1', 'd': '1'}
        for j,w in sorted(W[i].items(),key=operator.itemgetter(1),reverse=True)[0:k]:#获得与物品i相似的k个物品
            if j not in data[user].keys():#该相似的物品不在用户user的记录里
                rank.setdefault(j,0)
                rank[j]+=float(score) * w
    print ("---4.推荐----")
    print(sorted(rank.items(),key=operator.itemgetter(1),reverse=True)[0:N])
    return sorted(rank.items(),key=operator.itemgetter(1),reverse=True)[0:N]

输入用户的历史数据,输出推荐的物品

if __name__=='__main__':
    #用户,兴趣度,物品
    uid_score_bid = ['A,1,a''A,1,b''A,1,d''B,1,b''B,1,c''B,1,e''C,1,c''C,1,d''D,1,b''D,1,c''D,1,d',
                     'E,1,a''E,1,d']
    data=loadData(df5)#获得数据
    W=similarity(data)#计算物品相似矩阵
    recommandList(data,W,'A',3,10)#给A用户推荐物品


算法原理

余弦值求相似度

    

浅析|用协同过滤实现电商个性化推荐系统


公式的推导


浅析|用协同过滤实现电商个性化推荐系统


比较典型就是用户相似的推荐  
例如用户A和用户C都喜欢A、B物品  
那么他们两个就是相似的用户  

我就可以把用户C喜欢的D物品推荐给用户A


浅析|用协同过滤实现电商个性化推荐系统


推荐系统又称推荐平台、推荐引擎,是信息过滤系统的一个分支,目的是预测用户对某一产品的评分或兴趣程度


现在已经被广泛运用于电影、音乐、新闻、书籍和产品推荐等领域


在网络技术不断发展的背景下,信息源源不断地涌入了我们的日常生活

一方面满足了对于信息的需求

另一方面却导致了信息过载的问题

尤其在电子商务行业中,快速增长的商品个数和种类渐欲迷人眼,在找到符合自己需求的产品之前,消费者往往需要耗费大量时间浏览无关的内容,这种低效的体验很容易导致消费者流失


这时候推荐系统就显得尤为重要


当然用的最多还是基于用户的协同过滤和基于物品的协同过滤

就像是所谓的“人以类聚,物以群分”

最后,没有完美的算法,只有最合适的算法

现在的实践,也不是单纯用协同过滤来做推荐,而是将他们作为其中的一个或几个召回策略来使用而已


end


    看更多走心好文章               

         请长按下方图片浅析|用协同过滤实现电商个性化推荐系统              

浅析|用协同过滤实现电商个性化推荐系统

喜欢就关注一下

浅析|用协同过滤实现电商个性化推荐系统
 

以上是关于浅析|用协同过滤实现电商个性化推荐系统的主要内容,如果未能解决你的问题,请参考以下文章

Python+Django+Mysql个性化二手车推荐系统 汽车推荐系统 基于用户项目内容的协同过滤推荐算法 WebCarCFRSPython python实现协同过滤推荐算法实现源代码下载

Python+Django+Mysql个性化购物商城推荐系统 电子商务推荐系 基于用户项目内容的协同过滤推荐算法 WebShopRSMPython python实现协同过滤推荐算法实现源代码下载

个性化推荐系统推荐算法

个性化推荐系统推荐算法

Python+Django+Mysql志愿者活动推荐系统 基于用户项目内容的协同过滤推荐算法 SimpleWebActivityCFRSPython python实现协同过滤推荐算法实现源代码下载

推荐算法之基于用户的协同过滤