基于特征的推荐算法【转】
http://in.sdo.com/?p=2779
推荐算法准确度度量公式:
其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合。
集合相似度度量公式(N维向量的距离度量公式):
Jaccard公式:
其中,N(u)表示用户u有过正反馈的物品集合。
余弦相似度公式:
UserCF公式:
其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣。默认取r(v,i)=1或0。
视角:用户即是特征。完全的个性化,每个用户都是唯一的,每个用户表示一维的特征。用户数量即是特征空间的维度,用户特征表示成TU(u)={0,0,0, … , 1, …, },t(u, u)=1, 其余为0。 对于物品的特征向量TI(j)={0, 1, 1, 1, 0, … , …}, 凡购买物品i的用户维度特征均为1。 进一步,物品的特征空间可用用户购买的次数表示。相似度w(u,v)看成相应维度特征的加权值。
ItemCF公式:
其中,S(i,k)表示和物品i最相似的K个物品集合;N(u)表示用户喜欢的物品集合;w(i,j)表示物品i和物品j的相似度;r(u,i)表示用户u对i物品的兴趣。默认取r(u,i)=1或0。
视角:物品即是特征。每个物品都是唯一的,每个物品表示一维的特征。物品数量即是特征空间的维度,物品特征表示成TU(u)={0,0,0, … , 1, …, },t(u, u)=1, 其余为0。 对于用户的特征空间TI(j)={0, 1, 1, 1, 0, … , …}, 凡购买物品i的维度特征均为1。 进一步,物品的特征空间可用用户购买的次数表示。相似度w(i,j)看成相应维度特征的加权值。
LFM公式:
其中,F表示隐类数量;p(u,k)表示用户u对第k个隐类的兴趣度;q(i,k)表示第k个隐类和物品i的相似度。Alpha表示学习速率;lamda表示正则化参数。
视角:LFM的公式就是典型的特征向量空间和特征加权矩阵的泛化表示形式。
TagCF公式:
n(u,b)表示用户u打过标签b的次数;n(b,j)表示物品i被打过标签的次数。
视角:标签即是特征。
关系链推荐公式:
其中,F(u)表示用户u的好友集合;w(u,v)可表示用户u和v的熟悉程度(共同好友数),也可表示用户u和v兴趣的相似度(UserCF定义),也可是二者的综合度量;r(v,i)表示用户v对物品i的兴趣。默认取r(v,i)=1或0。
视角:好友是特征,或者好友兴趣是特征。
信息流推荐公式:
其中,信息流i的边e表示其他用户对信息流i产生行为;E(e)表示和信息流i边的集合;v(e)表示用户v和当前用户u的相似度(熟悉度);w(e)表示边类型的权重;d(e)表示边e的时间衰减参数。
推荐算法小结
所有的推荐算法都可看成是基于特征向量空间和特征加权矩阵的推荐算法。
当特征向量的维度很大时,基于特征向量空间和特征加权矩阵的推荐算法计算复杂度将很大。常见的做法是采用降维技术,比如使用minhash(simhash)。另一种做法是先聚类,将N维的特征空间,转变成M维的特征空间(M<N)。比如在ItemCF算法中,可对物品聚类,然后采用M类的物品作为特征。当然降维后需要计算权值矩阵。
另一种极致做法:抛弃权值矩阵,在分类的基础上,直接根据类别推荐。即基于特征向量的匹配。
基于特征匹配的算法框架(用户或物品均可):
1) 特征选取
a) 已知用户特征:直接根据特征分类
b) 未知用户特征:聚类,如LFM
2) 利用购买用户特征,计算物品的特征。比如简单选取TopN个用户特征作为物品的特征;
3) 根据用户特征和物品特征实现推荐,如果特征空间有限(类别不多),可采用类别推荐;如果特征空间巨大,可通过计算特征距离实现推荐。
3种关联用户和物品的推荐系统
基于特征的推荐算法
说明:当用户喜欢多个特征,物品具有多个特征时,即是典型的特征向量空间和特征加权矩阵的推荐算法;当用户只喜欢1个特征,物品只具有单个特征时,即基于特征分类的推荐算法。
在实际应用中,常常采用多个推荐算法,分别实现不同的推荐引擎,最后根据不同的推荐引擎的结果做融合,即算法融合,常见的就是加权融合。
推荐系统架构
实际推荐系统通常采用多种推荐算法,并根据用户的实时行为反馈调整用户的特征向量(特征的加权系数),进而融合各个推荐算法的推荐结果,在此基础上过滤不要的推荐项,最后结合用户使用场景调整推荐结果排名,给出最终推荐结果。
基于不同特征的推荐算法经常采用定期计算、定期更新特征物品推荐表,比如基于Item的相似度特征,可保存每个item最相关的K个Item;基于用户,保留每个用户最近的N个item;基于基于tag特征,保存每个tag最多次数的M个item;基于用户年龄特征,保存每个年龄段最热门的N个Item;基于用户like,保存各个用户最近喜欢的N个item,或最喜欢的M个类别……
用户的实时行为反馈和用户当前场景都将实时影响最终的推荐结果,用户的实时反馈可直接影响推荐结果融合,而用户的场景将决定推荐结果的排序和展示。同时用户的反馈也将影响离线计算的物品推荐数据。
相关文章
- 野生前端的数据结构练习(11)动态规划算法
- 算法导论第十八章 B树
- 程序员的算法趣题Q52: 糖果恶作剧
- 基于用户投票的排名算法(一):Delicious和Hacker News
- 基于用户的协同过滤推荐算法原理和实现
- NLP:自然语言处理NLP的发展史(传统/预训练大模型)四个阶段/四大思想/PTM两代区别/各个算法诞生具体细节、基于不同基础架构衍生的一系列大模型(BERT系列等)之详细攻略
- ML之FM:基于MovieLens电影评分数据集(文本特征编码)利用FM算法(因子分解机算法)实现(两种模型推理方式)对用户进行Top5电影推荐案例
- DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)
- NLP之NB:基于sklearn库利用不同语种数据集训练NB(朴素贝叶斯)算法,对新语种进行语种检测
- DL之RNN:人工智能为你写歌词(林夕写给陈奕迅)——基于TF利用RNN算法实现【机器为你作词】、训练&测试过程全记录
- ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)
- ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练实现二分类预测(基于训练好的模型进行新数据预测)
- ML之RL:基于MovieLens电影评分数据集利用强化学习算法(多臂老虎机+EpsilonGreedy策略)实现对用户进行Top电影推荐案例
- 基于萤火虫算法优化的BP神经网络预测模型(Matlab代码实现)
- 基于蜜蜂算法的资源受限项目优化调度(Matlab代码实现)
- 【智能算法】基于LFW人脸识别算法实现
- 如何用 DBSCAN 聚类算法做数据分析?
- 基于GA算法的TSP最短路径搜索matlab仿真
- m基于贝叶斯理论的超分辨率重构算法matlab仿真,对比Tikhonov重构算法
- Python基于深度学习算法实现图书推荐系统项目实战
- 推荐系统协同过滤-python实现(基于用户的协同过滤算法,基于物品的协同过滤算法,附数据集)
- ADAS传感器数据融合算法的开发
- 建模算法(九)——拟合
- NLP算法竞赛心得
- 【故障诊断】基于负熵诱导灰狼优化算法的多目标信息频带选择用于滚动轴承故障诊断(Matlab代码实现)
- 推荐系统(6):推荐算法之基于内容的推荐算法