美文网首页
推荐笔记, 使用lightfm矩阵分解

推荐笔记, 使用lightfm矩阵分解

作者: 阿东7 | 来源:发表于2020-03-11 21:26 被阅读0次

以下是协同过滤推荐系统的学习笔记

  1. 公式


    image.png
  2. 逻辑图


    image.png
image.png
  1. 原理理解
  • 使用用户对物品的评分,分解出用户感兴趣的物品类型特征,和物品在不同物品类型的分数。例如:电影分为动作电影类型、情感电影类型,某一电影在动作电影类型分数为9,情感电影类型分数为1。同理某一用户对动作类型电影分数为1分,情感电影为9分。这些我把它理解为物对-物品类型特征和用户-物品类型特征。
  1. 使用LightFM
  • LightFM使用这边比较简单,就是给用户电影的评分数据,LightFM自动计算出用户对不同物品的分数
  • 一下是从LightFM官网粘帖的代码
from lightfm import LightFM
from lightfm.datasets import fetch_movielens
from lightfm.evaluation import precision_at_k
import numpy as np

# Load the MovieLens 100k dataset. Only five
# star ratings are treated as positive.
data = fetch_movielens(data_home='./data', min_rating=5.0)
print(data['train'])
# Instantiate and train the model
model = LightFM(loss='warp')
model.fit(data['train'], epochs=30, num_threads=2)

# Evaluate the trained model
test_precision = precision_at_k(model, data['test'], k=5).mean()

print("Train precision: %.2f" % precision_at_k(model, data['train'], k=5).mean())
print("Test precision: %.2f" % precision_at_k(model, data['test'], k=5).mean())

def sample_recommendation(model, data, user_ids):


    n_users, n_items = data['train'].shape

    for user_id in user_ids:
        known_positives = data['item_labels'][data['train'].tocsr()[user_id].indices]
        print(data['train'].tocsr())
        print(data['train'].tocsr()[user_id])
        print(data['train'].tocsr()[user_id].indices)
        scores = model.predict(user_id, np.arange(n_items))
        top_items = data['item_labels'][np.argsort(-scores)]

        print("User %s" % user_id)
        print("     Known positives:")

        for x in known_positives[:3]:
            print("        %s" % x)

        print("     Recommended:")

        for x in top_items[:3]:
            print("        %s" % x)

sample_recommendation(model, data, [3, 25, 450])
  1. github对应源码和需要的数据地址
    https://github.com/wengmingdong/tf2-stu/tree/master/recommender

相关文章

  • 推荐笔记, 使用lightfm矩阵分解

    以下是协同过滤推荐系统的学习笔记 公式image.png 逻辑图image.png 原理理解 使用用户对物品的评分...

  • MF与embedding

    推荐系统常用的MF(矩阵分解)方法,旨在通过评分矩阵R有损分解得到矩阵U(代表所有用户的feature vecto...

  • 今日份打卡 213/365

    技术文章基于矩阵分解的推荐系统实践

  • 【转】矩阵分解之SVD和SVD++

    前面的内容是关于近邻推荐的相关知识,来看下另外一种推荐方法:矩阵分解。 为什么需要矩阵分解 协同过滤可以解决我们关...

  • 矩阵分解

    矩阵分解 前记 矩阵分解在推荐系统里面应该说是最经典、最有代表性的算法了。除了基础 举证分解方法,后面衍生出了各种...

  • 学习笔记DL006:特征分解,奇异值分解

    特征分解。 整数分解质因素。 特征分解(eigendecomposition),使用最广,矩阵分解一组特征向量、特...

  • 矩阵分解和FM

    矩阵分解(Matrix Factorization,MF)是推荐系统中非常经典的一个算法,虽然现今工业界直接使用的...

  • 矩阵论-矩阵乘法的意义

    推荐书籍: 《神奇矩阵》 AB矩阵相乘的表示形式我喜欢这种。 当然有了矩阵相乘也有其反向操作,矩阵的分解。

  • 第30课 奇异值分解

    奇异值分解:简称,是矩阵最终和最好的分解,分解的因子是正交矩阵,对角矩阵,正交矩阵,任意矩阵都有这种奇异值分解 对...

  • 线代--矩阵的分解-LU分解n阶方阵

    矩阵分解的概念:初中我们接触过数的分解,如:;推广到矩阵,一个矩阵也可以分解为几个矩阵乘积的形式,矩阵分解具有不同...

网友评论

      本文标题:推荐笔记, 使用lightfm矩阵分解

      本文链接:https://www.haomeiwen.com/subject/qgbndhtx.html