推荐算法

4.1 基于内容的推荐算法

基于内容的推荐算法步骤:

[En]

Content-based recommendation algorithm steps:

  • 特征(内容)提取
    [En]

    * feature (content) extraction

  • 计算用户偏好
    [En]

    * calculation of user preferences

  • 内容召回(召回用户首选的TOP K)
    [En]

    * content recall (recall user’s preferred top K)

  • 条目顺序(可根据TOP K中其他用户平均得分最高的TOP N推荐给用户,优点是可以考虑其他用户的意见)
    [En]

    * order of items (can be recommended to users according to top N with the highest average score of other users in top K, the advantage is that other users’ opinions can be taken into account)

优点:

[En]

Advantages:

  • 条目不存在冷启动问题(因为条目的内容特征不依赖于用户数据),推荐的条目不会太受欢迎。
    [En]

    * items do not have a cold start problem (because the content characteristics of items do not depend on user data), and the recommended items will not be too popular.

  • 能够捕获用户的特殊偏好
    [En]

    * ability to capture users’ special preferences

  • 原理简单,问题定位方便
    [En]

    * simple principle and convenient problem location

基于内容推荐的特征提取

[En]

Feature extraction based on content recommendation

  • 结构特征(可一键编码)
    [En]

    * structural features (can be encoded by onehot)

  • 非结构化特征(例如,文章内容,可以进行分段以获得同义词库T)
    [En]

    * unstructured features (eg, article content, which can be segmented to get a thesaurus T)

  • 基础统计法(存在则对应位置为1,不存在对应位置为0)
  • 词频统计法(对应位置为归一化后的TF-IDF值)

缺点:

[En]

Disadvantages:

  • 提取有意义的特征需要内容,这些特征需要有良好的结构。
    [En]

    * the content is required to extract meaningful features, and these features are required to have a good structure.

  • 推荐准确率低,内容特征相同的项目差异不大
    [En]

    * the accuracy of recommendation is low, and there is little difference between items with the same content characteristics.

TF-IDF的归一化公式:

上述公式保证整个文档的tf-idf和为1,参考:https://www.cnblogs.com/helloandhey/p/11880915.html

4.2 基于协同的推荐算法

基于最近邻的推荐算法分为:

[En]

The recommendation algorithm based on nearest neighbor is divided into:

  • 基于用户的协作:推荐用户喜欢的相似商品
    [En]

    * user-based collaboration: recommend similar items that users like

  • 基于项目的协作:
    [En]

    * item-based collaboration:

两者之间的异同:

[En]

The similarities and differences between the two:

  • 考虑推荐的场景
    [En]

    * consider the recommended scenario

  • 如果用户数远大于物品数,可以考虑使用ItemCF
  • UserCF适用于内容更新频率非常高的平台
  • UserCF适合于社交推荐,ItemCF适用于非社交
  • UserCF注重社会化,ItemCF注重个性化
  • 来自系统多样性
    [En]

    * from system diversity

  • ItemCF推荐的多样性优于UserCF
  • ItemCF容易发现长尾物品,这样精度就会小于UserCF
  • 用户特征对推荐算法的影响:
    [En]

    * the impact of user characteristics on the recommendation algorithm:

  • UserCF假设用户会喜欢和他有相同喜好的用户喜欢的东西,但如果用户找不到兴趣相投的用户,效果就会大打折扣, 因此用户是否适应UserCF算法跟他有多少近邻用户是成正比关系的
  • ItemCF假设用户喜欢和他以前喜欢物品的相似物品,如果一个用户喜欢物品的自相似度大,则说明他喜欢物品比较相似,即比较符合ItemCF的假设

4.3 基于矩阵分解的推荐方法

矩阵分解的方法包括:

[En]

The methods of matrix decomposition are:

  • SVD
  • FM(隐语义模型)

基于奇异值分解的推荐算法流程:

[En]

The flow of recommendation algorithm based on singular value decomposition:

  • 加载该项目的用户评分矩阵
    [En]

    * load the user’s score matrix for the item

  • 分解矩阵,计算奇异值,根据奇异值的能量比例确定降至k的值。
    [En]

    * the matrix is decomposed, the singular value is calculated, and the value reduced to k is determined according to the energy proportion of the singular value.

  • 使用矩阵分解来降低项目评分矩阵的维度
    [En]

    * use matrix decomposition to reduce the dimension of the item scoring matrix

  • 使用简化项目得分矩阵计算项目相似度,并预测用户未评分的项目。
    [En]

    * use the reduced item score matrix to calculate the item similarity and predict the items that have not been scored by the user.

  • 生成高分前n项,返回项号并预测得分
    [En]

    * generate the first n items with a high score, return the item number and predict the score

