美文网首页
推荐系统召回之内容画像(三)

推荐系统召回之内容画像(三)

作者: 文子轩 | 来源:发表于2021-03-19 14:43 被阅读0次

一 基于内容的推荐系统

基于内容的推荐方法特别适用于文本领域,比如新闻的推荐等等。

首先核心构造商品画像,之后根据画像来寻找最相似的其它商品
image.png

那具体如何判断那些是最相似的商品呢?答案是:计算相似度!

image.png

二基于内容的推荐系统的原理

2.1相似度计算

那又如何计算相似度?
答:转换成向量形式,计算两个向量之间的相似度。最经典的评估方法就是余旋相似度。
例子:电影构造物品画像

image.png

问题:如何把这些特征表示成向量
离散型变量 ----- 通过独热编码的形式转换成向量
数值型变量------ 直接使用等等

问题:那么文本的特征如何处理?比如电影的描述
答:设计NLP领域。我们可以直接使用TF-IDF的方式即可以转换成向量的形式。当然我们也可以使用 Word2Vec 等技术来表示成向量。

向量表示特征
例子:特征也叫画像:

image.png
计算相似度公式(常用余旋相似度
image.png
问题:如果使用余旋相似度来计算每两个物品之间的相似度.
image.png

相似度推荐排序

image.png

**基于算法的推荐算法优缺点
优点:推荐较为准确


image.png

缺点:(主要冷启动问题)


image.png

如何去处理新用户的冷启动的问题
冷启动在推荐系统非常常见,在基于内容的推荐算法中,一旦一个新用户来,由于他还没有购买任何物品,所以无法给他推荐任何物品

image.png

解决冷启动的问题总结
1.推荐目前热度最高的商品:
2.让用户自己标记一下自己喜欢的商品类型(APP新用户)
问题:基于内容的推荐还有个很大问题,就是如何去维护物品之间的相似度
答:计算单个物品与其它物品之间的相似度。排序存在相似度矩阵,使用时直接调度。
总结:基于内容时目前常用,火热的推荐算法。


image.png
# coding: utf-8 -*-
 
"""
    Author: Alan
    Desc:
         编写一个基于内容推荐算法的电影推荐系统(训练模型)
"""
import json
import pandas as pd
import numpy as np
import math
import random
 
class CBRecommend:
    # 加载dataProcessing.py中预处理的数据
    def __init__(self,K):
        # 给用户推荐的item个数
        self.K = K
        self.item_profile=json.load(open("data/item_profile.json","r"))
        self.user_profile=json.load(open("data/user_profile.json","r"))

    # 获取用户未进行评分的item列表
    def get_none_score_item(self,user):
        items=pd.read_csv("data/movies.csv")["MovieID"].values
        data = pd.read_csv("data/ratings.csv")
        have_score_items=data[data["UserID"]==user]["MovieID"].values
        none_score_items=set(items)-set(have_score_items)
        return none_score_items
 
    # 获取用户对item的喜好程度(余弦相似度)
    def cosUI(self,user,item):
        Uia=sum(
            np.array(self.user_profile[str(user)])
            *
            np.array(self.item_profile[str(item)])
        )
        Ua=math.sqrt( sum( [ math.pow(one,2) for one in self.user_profile[str(user)]] ) )
        Ia=math.sqrt( sum( [ math.pow(one,2) for one in self.item_profile[str(item)]] ) )
        return  Uia / (Ua * Ia)
 
    # 为用户进行电影推荐
    def recommend(self,user):
        user_result={}
        item_list=self.get_none_score_item(user)
        for item in item_list:
            user_result[item]=self.cosUI(user,item)
        if self.K is None:
            result = sorted(
                user_result.items(), key= lambda k:k[1], reverse=True
            )
        else:
            result = sorted(
                user_result.items(), key= lambda k:k[1], reverse=True
            )[:self.K]
        print(result)
 
    # 推荐系统效果评估
    def evaluate(self):
        evas=[]
        data = pd.read_csv("data/ratings.csv")
        # 随机选取20个用户进行效果评估
        for user in random.sample([one for one in range(1,6040)], 20):
            have_score_items=data[data["UserID"] == user]["MovieID"].values
            items=pd.read_csv("data/movies.csv")["MovieID"].values
 
            user_result={}
            for item in items:
                user_result[item]=self.cosUI(user,item)
            results = sorted(
                user_result.items(), key=lambda k: k[1], reverse=True
            )[:len(have_score_items)]
            rec_items=[]
            for one in results:
                rec_items.append(one[0])
            eva = len(set(rec_items) & set(have_score_items)) / len(have_score_items)
            evas.append( eva )
        return sum(evas) / len(evas)
 
 
if __name__=="__main__":
    cb=CBRecommend(K=10)
    cb.recommend(1)
    print(cb.evaluate())

相关文章

  • 推荐系统召回之内容画像(三)

    一 基于内容的推荐系统 基于内容的推荐方法特别适用于文本领域,比如新闻的推荐等等。 首先核心构造商品画像,之后根据...

  • 召回

    1.推荐系统的召回2.如何理解推荐系统召回模型中的召回3.推荐系统从0到1[二]:个性化召回4.推荐系统二---召...

  • 推荐系统工程篇之搭建以图搜图服务

    基于内容的召回在推荐系统中是比较常见的召回策略,常见有基于用户或物品的标签召回或者基于用户的年龄,地域等召回,一般...

  • 推荐系统工程篇之搭建以图搜图服务

    基于内容的召回在推荐系统中是比较常见的召回策略,常见有基于用户或物品的标签召回或者基于用户的年龄,地域等召回,一般...

  • 推荐系统3

    2.1.2 离线画像流程 画像构建流程位置: 画像构建内容: 画像的构建作为推荐系统非常重要的环节,画像可以作为整...

  • 推荐系统-CTR预估

    简介 推荐系统通常分为召回和排序两个步骤召回:粗排选取合适的内容,可以通过协同过滤,兴趣tag,内容最热等方式排序...

  • 推荐系统精品文章

    推荐系统召回四模型之:全能的FM模型[https://zhuanlan.zhihu.com/p/58160982]...

  • 推荐系统架构-3 用户画像

    一、推荐系统 二、阿里云智能推荐AIRec 三、用户画像介绍 1、用户画像的概念 用户画像是指根据用户的属性、偏好...

  • 召回常用离线评估指标

    推荐系统召回侧:TP:当前召回路有召回,用户有点击FP:当前召回路有召回,用户无点击FN:当前召回路无召回,用户有...

  • 推荐系统-召回

    目前大部分算法模型资料都是针对于排序模型。对召回的讲解很好,但是召回是推荐系统重要而不可或缺的部门。 置顶 突然的...

网友评论

      本文标题:推荐系统召回之内容画像(三)

      本文链接:https://www.haomeiwen.com/subject/hforcltx.html