数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
十三、MF for RS [2009]
现代消费者被各种选择所淹没。电商和内容提供商提供种类繁多的产品,有前所未有的机会来满足各种特殊需求和口味。为消费者匹配最合适的产品是提高用户满意度和忠诚度的关键。因此,越来越多的电商对推荐系统感兴趣,其中推荐系统分析用户对产品的兴趣模式,从而提供适合用户口味的个性化推荐。由于良好的个性化推荐可以提升用户体验,因此
Amazon.com
和Netflix
等电商领导者已经将推荐系统作为他们网站的重要组成部分。这样的系统对于诸如电影、音乐、电视节目之类的娱乐产品也特别有用。许多不同的用户将观看同一部电影,而每个用户可能会观看许多不同的电影。事实证明,客户愿意表明他们对特定电影的满意度,因此有大量的、关于哪些电影吸引哪些用户的数据是可用的。公司可以分析这些数据,从而向特定用户推荐电影。
推荐系统策略:广义上讲,推荐系统基本上有两种策略:
基于内容过滤
content filtering
的推荐:为每个用户创建用户画像,或为每个商品创建商品画像,然后系统基于用户画像和商品画像进行匹配。如:用户画像包括人口统计信息、调查问卷及其答案;电影画像包括电影类型、演员、票房热度等。然而,基于内容过滤的推荐需要搜集大量的外部信息从而构建画像系统,这些信息可能很难收集或者根本无法收集。
基于内容过滤推荐的一个成功案例是
Music Genome Project
项目,该项目用于互联网广播服务Pandora.com
。在该项目中,受过训练的音乐分析师会根据数百种不同的音乐特征对每首歌进行打分,从而构建音乐画像。这些特征不仅捕获了歌曲的音乐特性,还捕获了与听众的喜好相关的很多其它特性。基于协同过滤
collaborative filtering
的推荐:它根据用户之间的相关性,或者商品之间的相关性进行推荐。这个过程中不需要创建用户画像或商品画像,仅依赖于历史的用户行为,例如历史的交易或者评分。协同过滤的主要优点在于它是
domain free
领域无关的,并可以解决内容画像难以描述的一些用户行为模式。协同过滤虽然通常比内容推荐更为准确,但无法解决冷启动问题cold start problem
。在冷启动方面,基于内容推荐的表现更好。
协同过滤的两个主要方向是邻域方法
neighborhood method
和潜在因子模型latent factor model
。邻域方法的重点是计算
item
之间的相关性,或用户之间的相关性。ItemBased CF
根据同一个用户在相似的item
上的评分,来评估该用户对新item
的偏好。UserBased CF
根据相似用户在同一个item
上的评分,来评估新用户对该item
的偏好。
潜在因子模型根据所有用户的
item
评分模型,从而推断出 $ d $ 个因子来表征用户和item
。从某种意义上讲,这些因子包括上述人类创造歌曲基因的、计算机化的替代方案。对于电影,因子可能是某些显著的维度(如:电影流派、是否适合儿童等等),也可能是不显著的维度(如:演员的气质),甚至也可能是完全无法解释的维度。对于用户,这些因子衡量用户对相应因子电影上的喜欢程度。
潜在因子模型的一些最成功的实现是基于矩阵分解
matrix factorization:MF
。在矩阵分解的基本形式中,它通过从item
评分模式中推断出的因子向量来表征用户和item
。然后我们基于用户因子向量和item
因子向量的内积来进行推荐。近年来,这些方法因为具有良好的可扩展性、预测准确性从而变得流行。此外,它们为建模各种现实情况提供了很大的灵活性 ,它允许结合额外信息,例如隐式反馈、时间效应、以及置信度水平。论文
《MATRIX FACTORIZATION TECHNIQUES FOR RECOMMENDER SYSTEMS》
对协同矩阵分解模型进行了详细的讨论。推荐系统依赖于不同类型的输入数据,这些数据通常放置在一个矩阵中,一个维度代表用户、另一个维度代表感兴趣的
item
。显式反馈数据:最方便的数据是高质量的显式反馈,其中包括用户对
item
兴趣的显式输入。例如,Netflix
收集电影的星级评分,TiVo
用户通过thumbs-up
和thumbs-down
按钮来表明他们对于电视节目的偏好。我们将明确的用户反馈称作评分。通常,显式反馈包含一个稀疏矩阵,因为任何单个用户可能只对所有
item
中的一小部分进行了评分。隐式反馈数据:矩阵分解的优势之一是它允许融合附加信息。当显式反馈不可用时,推荐系统可以使用隐式反馈推断用户偏好,通过观察用户行为(包括购买历史、浏览历史、搜索历史、甚至鼠标移动历史)来间接反映用户的意见。隐式反馈通常表示事件的存在或不存在,因此它通常由稠密矩阵来表示。
13.1 基本形式
给定
user-item
评分矩阵 $ \mathbf R = \{r_{u,i}\}\in \mathbb R^{m\times n} $ ,矩阵分解通过从评分矩阵中推断出用户因子向量和item
因子向量。假设用户 $ u $ 关联一个用户因子向量 $ \mathbf{\vec p}_u\in \mathbb R^d $ ,
$ \hat r_{u,i} = \mathbf{\vec p}_u\cdot \mathbf{\vec q}_i $item
$ i $ 关联一个item
因子向量 $ \mathbf{\vec q}_i\in \mathbb R^d $ ,其中 $ d $ 为因子数量。则用户 $ u $ 对item
$ i $ 评分的预估值为:求解该模型的传统方法是奇异值分解
SVD
,由于评分矩阵 $ \mathbf R $ 通常是缺失的,因此传统的SVD
方法是未定义的。- 一种方法是仅拟合数量稀少的非缺失评分,但这会导致模型很容易陷入过拟合。
- 另一种方法是通过插值填补来补全缺失的评分,使得 $ \mathbf R $ 为一个稠密矩阵。但是,一方面这会显著增加计算量,另一方面不正确的插补会扭曲数据。
因此最近的工作直接对非缺失项进行建模,同时利用正则化来缓解过拟合:
$ \min_{\mathbf P,\mathbf Q} \sum_{(u,i)\in \mathcal K} \left(r_{u,i} - \mathbf{\vec p}_u\cdot \mathbf{\vec q}_i\right)^2 + \lambda\left(\|\mathbf{\vec q}_i\|^2+ \|\mathbf{\vec p}_u\|^2\right) $其中:
- $ \mathcal K = \{(u,i)\mid u\in \mathbb U,i\in \mathbb I,r_{u,i} \text{ is known}\} $ 为已知评分的
user-item pair
集合, $ \mathbb U $ 为所有用户集合, $ \mathbb I $ 为所有item
集合, $ r_{u,i} $ 为已知评分。 - $ \lambda $ 为正则化参数,通常由交叉验证来确定。论文
《Probabilistic Matrix Factorization》
为正则化提供了概率论上的理论解释。 - $ \mathbf P=(\mathbf{\vec p}_1 ,\cdots ,\mathbf{\vec p}_m)^\top\in \mathbb R^{m\times d} $ 为用户因子矩阵。
- $ \mathbf Q=(\mathbf{\vec q}_1 ,\cdots ,\mathbf{\vec q}_n)^\top\in \mathbb R^{n\times d} $ 为
item
因子矩阵。
训练算法:
随机梯度下降:
$ e_{u,i} = r_{u,i} -\mathbf{\vec p}_u\cdot \mathbf{\vec q}_i $Simon Frunk
提出了该目标函数的随机梯度下降优化算法。算法在迭代过程中遍历训练集的所有user-item
评分。对于每个已知评分 $ r_{u,i} $ ,模型会预估 $ \hat r_{u,i} $ 并计算预测误差:然后算法根据梯度进行参数更新:
$ \mathbf{\vec q}_i\leftarrow \mathbf{\vec q}_i + \gamma (e_{u,i} \mathbf{\vec p}_u - \lambda \mathbf{\vec q}_i)\\ \mathbf{\vec p}_u\leftarrow \mathbf{\vec p}_u + \gamma (e_{u,i} \mathbf{\vec q}_i - \lambda \mathbf{\vec p}_u) $其中 $ \gamma $ 为学习率。
这种训练算法易于实现,并且训练时间相对较快。
交替最小二乘法
Alternating Least Squares:ALS
:另一种训练算法是交替最小二乘法。由于 $ \mathbf{\vec q}_i $ 和 $ \mathbf{\vec p}_u $ 都是未知的,因此目标函数不是凸函数 。如果固定其中一个变量,则目标函数是另一个变量的凸函数,则可以直接求解最优解。因此,
ALS
交替固定 $ \mathbf P $ 和 $ \mathbf Q $ ,然后优化另外一个变量。这样不断交替优化直到算法收敛。虽然随机梯度下降比ALS
更容易实现、收敛更快,但是至少在两种情况下ALS
是有利的:- 首先,
ALS
是可以并行化的。当固定 $ \mathbf P $ 时, 算法可以独立的优化每个 $ \mathbf{\vec q}_i $ ,这带来算法潜在的大规模并行化能力。 - 其次,对于隐式反馈系统,因为存在大量的隐式反馈数据,因此像随机梯度下降那样遍历每个评分是不现实的。而
ALS
可以有效处理这类场景。
- 首先,
13.2 bias 形式
我们观察到很多评分的差异是由用户本身或者
item
本身导致的,称作bias
偏差。如,某些用户比较吹毛求疵,其评分普遍低于所有用户的平均分;有些电影比较热门,其评分普遍高于所有电影的平均分。因此,系统可以对
$ b_{u,i} = \mu + b_i + b_u $bias
建模为:其中 $ b_{u,i} $ 为基于
bias
的评分预估, $ \mu $ 表示所有的评分均值, $ b_u $ 表示用户 $ u $ 的评分bias
, $ b_i $ 表示item
$ i $ 的评分bias
。如:假设所有用户在所有电影上的平均评分为 $ \mu = 3.7 $ 分。“张三” 是比较苛刻的用户,其评分普遍比平均水平低
0.3
分;电影 “流浪地球” 比较热门,其评分普遍比平均水平高0.5
分。则“张三” 对于 “流浪地球” 的评分预估为 $ 3.7 + 0.5 - 0.3 = 3.9 $ 分。我们可以用
bias
来改进矩阵分解。我们将预估评分分解为四个部分,每个部分分别捕获对应的信号:- 全局均值 $ \mu $ :它捕获了所有用户在所有
item
上的整体评分情况。 user bias
$ b_u $ :它捕获了user
偏离均值的部分,与item
无关。item bias
$ b_i $ :它捕获了item
偏离均值的部分,与user
无关。user-item
交互部分 $ \mathbf{\vec p}_u\cdot \mathbf{\vec q}_i $ :它捕获了user
对于特定item
的兴趣。
即: $ \hat r_{u,i} = \mu + b_i + b_u + \mathbf{\vec p}_u\cdot \mathbf{\vec q}_i $ 。
基于
$ \min_{\mathbf P,\mathbf Q, \mathbf{\vec b}}\sum_{(u,i)\in \mathcal K} \left(r_{u,i} - \mu-b_u-b_i- \mathbf{\vec p}_u\cdot \mathbf{\vec q}_i\right)^2 + \lambda\left(\|\mathbf{\vec q}_i\|^2+ \|\mathbf{\vec p}_u\|^2 + b_u^2 +b_i^2\right) $bias
形式的矩阵分解模型,其目标函数为:其中 $ \mathbf{\vec b} $ 为所有
bias
参数 $ b_u,b_i $ 组成的向量。- 全局均值 $ \mu $ :它捕获了所有用户在所有
13.3 多输入源
推荐系统经常会遇到冷启动问题,即用户提供的评分数据非常稀疏。解决冷启动问题的一种有效方法是:合并有关用户的其它信息来源,如隐式反馈数据。
为方便讨论,考虑使用二元隐式反馈数据。假设 $ \mathcal N_u $ 为用户 $ u $ 的隐式偏好的
$ \sum_{i\in \mathcal N_u} \mathbf{\vec x}_i $item
集合。对于每个item
$ i $ ,系统定义了item
隐式反馈因子向量 $ \mathbf{\vec x}_i\in \mathbb R^d $ 。则每个用户 $ u $ 可以根据其隐式反馈的item
来刻画:考虑到不同用户的隐式数据规模不同,因此这里对其进行归一化:
$ |\mathcal N_u|^{-0.5}\sum_{i\in \mathcal N_u} \mathbf{\vec x}_i $另一种信息源是已知的用户属性,例如人口统计信息。为简单起见,这里也考虑二元属性。
假设用户 $ u $ 的属性集合为 $ \mathcal A_u $ (即取值为
1
的属性的集合) ,该集合可以描述性别(是否女性)、年龄组(是否老年人)、地域(是否一线城市)、收入水平(是否年薪超过百万)等等。对于每个属性 $ a $ ,系统定义了用户属性因子向量 $ \mathbf{\vec y}_a\in \mathbb R^d $ 。则每个用户 $ u $ 可以根据其属性来刻画:
$ \sum_{a\in \mathcal A_u} \mathbf{\vec y}_a $融合了多个数据源之后,矩阵分解模型进化为:
$ \hat r_{u,i} = \mu + b_i + b_u + \mathbf{\vec q}_i\cdot \left(\mathbf{\vec p}_u +|\mathcal N_u|^{-0.5}\sum_{i\in \mathcal N_u} \mathbf{\vec x}_i+ \sum_{a\in \mathcal A_u} \mathbf{\vec y}_a\right) $尽管这里给出的是提升用户表达的能力,但是必要的时候也可以对
item
进行类似的处理。即可以通过用户隐式反馈因子向量、item
属性因子向量来刻画item
。事实上这就是
Embedding
的基本思想:对历史行为item
进行embedding
、对用户属性进行embedding
,然后对应的取加权均值池化或者sum
池化。
13.4 时间效应
目前为止所有的模型都是静态的,实际上随着新的用户、新的产品、新的评分不断加入,产品的认知和热门程度会不断发生变化。同样地,用户的喜好也在不断发生变化,这导致用户的偏好被重新定义。
因此,系统应该考虑
user-item
交互的动态的dynamic
、随时间漂移time-drifting
的时间效应。通过在矩阵分解模型中引入时间效应可以显著提高模型的准确性。我们将评分分解为不同的部分,然后处理每一部分的时间效应。具体而言,下列部分会随着时间变化:
item bias
$ b_i(t) $ :商品的热门程度可能随着时间的变化而变化。如:电影可能会随着外部事件的发生而开始流行或不再流行。因此,模型将item bias
$ b_i(t) $ 视为时间的函数。user bias
$ b_u(t) $ :用户可能随着时间的发展而改变其基准评分。如:平均评分为5
分的用户(非常乐观)可能因为家庭变故,使得平均评分降低到2
分。因此,模型将user bias
$ b_u(t) $ 视为时间的函数。user-item
交互:用户可能随着时间的发展而改变其口味。如:可能年轻的时候喜欢啤酒,但是随年龄增长更偏好白酒。和人类不同,商品本质上是静态的,因此系统将
item
因子 $ \mathbf{\vec q}_i $ 视为静态的,而用户因子 $ \mathbf{\vec p}_u(t) $ 视为时间的函数。
因此,考虑时间效应的矩阵分解模型为:
$ \hat r_{u,i}(t) = \mu + b_i(t) + b_u(t) + \mathbf{\vec p}_u(t)\cdot \mathbf{\vec q}_i $.
13.5 置信度水平
并非所有观察到的评分都应该具有相同的权重或者置信度。如:系统可能会遇到某些刷好评的用户,这些好评并不能反应商品的特征。
另外,在隐式反馈系统中,很难准确地量化用户的偏好,因此系统使用粗糙的二元变量来表示 ”喜欢“ 和 ”不喜欢“ 。如:有过购买行为认为是 ”喜欢“ 。但是用户购买
10
次和用户购买1
次的行为是不同的,前者更能够反应用户的偏好。因此可以考虑对用户的偏好关联一个置信度得分, 该得分可以来自于用户的行为频次, 如购买行为的频次。可以考虑对矩阵分解模型引入置信度,这使得模型对于没有意义的观察到的评分降低权重。令 $ r_{u,i} $ 的置信度为 $ c_{u,i} $ ,则引入置信度加权的矩阵分解模型为:
$ \min_{\mathbf P,\mathbf Q,\mathbf {\vec b}} \sum_{(u,i)\in \mathcal K} c_{u,i} \left(r_{u,i} - \mu - b_u-b_i - \mathbf{\vec p}_u\cdot \mathbf{\vec q}_i\right)^2 + \lambda\left(\|\mathbf{\vec p}_u\|^2+ \|\mathbf{\vec q}_i\|^2+b_u^2 + b_i^2\right) $.
13.6 效果
Netflix Prize
竞赛:在2006
年,在线DVD
租赁公司Netflix
宣布了一项竞赛来改善其推荐系统。为此,该公司发布了一个包含超过1
亿个评分的训练集,覆盖了大约50
万匿名用户、以及他们对超过1.7
万个电影的评分,评分范围是1 ~ 5
分。参赛团队需要为测试集提交预测评分,其中测试集规模为300
万个user-item pair
。Netflix
根据持有的、未公开的真实评分来计算各团队测试集的RMSE
。第一个能够将Netflix
算法的RMSE
性能提升10%
或者更高的团队将赢得100
万美金的奖金。如果没有团队能够达到10%
的目标,那么Netflix
将在每年的比赛结束后向第一名的团队提供5
万美金的进步奖。该比赛在协同过滤领域引起了轰动。在此之前,用于协同过滤研究唯一公开可用的数据集要小几个数量级。
Netflix Prize
数据的发布、以及比赛的吸引力激发了协同过滤领域的活力。根据比赛网站,来自182
个不同国家的4.8
万多个团队下载了数据。我们团队的参赛作品,原名叫
BellKor
,在2007
年夏天夺得了比赛的第一,并且以当时最好的成绩获得了2007
年的进步奖:比Netflix
好8.43%
。后来,我们与Big Chaos
团队联盟,以9.46%
的提升赢得了2008
年的进步奖。在撰写本文时,我们仍居第一,朝着10%
的里程碑前进。我们的获奖作品包含
100
多个不同的预测器集合,其中大部分是使用本文描述方法的一些变体的矩阵分解模型。我们与其他顶级团队的讨论,以及公开比赛论坛上的帖子表明:这些是最流行、最成功的预测评分的方法。我们在
Netflix
数据集上尝试了多种不同形式的矩阵分解,下图给出了不同模型、不同参数数量的RMSE
。结论:- 通过增加因子数量,每个模型的准确性都得到提高。
- 更复杂的因子模型准确性更高。
- 时间效应对于模型尤为重要,因为数据中存在明显的时间效应。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论