数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十一、OCCF [2008]
个性化服务在
web
上变得越来越不可或缺,从提供搜索结果到商品推荐。这类系统的例子包括Amazon.com
上的商品推荐、Netflix
上的DVD
推荐、Google
上的新闻推荐等等。这些系统中使用的核心技术是协同过滤collaborative filtering: CF
,它旨在根据所有用户历史评分的item
预测特定用户的item
偏好。在许多的这类系统中,用户可以显式给出以不同分数(例如Netflix
中的1 ~ 5
分)表示的评分。但是,更多的情况下,也可以通过用户点击或不点击、bookmark
或者not-bookmark
等用户行为来隐式地表达。这些形式的隐式评分更常见,也更容易获得。虽然隐式评分的优势很明显,但是它的缺点(尤其是在数据稀疏的情况下)是很难识别有代表性的负样本。所有的负样本和缺失的正样本混合在一起,无法区分。我们将仅具有正样本的协同过滤称作
One-Class Collaborative Filtering: OCCF
。OCCF
发生在不同的场景中,下面给出两个示例:Social Bookmark
:Social Bookmark
在del.icio.us
等Web 2.0
服务中非常流行。在这样的系统中,每个用户都为一组网页添加书签,这些网页可以被视为用户兴趣的正样本。但是,用户没有为网页添加书签的行为存在两种可能的解释:- 第一种解释:该网页是用户感兴趣的,但是用户未能看到这个网页。
- 第二种解释:用户看到过这个网页,但是用户不感兴趣。
我们不能假设所有不在用户书签中的网页都是负样本。
Clickthrough History
:点击数据被广泛应用于个性化搜索和搜索结果改进。通常三元组 $ $ 表示用户 $ u $ 提交了query
$ q $ 并点击了网页 $ p $ 。通常而言,未被点击的网页不被收集。与书签示例类似,我们无法判断网页未被点击是因为内容与query
无关、还是因为用户未看到。
有几种直观的策略可以解决这个问题。
一种方法是标记负样本,从而将数据转换为经典的
CF
问题。但是,这需要用户的密切配合来标记数据,代价太大甚至难以进行,因为用户通常不愿意承担这种成本。实际项目中,用户很少能够提供算法所需要的标记数据。而且根据一些用户研究表明:如果要求用户在使用系统之前提供很多正面或负面的反馈,那么用户对该系统就有很不好的印象,甚至可能会拒绝使用该系统。
另一种策略是将所有缺失数据视为负样本,称作
All Missing As Negative:AMAN
。经验表明,这种策略的效果很好。但是,由于某些缺失数据可能是正样本,因此推荐的结果是有偏的。还有一种策略是将所有缺失值视为未知的,即忽略所有缺失的样本而仅使用正样本,称作
All Missing As Unkown:AMAU
。在使用过程中,我们将这些非缺失值灌入针对非缺失值建模的协同过滤算法。但是该方法存在一个平凡解trivial solution
:将所有缺失值预估为正样本。因此,所有缺失值为负AMAN
和所有缺失值未知AMAU
是OCCF
中的两种极端策略。
论文
《One-Class Collaborative Filtering》
提出了两种方案来解决OCCF
问题。这两种方案考虑了将缺失值视为负样本的程度,导致了整体上性能得到提升:- 第一种方案是基于加权的低秩近似,基本思想是为目标函数中的正样本误差和负样本误差赋予不同的权重。
- 第二种方案是基于负样本的采样,基本思想是利用某些采样策略对一些缺失值进行采样从而得到负样本。
它们都充分利用了缺失值中包含的信息,并纠正了将其视为负样本的
bias
。第一种方案可以得到理论上的最优解,第二种方案拥有更好的scalability
(计算成本低得多)从而扩展到大型稀疏数据集。论文主要贡献:
首先,论文为
OCCF
问题提出了两种可能的框架,并提供了它们的实现。其次,论文使用几个真实世界的数据集实验研究了各种加权、采样方法。论文提出的解决方案在
OCCF
问题中明显优于两个极端策略(AMAN
和AMAU
)。在实验中,论文的方法相比最佳baseline
至少提高了8%
。此外,实验表明:这两个针对
OCCF
提出的解决方案(基于加权、基于负采样)具有几乎相同的性能。
相关工作:
协同过滤:过去,很多学者从不同方面探索了协同过滤
collaborative filtering: CF
,从提高算法性能到从异质数据源中整合更多资源。然而,这些关于协同过滤的研究仍然假设我们有正样本(高评分)和负样本(低评分)。在非二元评分的情况下,每个
item
被赋予一个评分。大多数先前的工作都集中在这个问题setting
上。在所有的CF
问题中,有很多样本的评分缺失。在《Spectral analysis of data》
和《Collaborative filtering and the missing at random assumption》
中,作者讨论了在协同过滤问题中对缺失值分布进行建模的问题。但是,他们都无法处理没有负样本的情况。在二元评分的情况下,每个样本要么是正样本、要么是负样本。
《Google news personalization: scalable online collaborative filtering》
研究了新闻推荐,点击新闻为正样本、未点击新闻为负样本。作者在这个大规模二元CF
问题上比较了一些实用的方法。KDD Cup 2007
举办了Who rated What
推荐任务,其训练数据与Netflix prize
数据集(带评分)相同。获胜团队(《Who rated what: a combination of SVD, correlation and frequent sequence mining》
)提出了一种使用二元训练数据集合SVD
和流行度的混合方法。
One-class Classification: OCC
:已经针对二分类问题提出了仅从正样本中学习的算法。《Estimating the support of a high-dimensional distribution》
提出了one-class SVM
解决了只有正样本可用的问题,即单类分类问题。而《Learning with positive and unlabeled examples using weighted logistic regression》
不仅使用正样本,也使用未标记的样本。对于
one-class SVM
,该模型描述了单类single class
,并且仅从正样本中学习。这种方法类似于密度估计。当未标记的数据可用时,解决单类分类问题的一种策略是使用类似于EM
算法来迭代预测负样本,并学习分类器。在
《learning from positive statistical queries》
中,作者表明,如果每个正样本以恒定概率unlabeled
,那么在统计query
模型下可学习的函数族也可以从正样本和未标记样本中学习。
我们的研究和这些关于单类数据中学习的研究之间的不同之处在于:他们的目的是学习关于正样本的单个概念
one single concept
,而我们探索和学习社交网络中的许多概念。类别不平衡问题
Class Imbalance Problem
:我们的工作还和类别不平衡问题有关,该问题通常发生在某些类别的样本远多于其它类别的分类任务中。one-class
问题可以视为类别不平衡的一种极端情况。有两种策略来解决类别不平衡问题。- 一种是在数据层面,其思想是使用采样来重新平衡数据。
- 另一种是在算法层面,使用
cost-sensitive
算法(即,对稀疏类别的样本对应的损失提高权重)。
两种策略的比较可以在
《Extreme re-balancing for svms: a case study》
中找到。
11.1 模型
假设有 $ m $ 个用户和 $ n $ 个
item
, $ \mathbf R $ 表示user-item
评分矩阵。假设用户 $ i $ 对item
$ j $ 的评分为 $ r_{i,j} $ ,当 $ r_{i,j} = 1 $ 时表示正样本,当 $ r_{i,j} = ? $ 时表示缺失值。我们的任务是从 $ \mathbf R $ 的缺失数据中找到潜在的正样本,我们称该任务为单类协同过滤One-Class Collaborative Filtering:OCCF
。注意:这里除了评分矩阵 $ \mathbf R $ 之外,没有任何关于用户和
item
的其它信息。
11.1.1 wALS
给定一个评分矩阵 $ \mathbf R \in \{0,1\}^{m\times n} $ 以及对应的非负权重矩阵 $ \mathbf W \in \mathbb R_{+}^{m\times n} $ ,加权低秩近似
$ \mathcal L(\mathbf X) = \sum_{i,j} W_{i,j}(r_{i,j} - x_{i,j})^2 $weighted low-rank approximation
的目标是:使用一个低秩矩阵 $ \mathbf X\in \mathbb R^{m\times n} $ 来近似 $ \mathbf R $ ,使得加权误差最小:其中: $ (\cdot)^2 $ 为平方损失; $ w_{i,j} $ 为权重:
- 对于正样本 $ r_{i,j} = 1 $ ,由于它是显式给定的,因此置信度为
100%
,因此我们设置 $ w_{i,j} = 1 $ 。 - 对于缺失值,我们认为其中大多数都是负样本,因此设置缺失值的 $ r_{i,j} = 0 $ 。但是缺失值为负样本的置信度并不是
100%
,因此我们设置 $ 0\le w_{i,j}\le 1 $ 。
- 对于正样本 $ r_{i,j} = 1 $ ,由于它是显式给定的,因此置信度为
考虑用户的 $ i $ 的
$ \hat r_{i,j} = \mathbf{\vec u}_i\cdot \mathbf{\vec v}_j $representation
向量为 $ \mathbf{\vec u}_i\in \mathbb R^d $ ,item
$ j $ 的representation
向量为 $ \mathbf{\vec v}_j $ ,则用户 $ i $ 在item
$ j $ 上的预估评分为:令:
$ \mathbf U = \begin{bmatrix} \mathbf{\vec u}_1^\top\\ \mathbf{\vec u}_2^\top\\ \vdots\\ \mathbf{\vec u}_m^\top \end{bmatrix}\in \mathbb R^{m\times d},\quad \mathbf V = \begin{bmatrix} \mathbf{\vec v}_1^\top\\ \mathbf{\vec v}_2^\top\\ \vdots\\ \mathbf{\vec v}_n^\top \end{bmatrix}\in \mathbb R^{n\times d} $则预估的评分矩阵为: $ \hat{\mathbf R} = \mathbf U \mathbf V^\top $ 。其中 $ d\ll m, d\ll n $ , $ \hat{\mathbf R} $ 的秩为 $ d $ 。
令 $ \mathbf X = \hat{\mathbf R} $ ,则这个低秩矩阵就是我们需要得到的低秩近似。
考虑正则化项之后,我们的目标函数为:
$ \mathcal L(\mathbf U,\mathbf V) = \sum_{i,j} w_{i,j}(r_{i,j} - \mathbf{\vec u}_i\cdot \mathbf{\vec v}_j)^2 + \lambda(||\mathbf U||_F^2+ ||\mathbf V||_F^2) $其中 $ \lambda $ 为正则化系数。
上述最优化过程可以通过交替最小二乘法
alternating least squares:ALS
方法来有效求解。根据:
$ \frac{\partial \mathcal L}{\partial u_{i,k}} = 2\sum_j w_{i,j}(\mathbf{\vec u}_i\cdot \mathbf{\vec v}_j-r_{i,j})v_{j,k} + 2\lambda\sum_j w_{i,j} u_{i,k}\\ \frac{\partial \mathcal L}{\partial v_{j,k}} = 2\sum_i w_{i,j}(\mathbf{\vec u}_i\cdot \mathbf{\vec v}_j-r_{i,j})u_{i,k} + 2\lambda\sum_i w_{i,j} v_{j,k} $则有:
$ \nabla_{\mathbf{\vec u}_i} \mathcal L = \left(\frac{\partial \mathcal L}{\partial u_{i,1}},\cdots,\frac{\partial \mathcal L}{\partial u_{i,d}}\right)^T,\quad \nabla_{\mathbf{\vec v}_j} \mathcal L = \left(\frac{\partial \mathcal L}{\partial v_{j,1}},\cdots,\frac{\partial \mathcal L}{\partial v_{j,d}}\right)^T $ALS
方法首先固定 $ \mathbf V $ ,根据 $ \nabla_{\mathbf{\vec u}_i} \mathcal L = \mathbf{\vec 0} $ 我们可以得到 $ \mathbf{\vec u}_i $ 的解析解;然后固定 $ \mathbf U $ ,根据 $ \nabla_{\mathbf{\vec v}_j} \mathcal L = \mathbf{\vec 0} $ 我们可以得到 $ \mathbf{\vec v}_j $ 的解析解。我们重复交替优化 $ \mathbf U $ 和 $ \mathbf V $ 直至算法收敛,这种方法称之为加权交替最小二乘法
Weighted Alternating Least Squares:wALS
。权重矩阵 $ \mathbf W $ 对
wALS
方法的效果至关重要。我们的基本思想是:令 $ w_{i,j} $ 包含置信度信息。如:当 $ r_{i,j} = 1 $ 时令 $ w_{i,j} = 1 $ ,表示置信度很高。但是对于缺失值,它为负样本的置信度并没有100%
,因此我们需要将负样本的权重降低。负样本权重有三种配置:
$ w_{i,j} = \begin{cases} 1&,r_{i,j} = 1\\ \delta&,r_{i,j} = 0 \end{cases} $Uniform
配置:假设所有用户或所有item
上的缺失值为负样本的概率都是等可能的。即:其中 $ \delta\in [0,1] $ 。
User-Oriented
配置:如果用户有更多正样本,则假设用户的缺失值为负样本的概率更高。即如果一个用户对大多数item
都给与好评,则用户对缺失的item
没有产生行为的原因是不感兴趣的可能性越大。即:
$ w_{i,j} = \begin{cases} 1&,r_{i,j} = 1\\ \propto \sum_{j^\prime} r_{i,j^\prime}&,r_{i,j} = 0 \end{cases} $Item-Oriented
配置:如果item
被大多数用户喜欢,则该item
的缺失值为负样本的概率越小。即如果一个item
是热门的,则用户对它感兴趣的概率越高。即:
$ w_{i,j} = \begin{cases} 1&,r_{i,j} = 1\\ \propto m- \sum_{i^\prime} r_{i^\prime,j}&,r_{i,j} = 0 \end{cases} $
当 $ \mathbf W = \mathbf I $ 时,
wALS
方法等价于AMAN
(所有缺失值都是负样本)。
11.1.2 sALS-ENS
wALS
方法有两个缺点:- 当矩阵 $ \mathbf R $ 太大时,计算代价太大。
- 负样本数量占绝大多数,因此存在类别不平衡。
为解决这两个问题,我们提出了基于随机采样的方法。
- 第一步,从缺失值中根据假设的概率分布随机采样一组负样本,然后我们根据所有的正样本、采样的负样本得到一个新的评分矩阵 $ \tilde{\mathbf R}^{(k)} $ 。
- 第二步,根据
wALS
算法低秩重构评分矩阵 $ \tilde{\mathbf R}^{(k)} $ ,其中近似矩阵为 $ \hat{\mathbf R}^{(k)} $ 。 - 最后,对所有的近似矩阵 $ \hat{\mathbf R}^{(k)},1\le k \le K $ 取均值,得到 $ \mathbf R $ 的低秩近似矩阵 $ \hat{\mathbf R} $ 。其中 $ K $ 为随机采样的总次数。
该方法我们称为
sampling ALS Ensemble:sALS-ENS
。给定原始评分矩阵 $ \mathbf R $ 、采样概率矩阵 $ \hat{\mathbf P} $ 以及负样本大小 $ q $ ,我们可以使用一种快速的 $ O(q) $ 复杂度的随机采样算法(
《Faster methods for random sampling 》
)来生成新的评分矩阵 $ \tilde {\mathbf R}^{(k)} $ 。我们提出了三种采样概率:
- 均匀随机采样
Uniform
: $ \hat p_{i,j}\propto 1 $ 。即所有缺失值为负样本的概率都是等可能的。 User-Oriented
采样: $ \hat p_{i,j}\propto \sum_{j^\prime} r_{i,j^\prime} $ 。即用户对应的正样本越多,则缺失值为负样本的概率越大。Item-Oriented
采样: $ \hat p_{i,j}\propto \frac{1}{\sum_{i^\prime} r_{i^\prime,j}} $ 。即item
越热门,则缺失值为负样本的概率越小。
- 均匀随机采样
由于从 $ \mathbf R $ 中采样的矩阵 $ \tilde{\mathbf R} $ 是随机的,因此逼近 $ \tilde{\mathbf R} $ 的矩阵 $ \hat{\mathbf R} $ 是有偏的
biased
、不稳定的unstable
。一种经验的解决方案是利用集成学习
ensemble
。这里我们使用bagging
的思路:随机采样多次得到 $ \tilde{\mathbf R}^{(k)} $ ,然后利用低秩矩阵 $ \hat{\mathbf R}^{(k)} $ 来逼近 $ \tilde{\mathbf R}^{(k)} $ 。最后通过对所有 $ \hat{\mathbf R}^{(k)} $ 取平均来得到 $ \mathbf R $ 的低秩近似 $ \hat{\mathbf R} $ 。$ \mathbf R $ 是观察矩阵, $ \tilde{\mathbf R} $ 是从观察矩阵中采样得到的矩阵, $ \hat{\mathbf R} $ 是针对 $ \tilde{\mathbf R} $ 的重构矩阵。
11.1.3 算法复杂度
假设 $ \mathbf U\in \mathbb R^{m\times d},\mathbf V\in \mathbb R^{n\times d} $ :
对于
wALS
,每一步更新 $ \mathbf U $ 或 $ \mathbf V $ 的时间复杂度为 $ O(d^2nm) $ ,因此wALS
的时间复杂度为 $ O(d^2n_tmn) $ ,其中 $ n_t $ 为迭代的step
数。对于
$ O(d^2ln_t(n_r(1+\alpha)+(m+n)d)) $sLAS-ENS
,假设NES
集成的模型有 $ l $ 个,正样本数量为 $ n_r $ ,负样本和正样本比例为 $ \alpha $ ,则总的时间复杂度为:
实际过程中 $ n_t,l,\alpha $ 都是很小的常数,典型的值为: $ n_t $ 从
20
到30
、 $ l\le 20 $ 、 $ \alpha\le 5 $ 。并且有 $ (n+m) d\le n_r(1+\alpha) $ 。因此
wALS
的算法复杂度为 $ O(mn) $ ,sALS-ENS
的算法复杂度为 $ O(n_r) $ 。因此wLAS-ENS
对于大型稀疏数据的scalability
更强。
11.2 实验
数据集:
Yahoo
新闻数据集:每条记录都是一个user-news
的pair
对,其中包含用户ID
和新闻ID
。数据集包含3158
个用户和1536
条新闻。- 社交书签数据集:来自
http://del.icio.us
网站的数据,包含3000
个用户和2000
个tag
标签。
实验配置:数据集以
80%-20%
的比例拆分为训练集、测试集,其中训练集包含80%
的已知正样本,剩余都是缺失值;测试集包含另外20%
的已知正样本,以及剩下的所有缺失值。凭直觉我们认为:一个优秀的算法应该具有更高的概率将已知正样本排序在未知样本之前。因此我们使用
MAP
和half-life utility
来评估测试集的性能。对于每种配置我们随机重复执行
20
次,并报告指标的均值和标准差。另外,所有模型的超参数都是通过交叉验证来确定。
评估指标:
Mean Average Precision:MAP
:用于信息检索领域评估一组query
召回的doc
的排名情况。我们首先计算用户的
$ \text{AP}(\text{user}_i) = \frac{\sum_{k=1}^K \text{precision}(k)\times I_k}{n_i} $AP
,其中AP
是在所有位置上计算到的precision
的均值:其中:
- $ n_i $ 为用户 $ i $ 喜欢的
item
数量。 - $ K $ 为排序好的推荐列表的长度。
- $ I_k $ 表示推荐列表中第 $ k $ 个
item
是否用户喜欢的,如果是喜欢的则为1
,否则为0
。 - $ \text{precision}(k) $ 表示位置 $ k $ 的精度,即推荐列表前 $ k $ 个
item
中,用户 $ i $ 真正喜欢的比例。
- $ n_i $ 为用户 $ i $ 喜欢的
然后我们计算所有用户的
$ \text{AP} = \frac{1}{m}\sum_{i} \text{AP}(\text{user}_i) $AP
均值:
$ R_i = \sum_{k=1}^K \frac{I_k}{2^{(k-1)\times (\beta-1)}} $Half-lie Utility:HLU
:假设推荐列表中item
的效用utility
随着位置的增加而指数下降,则定义用户 $ i $ 的推荐列表的效用为:这里 $ \beta $ 为参数,实验中设置为
5
。测试集所有用户的
$ R = \frac{\sum_i R_i }{\sum_iR_i ^{\max} } $HLU
定义为:其中 $ R_i^\max $ 表示用户 $ i $ 的推荐列表中,用户所有喜欢的
item
都位于推荐列表的头部,因此也是最大的效用。
对比模型:
AMAN
:我们将几种著名的协同过滤算法和AMAN
策略结合,包括交替最小二乘ALS-AMAN
、奇异值分解SVD
、以及基于邻域的方法(包括UserBased CF
和ItemBased CF
)。AMAU
:在AMAU
策略下,我们很难使用传统的协同过滤算法得到non-trivial
解。此时,根据item
的热门程度进行排序,然后推荐热门item
是一种简单且广泛使用的方法。另一种方法是将
OCCF
问题转换为one-class
分类问题。这里我们采用one-class SVM
来求解该one-class
分类问题。我们为每个item
创建一个one-class SVM
分类器,该分类器将除了该item
以外的其它item
评分作为输入特征,然后预测用户对目标item
是正向还是负向。
我们首先评估维度 $ d $ 的影响。可以看到:
- 对于
SVD
,随着 $ d $ 的增加性能首先提高然后下降。 - 对于
wALS
,性能更为稳定并且逐渐提高,最后收敛于大约 $ d=50 $ 。
因此在后续的实验中,我们设置维度 $ d $ 为:
- 对于
wALS
,在所有数据集上 $ d=50 $ 。 - 对于
SVD
,在雅虎新闻数据集上 $ d=10 $ ,在社交书签数据集上 $ d=16 $ 。
- 对于
我们比较了
wALS
、sASL-ENS
这两种方法,对于每一种方法我们提出了三种策略:uniform
均匀的、user-oriented
面向用户的、item-oriented
面向item
的。下表给出了这些方案的结果。在
wALS
方法中,user-oriented
效果最好、item-oriented
效果最差。这可能是由于用户数量和item
数量之间不平衡导致。对于当前数据集,用户数量 $ m $ 远大于item
数量 $ n $ 。我们比较了
AMAU
(基于热门程度的推荐、单类SVM
)、AMAN
(SVD
、ALS-AMAN
)以及我们的方法(wALS
、sALS-ENS
)的效果。其中
$ \alpha = \frac{\sum_{(i,j)\in r_{i,j}=0}w_{i,j}}{\sum_{(i,j)\in r_{i,j}=1}w_{i,j}} $x
轴为负样本数量和正样本数量的加权比例:$ \alpha $ 控制着负样本的规模。当 $ \alpha \rightarrow 0 $ 时,我们的方法接近
AMAU
;当 $ \alpha \rightarrow \infty $ 时我们的方法接近AMAN
。为了方便比较,给定 $ \alpha $ 的条件下负采样参数设定为 $ q= \alpha \times n_r $ 。由于热门程度策略、
SVD
、ALS-AMAN
等方法的效果不会随着 $ \alpha $ 改变,因此它们在图中以水平线展示。可以看出:我们的方法要优于
AMAU
和AMAN
。不同方法在雅虎训练集上的训练时间(单位秒)如下所示。可以看到,当 $ \alpha $ 较小时,
sALS
的方法训练效率更高。从实验结果可以看到:和
AMAU
策略相比,AMAN
的效果更好。这是因为:尽管缺失值的标记是未知的,但是我们仍然具有先验知识,即大部分缺失样本都是负样本。这和类别不平衡问题中的结论有所不同。在类别不平衡问题中,假设负样本占据主导地位,那么丢夫部分负样本往往会产生更好的效果。但是在
OCCF
问题中,丢弃 “负样本” 反而效果下降。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论