经典推荐模型:FNN,DeepFM
之前我们已经介绍了FM模型,在进入深度学习时代后,通过将FM模型与深度学习模型进行结合,产生了许多有用的新模型,本文将介绍其中的两种:FNN和DeepFM. FNNFNN的结构如下: 结构很简单,在底层将多个特征域中的稀疏向量进行了Embedding,然后将Embedding的结果输入到全连接层进行特征交叉,最后输出预测结果。 FM模型为每一个特征学习了一个隐向量,两个特征交叉得到的新特征的系数等于这两个特征对应隐向量的内积。 而FNN直接将训练好的FM的权重(一阶特征权重+隐向量)拿了过来,作为自己的Embedding层的初始化权重。 只考虑隐向量,假设某特征域的总类别数为n,隐向量(Embedding的维度)是k,那么在...
基于NeuralCF的图书推荐系统
本文将对CCF《图书推荐系统竞赛》官方baseline进行详细解读,并修正一些错误,修正后的jupyter notebook文件可以在公众号”南极Python”后台回复图书推荐自行获取。 赛题地址:https://www.datafountain.cn/competitions/542 题目介绍背景随着新型互联网的发展,人类逐渐进入了信息爆炸时代。新型电商网络面临的问题也逐渐转为如何让用户从海量的商品中挑选到自己想要的目标。推荐系统正是在互联网快速发展之后的产物。为帮助电商系统识别用户需求,为用户提供其更加感兴趣的信息,从而为用户提供更好的服务,需要依据真实的图书阅读数据集,利用机器学习的相关技术,建立一个图书推荐系统。用于为用户推荐其可能进行阅读的数据,从而在产生商业价值的同时,提升用户的阅读体验,帮助创建全民读书的良好社会风气。 任务依据真实世界中的用户-图书交互记录,利用机器学习相关技术,建立一个精确稳定的图书推荐系统,预测用户可能会进行阅读的10本书籍。 数据包含训练集和测试集,以及提交示例文件。 训练集中存储了用户与图书之间的交互信息,比如第一行:...
跨考小白学刷题(下)
第八章:回溯8-3排列问题 我自己(在看了答案后默)写的AC代码: 12345678910111213141516171819class Solution: def permute(self, nums: List[int]) -> List[List[int]]: if not nums: return [] def back_track(nums,index): if index==len(nums): res.append(p[:])#必须加这个:,因为path之后还会变 return for num in nums: if num not in p: p.append(num) back_track(nums,index+1) p.pop() ...
跨考小白学刷题(上)
第一章1-1 对一组数据进行排序时,要考虑这组数据有什么样的特征。 包含大量重复元素->三路快排 近乎有序->插入排序 取值范围有限->计数排序 要求稳定排序->归并排序 使用链表存储->...
经典推荐模型:Deep&Cross
本文介绍Deep&Cross模型,它沿用了Wide&Deep模型的设计思路,并且将Wide&Deep的Wide部分使用Cross Network进行了替换,解决了Wide&Deep需要人工选取交叉特征的麻烦。 Deep&Cross模型结构如下: 从下往上看。 将稀疏特征进行Embedding,将得到的结果与稠密特征(一般指的是数值型特征)进行拼接,这就是网络的输入$x_0$. $x_0$再往上兵分两路,左路是Cross Network部分,右路是Deep部分。 先看左路。它是由多个Cross Layer构成的,Cross Layer执行的前向运算如下: 该运算可视化如下: 可以看到 ,$x_0$在每一层中都有参与。 事实上,随着Cross Layer的层数增加,原始输入$x_0$各个位置元素交叉的阶数也在增加,具体参见如下推导: 正因如此,Cross Network相比于Wide&Deep中的Wide部分拥有更强的特征交叉能力,而且,每一个Cross...
经典推荐模型:Wide&Deep
本文介绍谷歌于2016年提出的Wide&Deep模型,它兼具记忆能力与泛化能力,在谷歌商店的app推荐中效果显著。 Wide&Deep由记忆能力较强的Wide部分和泛化能力较强的Deep部分组成,接下来我们分别介绍这两部分,然后将它们组合起来,得到Wide&Deep. WideWide部分是一个(广义)线性模型,比如逻辑回归,具有较强的记忆能力。 输入这种模型的特征可以通过交互产生新的有用特征,然后将这些新的特征与原始特征共同输入模型进行预测。 举个栗子,假设输入逻辑回归模型的特征中含有”已安装应用,在应用商店看到的应用”这俩特征,那么我们可以根据这俩特征得到一个新的交互特征:”已安装应用=xxx 并且 在应用商店看到的应用=yyy”. 使用上述方法构造特征,训练模型。当待预测的样本特征中也含有类似上述交互特征时,由于在训练集中存在相同特征,那么模型就能很快定位到训练集中出现相同模式时的标签。 假设训练集中出现”已安装应用=Youtube 并且...
经典推荐模型:PNN
之前介绍的NeuralCF使用神经网络代替了协同过滤中的点积操作,并取得了一定的进步。但是,它只使用了用户-物品的共现矩阵进行建模,而忽略了其它特征,比如用户的性别、年龄等。 本文将要介绍PNN在模型中加入了更多的特征,并设计了更为精细的特征交叉方式。 PNN简介PNN,全称是Product-based Neural Networks,这里的Product特指PNN中的Product层。如果将Product层所做操作替换成简单的拼接(concat),那么就变成了我们之前介绍的Deep Crossing。因此,PNN最大的创新就在于Product层。 PNN总体结构PNN的结构如下图所示: 从下往上看。 Input...
经典推荐模型:DeepCrossing
众所周知,好的特征对于模型是至关重要的。在深度学习大行其道之前,往往采用手工设计特征的方法,在原始特征的基础上,衍生出一些有效特征,来帮助模型更好的学习。 当深度学习时代来临后,以上过程可以交由神经网络实现了自动化,这一优势最先在语音、图形识别等领域大放异彩。 在推荐领域,Deep Crossing于2016年由于微软提出,它实现了特征组合的自动化。 Deep...