SVD缺点:

  • 原始矩阵仅用一次分解近似,特征挖掘水平不够深
    [En]

    * the original matrix is approximated by only one decomposition, and the level of feature mining is not deep enough.

  • 矩阵分解不适用于对象本身的内容特征。
    [En]

    * Matrix decomposition does not apply to the content characteristics of the object itself.

4.4 基于稀疏自编码的推荐算法

基础的自编码结构

  • (1)简单的为三层的神经网络(输入层、隐藏层、输出层),输入为样本的特征向量,让输出层的结果和输入层的相同,隐藏层的神经元设置为个,即迫使自编码神经网络去学习输入数据的压缩表示,同时也必须从维的隐藏神经元激活度向量中重构出样本特征维度数目的输入值。
  • (2)如果网络的输入数据是完全随机的,比如每个输入都是一个跟其他特征完全无关的独立同分布高斯随机变,那么这一压缩表示将会非常难学习,但是如果输入数据中隐含着一些特定的结构,比如某些输入特征是彼此相关的,那么这一算法就可以发现输入数据中的这些相关性。
  • (3)有时为了能更有效地找出隐含在输入数据内部的结构和模式,会寻找一组超完备基向量,其维度可能比输入的特征维度还要高
  • (4)在(3)中,隐藏神经元的数量比较大,可以给自编码神经网络增加一些限制,使得满足稀疏性的要求。比如如果神经元输出接近于1时,认为被激活,接近于0时认为被抑制,即Dropout,使得神经元大部分时间都被抑制的被称为 稀疏性限制

多层结构

自编码是最基本的结构,它可以进一步使用深度学习的思想来学习高层抽象特征,如堆栈自编码。

[En]

Self-coding is the most basic structure, which can further use the idea of deep learning to learn high-level abstract features, such as stack self-coding.

栈式自编码原理

训练采用贪婪训练方法,即通过三层自编码结构得到隐含层的特征表示,然后得到二阶特征表示作为第二稀疏自编码输入。

[En]

The greedy training method is used for training, that is, the feature representation of the hidden layer is obtained through the three-layer self-coding structure, and then the second-order feature representation is obtained as the second sparse self-coding input.

然后将二阶特征表示输入到分类器中,并训练模型以将二阶特征表示映射到数字标签。

[En]

Then the second-order feature representation is input into a classifier and a model is trained to map the second-order feature representation to digital tags.

然后将上述三种网格结构组合在一起构成一个完整的堆栈自编码结构,该结构包括:输入层->隐藏层->隐藏层->分类器层。

[En]

Then the above three grid structures are combined to construct a complete stack self-coding structure which includes: input layer-> hidden layer-> hidden layer-> classifier layer.

稀疏自编码在推荐系统中的应用

背景:输入层是一首歌曲,向量特征是用户收集的数据,输出层是音乐流派分类的结果。希望训练歌曲的特征向量,可以用来计算歌曲的相似度。

[En]

Background: the input layer is a song, the vector feature is the data collected by the user, and the output layer is the result of music genre classification. Hope to train the feature vector of the song, which can be used to calculate the similarity of the song.

数据:

[En]

Data:

  • 输入层,每首歌曲的输入向量,表示是否被用户采集,采集时为1,未采集时为0。输入矩阵为(包括一个截取项)、用户数、歌曲数
    [En]

    * input layer, the input vector of each song, which indicates whether it has been collected by the user, 1 for collection and 0 for non-collection. Input matrix is (including an intercept item), the number of users, the number of songs

  • 隐藏层,表示要素维度的数量
    [En]

    * Hidden layer, indicating the number of feature dimensions

  • 输出层,音乐流派分类结果
    [En]

    * output layer, music genre classification results

一般神经网络忽略了隐含层到输出层的权值连接,而在自编码网络中,连接层是有意义的。这些权重用于将歌曲特征向量映射到用户是否听过/喜欢这首歌,这实际上是用户的低维特征。

[En]

The weight connection from the hidden layer to the output layer is ignored in the general neural network, but in the self-coding network, the connection layer is meaningful. * these weights are used to map the song feature vector to whether the user has heard / liked the song, which is actually the low-dimensional feature of the user. *

