• 隐语义模型LFM


     

    隐语义模型是通过隐含特征,联系用户和物品,基于用户的特征对物品进行自动聚类,然后在用户感兴趣的类中选择物品推荐给用户。

    对于推荐系统,常用的算法:

    USER-CF:给用户推荐和他兴趣相似的用户喜欢的物品

    ITEM-CF:给用户推荐他们感兴趣物品的相似物品

    LFM:得到用户感兴趣的分类,从该分类中挑选物品推荐给用户

    对于LFM,要做的工作有:

    1.对物品进行分类,这里是模糊分类,也就是得出每个物品在每个类中的权重,并不是说一个物品就是属于一个类

    2.确定用户感兴趣的类,这里要计算用户对所有类的兴趣度

    3.从类中挑选物品给用户推荐,根据1,2结果相乘,得出用户对所有物品的兴趣度,进行排序,得出结果

     

    公式:

    其中R是用户u对物品i的兴趣度组成的矩阵

    P是用户u对第k个类的兴趣度组成的矩阵

    Q是物品i在第k个类中的权重

    一图胜千言:

    可以看出,协同过滤是基于统计的,不需要有学习过程,可以实时得出。而隐语义模型是基于建模的,根据训练集,计算出上图中的全部参数,有训练过程,无法实时给出结果。

    损失函数:

    其中后两项为L2正则化项,防止过拟合

    求解可以用梯度下降:

    梯度:

    迭代求解:

    隐语义模型中负样本的选择

    1)对每个用户,要保证正负样本的数目相近
    2)对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品。(更代表用户对该物品不感兴
    趣)
    参数:

    1.隐特征个数,也就是类个数f

    2.学习率∂

    3.正则化参数λ

    相对CF,LFM的空间复杂度更低

  • 相关阅读:
    Swift学习 --- 2.1基础部分
    【oracle案例】ORA-01722
    一种适合于大数据的并行坐标下降法
    【机器学习算法-python实现】svm支持向量机(3)—核函数
    让Editplus支持sql语法高亮显示
    CF986F Oppa Funcan Style Remastered
    HashMap和Hashtable的区别
    ArrayList和Vector的区别
    基本概念
    java编程规范
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8779749.html
Copyright © 2020-2023  润新知