zoukankan      html  css  js  c++  java
  • 加入商品分类信息,考虑用户所处阶段的 图模型 推荐算法 Rws(random walk with stage)

    场景:

    一个新妈妈给刚出生的宝宝买用品,随着宝宝的长大,不同的阶段需要不同的物品。

    这个场景中涉及到考虑用户所处阶段,给用户推荐物品的问题。

    如果使用用户协同过滤,则需要根据购买记录,找到与用户处于同一阶段的用户。

    不加入分类信息,单纯使用物品信息,则可能因为买了不同牌子的尿布,而判断为非相似用户,

    所以加入商品分类信息

     

    算法步骤:

    1.   加入分类信息

    1)   根据时间将用户交易记录分成若干阶段(比如,近90天,近360-90天,...

    2)   对于中的记录(中的为例),在向量的分量(即物品所属的类别路径)上加上1

    对于记录,得到向量

    对其进行L2正规化(每个分量除以

    得到

    3)   合并各阶段向量

    2.   生成相似度矩阵

    2.1        用户相似度矩阵

    基于物品的相似度    为用户购买过的商品的集合

    基于分类的相似度

        用于控制两个相似度的权重

    2.2        物品相似度

       为购买过商品的用户的集合

    2.3        类别相似度

    IC(information content)

         为类别下的商品销量占所有销量的比例

    LCS(least common subsumer)

       即为最近的共同祖先

     

    3.   概率图模型求解

    3.1        构建矩阵

      为用户相似度矩阵,为物品相似度矩阵,

    为类别相似度矩阵,

    为用户和产品的关系(若用户购买过产品,则为1,否则为0

    为用户和类别的关系(若用户购买过该类别下产品,则为1,否则为0

    为产品和类别的关系(若产品属于该类别,则为1,否则为0

    graph Laplacian

      为对角矩阵,处为行的和

    3.2        Random walk with restart

    迭代下面公式直到收敛:

     为只有第个分量为1,其他分量都为0的向量,表示从第个用户处出发,初始

    或者求解的逆矩阵,得到

     

    4.   生成推荐

    得到中最大的前k个分量

    为用户,则将其最近购买的物品加入推荐列表中

    为产品,则将产品加入推荐列表中

    为类别,则将该类别下销量最好的几个加入推荐列表中

  • 相关阅读:
    函数——返回值不止一个的情况(解一元二次方程)
    排序方法:去掉最高最低分求平均分 函数
    丢羊 递归
    网吧充值 函数+Swich+ArrayList版
    对战游戏自己简单版+大神版
    简单Struct+ArrayList选择买东西:购物车思路
    推箱子 复杂版(多个箱子)
    stuct+ArrayList的for用法
    Struct+ArrayList冒泡排序。例
    c# 穷举
  • 原文地址:https://www.cnblogs.com/porco/p/4458765.html
Copyright © 2011-2022 走看看