今天没有面试,要准备下周五的头条的面试。因为头条的JD里面有涉及到矩阵分解、GBDT、LTR、Word2vec、LSTM,所以决定简单了解下矩阵分解、GBDT、LTR,着重看下word2vec和LSTM。
矩阵分解
矩阵分解来自https://blog.csdn.net/qq_19446965/article/details/82079367
推荐系统中最为主流与经典的技术之一是协同过滤技术(Collaborative Filtering),它是基于这样的假设:用户如果在过去对某些项目产生过兴趣,那么将来他很可能依然对其保持热忱。其中协同过滤技术又可根据是否采用了机器学习思想建模的不同划分为基于内存的协同过滤(Memory-based CF)与基于模型的协同过滤技术(Model-based CF)。其中基于模型的协同过滤技术中尤为矩阵分解(Matrix Factorization)技术最为普遍和流行,因为它的可扩展性极好并且易于实现,因此接下来我们将梳理下推荐系统中出现过的经典的矩阵分解方法。
对于推荐系统来说存在两大场景即评分预测(rating prediction)与Top-N推荐(item recommendation,item ranking)。评分预测场景主要用于评价网站,比如用户给自己看过的电影评多少分(MovieLens),或者用户给自己看过的书籍评价多少分(Douban)。其中矩阵分解技术主要应用于该场景。Top-N推荐场景主要用于购物网站或者一般拿不到显式评分信息的网站,即通过用户的隐式反馈信息来给用户推荐一个可能感兴趣的列表以供其参考。其中该场景为排序任务,因此需要排序模型来对其建模。因此,我们接下来更关心评分预测任务。
重点:推荐系统的评分预测场景可看做是一个矩阵补全的游戏,矩阵补全是推荐系统的任务,矩阵分解是其达到目的的手段。因此,矩阵分解是为了更好的完成矩阵补全任务(欲其补全,先其分解之)。之所以可以利用矩阵分解来完成矩阵补全的操作,那是因为基于这样的假设:假设UI矩阵是低秩的,即在大千世界中,总会存在相似的人或物,即物以类聚,人以群分,然后我们可以利用两个小矩阵相乘来还原它。
所以说重要的是用相似的人或物来补全矩阵,以完成要推荐的任务。
GBDT
文章内容来自:https://blog.csdn.net/yyy430/article/details/85108797
GBDT(Gradient Boosting Decision Tree)是boosting系列算法中的一个代表算法,它是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来作为最终答案。它的基本思想是根据当前模型损失函数的负梯度信息来训练新加入的弱分类器,然后将训练好的弱分类器以累加的形式结合到现有模型中。
word2vec
它是目前最常用的词嵌入模型,也是一种浅层的神经网络模型,它有两种网络结构,分别是CBOW和Skip-gram。
CBOW的目标是通过上下午出现的词语加权求和的方式预测当前词的生成概率,而skip-gram则是根据当前词来计算预测上下文中各词的生成概率。这里输入都是经过one-hot编码的向量,N个词就是把每个词表示成一个N维向量,中间经过与权重矩阵的相乘,得到输出层的向量。输出层应用softmax激活函数,可以计算出每个单词的生成概率。
训练权重的时候可以用反向传播算法,每次迭代时将权重沿梯度更优的方向进行一小步更新。但是由于softmax激活函数中存在归一化的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,是的每次迭代过程非常缓慢,由此产生了Hierarchical Softmax和Negative Sampling。
LSTM
RNN的结构是当前层的输入也作为下层输入的一部分,用这种结构就可以解决序列的问题,但是随着预测信息间的间隔增加,RNNs就很难把它们关联起来了,而LSTM可以。
时间关系,LSTM就单独再写一篇吧。