个性召回算法 LFM
前言
学习整理笔记,内容所有权不在我
什么是LFM算法
LFM算法输入的是USER对ITEM的点击展示矩阵矩阵,和想要输出的用户与商品向量维度
返回:每一个user的向量表示和每一个item的向量表示
应用场景:
1.完成user的item推荐列表,toplike
2.完成item的相似度列表,topsim
3.完成item之间隐藏topic的挖掘,topic

1. 算法框架
用户u和商品i,u和i之间的关系紧密程度为两者向量相乘

初始的loss函数:

正则化得loss函数:

梯度计算:

其他需要注意的
负样本选取,隐特征F(一般设置在10到32之间),正则参数,lr
2. 与CF的比较:
LFM理论更加完备
CF需要储存用户*物品矩阵
LFM只需要对每个用户和物品存储他们的向量,因为向量长度远小于用户和物品数量,所以大大降维
CF可以做到实时响应,LFM难以很快迭代向量,无法实时
LFM代码记录
1. 数据
def get_train_data
返回训练集,其中正采样的数据格式:[userid, itemid, 1]
负采样的数据格式:[userid, itemid, avescore]
get_item_info储存movie表格
get_ave_score 每个电影的均值
2. 训练环节
def lfm_train(train_data,F,alpha,beta,step):
训练数据,向量维度,正则化系数,学习率,迭代次数
def init_model(vector_len):
初始化长度为vector_len的[0,1)范围内的向量
def model_predict(user_vector, item_vector):
两个向量的相似度
def model_train():
执行训练
596

被折叠的 条评论
为什么被折叠?



