智能推荐

《智能推荐》教学视频

推荐系统

随着信息技术和互联网的发展,人们从信息匮乏时代步入了信息过载时代。在这种背景下,人们越来越难从大量的信息中找到自身感兴趣的信息,信息也越来越难以展示给可能对它感兴趣的用户。推荐系统的任务就是连接用户和信息,进而创造价值。在我们如今的生活当中,推荐系统已应用得非常广泛了,特别是在面向互联网的用户当中发挥着及其重要的作用。

推荐系统的应用场景

  • 音乐电影推荐

在个人娱乐方面,音乐、电影的网站都会有向用户推荐符合用户自己口味的音乐和电影的功能。

  • 电商的推荐

在电商方面,电商平台有非常强烈的述求,向它的用户推荐用户可能购买的产品,这样的推荐越精准,用户购买的可能性就越高,那么带来的经济利益也就越大。

  • 新闻的推荐

在新闻方面的推荐,特别现在各种app,都根据用户的行为习惯给用户推荐他可能感兴趣的新闻。千人千面的新闻推荐系统,已经是现在非常主流的一种应用形式。

推荐系统的价值

推荐系统的意思相当于“猜你喜欢”,根据用户个性化的口味,猜出用户可能喜欢的产品。推荐系统既服务于用户,也服务于商家。

  • 服务用户:帮助用户准确找到感兴趣的信息
  • 在有限的时间内,给用户曝光他潜意识里想看的、想买的物品....
  • 服务商家:帮助商家带来更多的用户关注、销量
  • 具体表现:浏览更多、点击更多、购买更多.......

推荐系统原理

    推荐系统可以简单地抽象成一个m*n的矩阵,我们用一个矩阵来讲述推荐系统的原理。

 

矩阵中行表示用户(Users),列表示物品(Items),矩阵里的每个数字代表某个用户对某个商品的评价(Ratings)。评价范围为1-5,数字越大,代表评价越高;而矩阵里的 “?”表示当前用户未使用或未购买该产品,推荐系统要预测数这个用户对这个产品的评价数字,也即推荐系统要猜出每个“?”的数字是多少,数字越大表示用户对产品越喜欢,然后根据数字的大小给用户推荐数字大的产品。

推荐系统的典型算法思想

为了更精准的得到推荐的数字,前辈们使用了传统的推荐系统算法和基于深度学习的推荐系统算法。其中基于传统的推荐系统算法当中,比较经典的有基于内容的推荐和协同过滤的推荐算法。

  • 基于内容的推荐

基于内容的推荐是给用户推荐和他感兴趣的内容同样类型的内容。

例如:小明看了周星驰的电影《喜剧之王》,系统可能会给小明推荐《功夫》,这是因为它们在演员的维度上都属于周星驰这个分类;系统也可能给小明推荐《人在囧途》,这是因为在影片类型上,它们都属于喜剧片这个类型。

基于内容的推荐需要在各维度上对内容进行精准有效的分类,如果分类没有做好,有效的推荐也就无从谈起。

  • 基于物品属性、用户的画像,一般需要人工打标签
  • 方法朴素、简单
  • 难以抽取物品的特征、无法挖掘出用户潜在的兴趣
  • 基于协同过滤的推荐

基于协同过滤的推荐又分为基于物品的推荐和基于用户的推荐。

基于物品的协同过滤推荐(Item-Based CF):其本质就计算物品之间的相似度,然后获取与目标用户交互物品相似度较高的物品,并将其推荐给目标用户。

该算法的思想:物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B。

基于物品的协同过滤主要分为两步:

  1. 计算物品之间的相似度;
  2. 计算物品的相似度和用户的历史行为记录给用户生成推荐列表

基于用户的协同过滤推荐(User-Based CF):其本质就是计算用户之间的相似度,然后获取与目标用户相似度较高的用户,并将其交互物品中评分较高的推荐给目标用户。

 

文本卷积网络

近些年来,深度学习在很多领域都取得了巨大的成功。学术界和工业界都在尝试将深度学习应用于个性化推荐系统领域中。深度学习具有优秀的自动提取特征的能力,能够学习多层次的抽象特征表示,并对异质或跨域的内容信息进行学习,可以一定程度上处理个性化推荐系统冷启动问题。

网络结构

    我们知道卷积神经网络一般用来处理矩阵型的数据,而对于序列型的数据一般采用RNN进行处理。在情感分析上我们就使用的是RNN来处理文本数据,然而我们也可以把文本数据组织成矩阵的形式,就可以使用CNN算法对文本进行处理。使用CNN来处理文本数据要比使用RNN来处理文本数据的效率高。

使用CNN处理文本数据:

  • 将词映射为 向量
  • 将向量拼接为矩阵
  • 对矩阵做卷积
  • 对卷积的结果pooling
  • 对池化的结果做拼接

首先将输入的词语embedding为词向量,变成向量之后,我们将这些词向量堆叠起来变成矩阵,然后对矩阵进行卷积运算,对卷积运算的结果做池化运算,然后将池化的结果拼接成一个长向量,输入给FC层进行全连接运算,这样就完成了从词语到特征输出的全部流程。

  • 例子

有一个单词序列:

puma are large, catlike animals …

将单词序列转换为词向量,并堆叠为矩阵:

给矩阵加padding(对向量数据来说只给最开始和最末尾加padding):

卷积核(该卷积核非正方形的,卷积核的宽度一定要与词向量的宽度相同,高度可设置,一般为3-5):

用卷积核对矩阵进行卷积(第一列表示卷积的标识,第二列记录卷积结果):

对于一个卷积核进行卷积我们只能得到一个通道的数据,若我们增加一个一样的卷积核,再进行同样的卷积运算,我们可得到另一个卷积的数据(在CNN对图片的处理时就是使用多个卷积核产生多个通道)。我们也可以调节卷积核的大小,这里调节大小只能调节高度,来时的卷积得到的特征更加丰富。

下面从宏观上讲述面向文本的卷积神经网络是如何工作的:

首先对每个单词转化为词向量,然后把词向量堆叠为一个矩阵,如图得到一个7*5的矩阵。接下来准备若干个卷积核,这里分别准备了4*5、3*5、2*5的卷积核共6个人,然后用每个卷积核对矩阵进行卷积,然后会得到6个卷积向量,接着对每个卷积向量做一次pooling(通常使用maxpooling),然后把pooling后的结果拼接成一个向量,最后把这个向量用作后续的计算。

 

【AI实战营】第三期开启招募啦!!!

收藏 评论(2)
分享到:
共2条回复 最后由筱Myselfkv 回复于2019-08-11 18:35
#2 筱Myselfkv 回复于2019-08-09

棒棒哒

0
#3 筱Myselfkv 回复于2019-08-11

棒棒哒

0