通过上述自编码学习,提取出第二层隐含层,即歌曲以流派分类为目标降维压缩向量。

[En]

Through the above self-coding learning, the second hidden layer is taken out, that is, the song takes the genre classification as the target reduced-dimension compressed vector.

该向量不仅使用了用户的群体收藏行为,还使用了歌曲流派特征信息,更能表达歌曲的特征信息。

[En]

This vector not only uses the user’s group collection behavior, but also uses the song school characteristic information, which can express more characteristic information of the song.

然后你可以用这些向量来计算音乐的相似度,然后将用户未收藏的音乐推荐给用户,注意行为的一致性。

[En]

Then you can use these vectors to calculate the similarity of music, and then recommend the music that the user * uncollected * to the user, paying attention to the consistency of the behavior.

4.5 基于社交网络的推荐算法

社交网络结构:

[En]

Social network structure:

  • 社交图(互相认识,可以用网络中的无向图表示)
    [En]

    * Social graph (know each other, can be represented by undirected graph in the network)

  • 兴趣图(单向关注,在网络中可以用有向图表示)
    [En]

    * interest graph (one-way attention, which can be represented by a directed graph in the network)

  • 标签图(一起关注一个标签,有相似的兴趣,但不建立真正的社会关系)
    [En]

    * tag map (follow a tag together, have similar interests, but do not establish a real social relationship)

好友相似度计算:

1、基于共同关注好友的比例计算好友的相似度:

在哪里:

[En]

Where:

  • 表示用户有要关注的朋友列表
    [En]

    * indicates that the user has a list of friends to follow

  • 表示用户有要关注的朋友列表
    [En]

    * indicates that the user has a list of friends to follow

适合计算普通用户之间的相似度

Python 效率低,可以使用spark 的 Graphx进行计算

2、基于共同被关注的用户比例计算好友的相似度

在哪里:

[En]

Where:

  • 关心用户的好友列表
    [En]

    * shows concern for the user’s friend list

  • 关心用户的好友列表
    [En]

    * shows concern for the user’s friend list

适合计算大V之间的相似度

3、用户 关注的用户中,有多大比例也关注了用户

node2vec

node2vec论文:《node2vec:Scalable Feature Learning for Networks》

network embedding就是一种图特征的表示学习方法,它从输入的网络图中,学习到节点的表达。

node2vec的整体思路分为两个步骤:

  • random walk(随机游走),即通过一定的规则抽取一些点的序列
  • 将点序列输入word2vec模型,得到每个节点的嵌入向量
    [En]

    * input the sequence of points into the word2vec model to get the embedding vector of each node

random walk

随机游走的基本流程是,给定一个图和一个起始节点,将起始节点的位置标记为当前位置,随机选择当前位置节点的一个邻居并将当前位置移动到选定的邻居位置,重复上述步骤,最终得到从起始节点到结束节点的长度的点序列,称为图上的随机行走。

[En]

The basic flow of random walk, given a graph and a start node, mark the position of the start node as the current position, randomly select a neighbor of the current location node and move the current position to the selected neighbor position, repeat the above steps, and finally get a “point sequence” of length from the initial node to the end node, which is called a random walk on the graph.

从描述中可以看出,随机游走算法可以分为两个步骤:

[En]

It can be seen from the description that the random walk algorithm can be divided into two steps:

  • (1)选择起始节点
  • (2)选择下一跳节点

有两种方法可以选择起始节点:

[En]

There are two ways to select the starting node:

  • 按照一定的规则从图中随机抽取一定数量的节点
    [En]

    * randomly extract a certain number of nodes from the graph according to certain rules

  • 从图中的所有节点开始(倾向于使用这个)
    [En]

    * start with all the nodes in the figure (tend to use this)

选择下一跳节点最简单的方法是根据边的权重随机选择,但在实际应用中,我们希望控制广度优先或深度优先,从而影响随机行走的范围。

[En]

The easiest way to select the next hop node is to choose randomly according to the weight of the edge, but in practical application, we hope to control the breadth priority or depth priority, thus affecting the range that random walk can walk.

一般来说,深度优先的便利,发现能力更强,广度优先的方法,在社区接受你更容易出现在一条小路上。

[En]

Generally speaking, the depth first convenience, the discovery ability is stronger, the breadth first method, the reception in the community you are more likely to appear in a path.

