码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于矩阵分解模型的协同过滤理论概述(涉及到SVD,SVD++,TimeSVD++)


    前言

    本篇文章是对博客:从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现的补全,感谢该作者的分享

    本文补全的内容为:

    • SVD++中 y j y_j yj​的实际含义理解,以及对应的梯度下降公式
    • TimeSVD++梯度下降公式的分析

    正文

    SVD++

    SVD++的原模型应该是如下形式:
    在这里插入图片描述
    其中 w i j w_{ij} wij​是物品与物品的关联矩阵(梯度下降要学习的内容)
    如果将 w i j w_{ij} wij​再次进行QP分解,Q向量即物品i的隐向量,可与前式合并,得到如下形式:
    在这里插入图片描述
    即SVD++的公式模型
    视上式中的所有字符为自变量求导,可得SVD++的梯度下降公式:
    在这里插入图片描述

    TimeSVD++

    TimeSVD++的时序信息从基线预测模型和用户偏好模型两方面体现
    一是基线预测模型,在SVD++的基础上,对 b i b_i bi​增加了电影的受欢迎度在30个时间区间下的波动常值(也就是30个待优化的参数),记为 b i , B i n ( t ) b_{i,Bin(t)} bi,Bin(t)​,修正后的 b i b_i bi​如下式:
    在这里插入图片描述
    还对 b u b_u bu​增加了线性偏置量 d e v u ( t ) dev_u(t) devu​(t)以及用户 u u u的波动常值 b u , t b_{u,t} bu,t​(原文中按天给,数据集一共40天,所以是40个待优化的参数),修正后的 b u b_u bu​如下式:
    在这里插入图片描述
    二是用户偏好模型,对 p u p_u pu​引入时间变量,按隐向量维度f分为:
    p u ( t ) = { p u 1 ( t ) , . . . , p u f ( t ) } p_{u}(t)=\{p_{u1}(t),...,p_{uf}(t)\} pu​(t)={pu1​(t),...,puf​(t)}
    对其中某一维k来说,引入的时间变量仍可按照线性偏置量以及用户 u u u在该维度的波动常值来代替,即修正为下式:
    在这里插入图片描述
    依向量化的思想,文中引入的新变量可以分为三类:

    • b i b_i bi​中的波动常值 b i , B i n ( t ) b_{i,Bin(t)} bi,Bin(t)​(有30个待优化量)
    • b u b_u bu​以及 p u p_u pu​中的线性偏置量(前者有3个待优化量,后者有3*f个待优化量)
    • b u b_u bu​以及 p u p_u pu​中的波动常值(前者有40个待优化量,后者有40*f个待优化量)

    对上述三类新变量分别求梯度,与SVD++的梯度下降公式结合即可建立起TimeSVD++的梯度下降模型,其中:

    • 波动常值可视作一个向量,对向量求梯度,而不是对每一个待优化量求梯度
    • 线性偏置量因为3个带优化量有运算关系,应分别对3个待优化量求梯度,而不能视作向量求梯度
  • 相关阅读:
    Deep Learning【第二章】
    leetcode每日一题第二十二天-剑指 Offer 63. 股票的最大利润/(重新整合一遍股票问题所有情况)
    【电力系统】基于YALMIP 的微网(光伏+风电+蓄电池+微电网+柴油机)优化调度模型附matlab代码
    Windows系统使用powershell查找并删除重复文件
    java毕业设计教师教学质量评价管理Mybatis+系统+数据库+调试部署
    数据分析方法论和业务实战------数据分析概括与数据指标体系
    【机器学习范式】监督学习,无监督学习,强化学习, 半监督学习,自监督学习,迁移学习,对比分析+详解与示例代码
    【数据分享】成渝城市群规划范围数据(市县两级/shp格式)
    @RequestMapping注解标识的位置
    python实现根据词根词缀查询四级英语词汇
  • 原文地址:https://blog.csdn.net/weixin_43008154/article/details/128116537
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号