读书笔记--推荐系统实践(4)

这次主要谈一下对推荐系统中的用户相似度进行的一个改进。
首先有这样的一个现象,有些热门物品是很多人都共同拥有的,并不能代表兴趣所在,如:新华字典等,然而冷门物品往往可以反应兴趣所在,比如,买了数据挖掘导论,一般只有做数据挖掘的人才会买这个书。所以我们在计算用户相似度的时候,可以考虑给热门物品增加一个惩罚项。
这里写图片描述
算法实现如下:

def UserSimilarity(train):
    #build inverse table for item_users
    item_users = dict()
    for u, items in train.items():
        for i in items.keys():
            if i not in items.keys():
                item_users[i] = set()
            item_users[i].add(u)

    #calculate co-rated items between users
    C = dict()
    N = dict()
    for i, users in item_users.items():
        for u in users:
            N[u] += 1
            for v in users:
                if u == v:
                    continue
                C[u][v] += 1/math.log(1+len(users))

    #calculate finial similarity matrix w
    W = dict()
    for u, related_users in C.items():
        for v, cuv in related_users.items():
            W[u][v] = cuv /math.sqrt(N[u]*N(v))
    return W
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值