斯坦福大学的计算机教授Jure Leskovec提供了一种控制广度优先或深度优先的方法。

[En]

Jure Leskovec, a computer professor at Stanford University, offers a way to control breadth-first or depth-first.

推荐算法

作为上图中的示例,我们假设第一步是从随机漫游到,然后确定邻接节点的下一步。参数和调整漫游节点的趋势。

[En]

As an example in the above figure, we assume that the first step is to go from a random walk to, and then to determine the next step of the adjacency node. Parameters and the tendency to adjust the wandering node.

  • :计算返回上一个节点的概率
    [En]

    *: calculate the probability of going back to the previous node

  • :计算走到远离上一个节点的节点的概率。
    [En]

    *: calculate the probability of walking to the node far from the previous node.

首先,计算当前节点的邻居节点与上一节点之间的距离。

[En]

First of all, the distance between the neighbor node of the current node and the previous node is calculated.

根据的值确定下一个节点的选择概率

[En]

Determine the selection probability of the next node according to the value of

  • 如果大于,则小于,则生成的序列类似于深度优先,刚刚被访问的节点不太可能被重复访问。
    [En]

    * if it is greater than, then less than, the resulting sequence is similar to depth-first, and the nodes that have just been accessed are unlikely to be accessed repeatedly.

  • 如果小于或大于,则结果序列类似于广度优先搜索,并倾向于周围节点。
    [En]

    * if it is less than or greater than, the resulting sequence is similar to the breadth-first search and tends to the surrounding nodes.

在这一点上,我们可以通过随机游动产生点的序列样本。一般来说,我们会从每个点游5到10次,步长就是基点的数量。

[En]

At this point, we can generate sequence samples of points through random walk. Generally speaking, we will swim 5 to 10 times from each point, and the step length is the number of base points.

斯坦福大牛Jure Leskovec:图神经网络研究最新进展

word2vec

word2vec的核心目标:通过一个嵌入空间将每个词的词映射到一个空间向量上,并且使得语义上相似的单词在该空间内距离很近。

word2vec中有两种模型(和自编码器的思想很相近):

  • Skip-Gram模型:输入是中心词、输出是上下文
  • CBOW模型:输入是上下文、输出是中心词

两个模型的结构如下:

推荐算法

Skip-Gram基于成对的单词来对神经网络进行训练,训练样本是(input word, output wor),最终模型输出的是一个概率分布。

CBOW输入是n个节点(ont-hot向量的维度),上下文共2 * skip window个词的词向量的平均值,即上下文 2 * skip window个词的one-hot-representation。

CBOW模型把上下文的2个词向量求平均值”糅”成一个向量,作为输入。

word analogy(词语类化)现象:指训练出的word embedding可以通过加减法操作,来对应某种关系。比如:国王-女王~男人-女人。

4.6 冷启动

冷启动分类

  • 用户冷启动(无用户行为数据)
    [En]

    * user cold start (no user behavior data)

  • 有效利用用户的账号信息
  • 利用用户的手机IMEI号进行冷启动(获取设备唯一ID,根据用户在不同APP中的行为数据进行推荐)
  • 制造选项,让用户选择自己感兴趣的点,即时生产粗粒度的推荐。
  • 项目冷启动(新项目,对他没有用户行为)
    [En]

    * item cold start (new item, no user behavior to him)

  • 利用物品的内容信息(eg:基于语义计算相似度)
  • 利用专家的标注数据
  • 系统冷启动(无用户,无用户行为)
    [En]

    * system cold start (no users, no user behavior)

深度学习技术在物品冷启动上的应用

  • 案例1:CNN在音频流派分类中的应用
    [En]

    * case 1: application of CNN in audio genre classification

  • 提取已知流派分类的歌曲样本
  • 训练一个深度神经网络来分类歌曲
  • 使用分类器对未分类的歌曲进行流派分类
  • 步骤:
  • 案例二:面部魅力评分在视频推荐中的应用
    [En]

    * case 2: application of facial charm score in video recommendation

  • 实验数据:《SCUT-FBP:A Benchmark Dataset for Facial Beauty Perception》,收集了500多个亚洲女性的脸部近照图,label为人工标注。
  • CNN网络越深,梯度消失的现象就越来越明显。因此引入了残差网络结构(residual network)

Original: https://blog.csdn.net/mudan97/article/details/115545116
Author: less97
Title: 推荐算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/6479/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部