推荐算法公式求解,求各位回复

问题遇到的现象和发生背景

【我是产品,不是技术】在推荐系统中,这个公式没看懂,可能和我数学不行也有关系,求解,红包送上,
能够给解释一下公式或者计算逻辑就可以

img

img

尝试过的解决方法

百度

我想要达到的结果

1、解释一下这个公式的含义即可

你这是什么书,上下文是什么,这就是协同过滤算法,但是具体含义要看上下文

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7792359
  • 这篇博客你也可以参考下:感知机中重点考虑的知识点以及某点到超平面距离公式的推导
  • 除此之外, 这篇博客: 计算机专业实习怎么找?大厂付费内推实习证明有用吗?中的 渠道二:就读学校的实习招聘官网、公众号或者班级群 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 每年到大三暑期实习季,学校基本会与很多企业联合开办几场暑期实习招聘专场,以便大学生们获得实习机会,同时学校官网、公众号上也会不定时推送各类公司暑期实习招聘信息,班级群内辅导员也会发布一些靠谱的实习机会,这些暑期实习机会都是免费且真实可靠的。如果你也有暑期实习的需求,建议关注下学校官网与公众号,或者咨询下就业办老师,会获得很多暑期实习机会。

  • 您还可以看一下 CSDN就业班老师的机器学习数学基础之概率与统计推断视频教学课程中的 贝叶斯公式小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以给出一些推荐算法相关的公式和解释:

    1. 余弦相似度公式
    def cosine_sim(a, b):
        dot_product = np.dot(a, b)
        norm_a = np.linalg.norm(a)
        norm_b = np.linalg.norm(b)
        return dot_product / (norm_a * norm_b)
    

    上面的公式用于计算两个向量之间的余弦相似度,可以用于推荐系统中的协同过滤算法。

    1. 基于用户的协同过滤算法公式
    def user_cf(data, user_id):
        users = data.user_id.unique()
        sim = {}
        for u in users:
            sim[u] = cosine_sim(data[data.user_id == user_id].rating.values,
                                data[data.user_id == u].rating.values)
    
        wtu = data[data.user_id.isin(users)]['rating'].groupby(
                data['user_id']).apply(list).apply(np.array)
        ratings = wtu.to_dict()
    
        preds = []
        for item in data.item_id.unique():
            if item not in data[data.user_id == user_id].item_id.unique():
                numerator, denominator = 0.0, 0.0
                for u in wtu.index:
                    if rating := ratings.get(u):
                        if item in data[data.user_id == u].item_id.unique():
                            s = sim[u]
                            numerator += s * (data[(data.user_id == u) &
                                                   (data.item_id == item)].rating.values[0] -
                                              rating.mean())
                            denominator += abs(s)
                if denominator != 0:
                    preds.append((item, rating.mean() + numerator / denominator))
        return sorted(preds, key=lambda x: x[1], reverse=True)
    

    上面的公式用于基于用户的协同过滤算法,用于给用户推荐物品。使用余弦相似度计算用户之间的相似度,然后用这些相似度给出预测评分。

    1. 基于物品的协同过滤算法公式
    def item_cf(data, user_id):
        users = data.user_id.unique()
        wti = data[data.user_id.isin(users)]['rating'].groupby(
                data['item_id']).apply(list).apply(np.array)
        item_ratings = wti.to_dict()
    
        sim = {}
        for item_i in data.item_id.unique():
            for item_j in data.item_id.unique():
                if item_i != item_j:
                    if (item_i, item_j) not in sim and (item_j, item_i) not in sim:
                        mask = data[(data.item_id == item_i) | 
                                    (data.item_id == item_j)].pivot_table(
                                        index='user_id', columns='item_id', 
                                        values='rating', fill_value=0)
                        s = cosine_sim(mask[item_i].values, mask[item_j].values)
                        sim[(item_i, item_j)] = s
                        sim[(item_j, item_i)] = s
    
        numerator, denominator = {}, {}
        for i in wti.index:
            numerator[i] = 0.0
            denominator[i] = 0.0
    
        for u in data[data.user_id == user_id].user_id.unique():
            for i in data[data.user_id == u].item_id.unique():
                rui = data[(data.user_id == u) & (data.item_id == i)].rating.values[0]
                for j in wti.index:
                    if j != i:
                        if rating := item_ratings.get(j):
                            if u in data[data.item_id == j].user_id.unique():
                                s = sim[(i, j)]
                                ruj = data[(data.item_id == j) & 
                                              (data.user_id == u)].rating.values[0]
                                numerator[j] += s * (ruj - rating.mean())
                                denominator[j] += abs(s)
        preds = []
        for i in wti.index:
            if i not in data[data.user_id == user_id].item_id.unique():
                if denominator[i] != 0:
                    preds.append((i, item_ratings[i].mean() + numerator[i] / denominator[i]))
        return sorted(preds, key=lambda x: x[1], reverse=True)
    

    上面的公式用于基于物品的协同过滤算法,同样用于给用户推荐物品。使用余弦相似度计算物品之间的相似度,然后用这些相似度和用户和物品历史评分计算出预测评分。

    希望这些公式和代码可以帮到你解决相关问题。