推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。
推荐系统近年来非常流行,应用于各行各业。推荐的对象包括:电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、以及其他产品。也有一些推荐系统专门为寻找专家、合作者、笑话、餐厅、美食、金融服务、生命保险、网络交友,以及Twitter页面设计。
推荐系统可以把那些最终会在用户(User)和物品(Item)之间产生的连接提前找出来。
常见的有
1,社交产品,从已知的用户好友关系,帮助推荐感兴趣的人,可能认识的人。
2,资讯阅读产品,根据用户过去都点击阅读了哪些内容,以及停留时间等操作,来推荐感兴趣的内容
3,电商平台,用户刚买过什么,常买什么,你正在浏览什么,这些都是用户和物品之间已经存在的连接,用这些连接去预测还会买什么,还会看什么也是推荐系统。
根据推荐算法所用数据的不同分为基于内容的推荐、协同过滤的推荐以及混合的推荐
基于内容推荐利用一些列有关物品的离散特征,推荐出具有类似性质的相似物品
通过算法将“标的物”与人关联起来,“标的物”包含很多自己的属性,用户通过与“标的物”的交互会产生行为日志,这些行为日志可以作为衡量用户对“标的物”偏好的标签,通过这些偏好标签为用户做推荐就是基于内容的推荐算法。比如:你在抖音中观看的感兴趣的视频,有各自的标签,通过系统推荐,下次打开时候,会主动给你推送你感兴趣的视频。
协同过滤方法根据用户历史行为(例如其购买的、选择的、评价过的物品等)结合其他用户的相似决策建立模型。这种模型可用于预测用户对哪些物品可能感兴趣(或用户对物品的感兴趣程度)
用户在产品上的交互行为为用户留下了标记,我们可以利用“物以类聚,人以群分”的朴素思想来为用户提供个性化推荐。一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐,通常需要用到UI矩阵的信息。
对以上算法的融合,既有基于内容的推荐也有协同过滤的推荐。
基于内容的推荐向用户根据用户喜爱物品的直接推荐物品。
内容表示物品的描述。一般是自动从文档或无结构的文本描述中获得。因为在实际环境中对物品的专业描述需要专业人员的人工标注,这个费用是高昂的。
内容表示:物品的内容表示一般是维护每个物品特征的详细列表,例如属性集、特征集、物品记录。
基于内容的推荐的工作原理一般是评估用户还没看到的物品与当前用户过去喜欢的物品的相似程度。用到的典型的相似度方法是Dice系数,每物品Bi由一组关键词keyword(Bi)描述,Dice计算物品bi与bj之间的相似度:
基于内容的推荐一般使用出现在文档中的相关关键词,用不同的方法转换文档内容到关键词列表中。
文档所有词语为一个列表,1表示出现,0表示没有出现,这种方法词语在文档中的重要性相等。
TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)
就是词频,在要提取关键词的文本中出现的次数
计算公式
TF = 某个词在文章中出现的次数/文章的总次数 TF = 某个词在文章中出现的次数/该文出现的最多的词的次数
是提前统计好的,在已有的所有文本中,统计每一个词出现在了多少文本中,记为 n,也就是文档频率,一共有多少文本,记为 N。
计算公式
IDF = log(N/(n+1))
计算出 TF 和 IDF 后,将两个值相乘,就得到每一个词的权重
TF-IDF = TF * IDF
根据该权重筛选关键词的方式有
1)TOP N的方式
2)大于平均值
3)对一些关键词过滤,例如只保留名词或者动词等操作
相关开源 sklearn TfidfVectorizer
算法的基本思想是将文档看作一个词的网络,该网络中的链接表示词与词之间的语义关系
通过 TextRank 计算后的词语权重,呈现出这样的特点:
那些有共现关系的会互相支持对方成为关键词。
相关开源 https://gitee.com/mirrors_summanlp/textrank
jieba,做最好的Python中文分词组件
支持三种分词模式:
相关开源 jieba
TextRank4ZH
内容分类
聚类
词嵌入