【推荐系统】推荐基础算法-基于稀疏自编码的推荐方法

news/2024/4/27 16:10:18/文章来源:https://blog.csdn.net/m0_51933492/article/details/126665265

矩阵分解技术在推荐领域的应用比较成熟,矩阵分解本质上只通过一次分解来对原矩阵进行逼近,特征挖掘的层次不够深入。另外矩阵分解也没有运用到物品本身的内容特征,例如书本的类别分类、音乐的流派分类等。通过多层感知机,可以得到更加深度的特征表示,并且可以对内容分类特征加以应用。

1.基础的自编码结构

假设我们有一个训练样本集合{x(1),x(2),x(3)...},其 ,即每一个样本均有n维特征。构造一个三层的神经网络,输入层layer1是x(i),输入层layer3是y(i),中间隐藏层layerl2为h(1)(k),我们让输出层等于输入层,x(i)= y(i),且中间层的维度远远低于输入层和输出层,这样就得到了第一层的特征压缩 

 自编码神经网络尝试逼近一个恒等函数,从而使得输出x'接近于输入x。当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。

假设某个自编码神经网络的输入x是100维的数据,其隐藏层L2我们限定为50个隐藏神经元,输出也是100维的y由于只有50个隐藏神经元,我们迫使自编码神经网络去学习输入数据的压缩表示,也就是说,它必须从50维的隐藏神经元的激活项中重构出100维的输入。如果网络的输入数据是完全随机的,比如每一个输入都是一个跟其他特征完全无关的独立同分布高斯随机变量,那么这一压缩表示将会非常难于学习。但是如果输入数据中隐含着一些特定的结构,比如某些输入特征是彼此相关的,那么这一算法就可以发现输入数据中的这些相关性。

当隐藏神经元的数量较大(有时为了能更有效地找出隐含在输入数据内部的结构与模式,会寻找一组超完备基向量,其维度可能比输入的维度还要高),也可以通过给自编码神经网络施加一些限制,使得满足稀疏性要求;如果神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,即我们通常说的dropout。那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。

2.多层结构

  • 用深度学习的一些思想,学习到高层抽象特征,其中一种典型的方法就是栈式自编码,它采用逐层贪婪训练法进行训练。即先利用原始输入来训练第一个网络,通过使输出接近于输入,我们可以得到第一个网络的隐藏层h(1)(k)。
  • 我们用原始输入(x)训练第一个自编码器,它能够学习得到原始输入的一阶特征表示隐藏层h(1)(k),再将这些一阶特征作为第二个稀疏自编码器的输入,来学习二阶特征h(2)(k)
  • 再将二阶特征h(2)(k)作为第三个网络,一个softmax分类器的输入,训练出一个能将二阶特征映射到数字标签的模型
  • 将这三层网络结合起来构建一个包含原始输入层,两个隐藏层和一个最终softmax分类器层的完整的栈式自编码网络

我们以音乐推荐为例,输入层的每个样本是一首歌曲,向量特征为歌曲被用户收藏的数据,输出层为音乐的流派分类结果。我们希望训练出歌曲的特征向量,用于歌曲相似度的计算,具体构造自编码网络的方法如下:

输入层,每首歌曲的输入向量为(u1,u2,u3,……,u],其中ui表示用户i是否收藏过这首歌,当收藏过时,值为1;未收藏时,值是缺失的,暂且计为0。输入矩阵为(m+1)xn维(包含一个截距项),m为用户数量,n为歌曲数量。

隐藏层1、隐藏层2,强制指定神经元的数量为k+1个,此时隐藏层其实就是歌曲的低维特征向量,矩阵为(k+1)xn,k+1为特征维数(包含一个截距项1,之所以保留,是为了可以重构出输出层),其中n为歌曲数量。

一般的神经网络中,往往会忽略隐藏层到输出层的连接权重W(1,1)、W(1,2)、b(1,1)、b(1,2)的意义,只是将其作为一个输出预测的分类器;但在自编码网络中,连接层是有实际意义的,这些权重作用是将歌曲特征向量映射到用户是否听过/喜欢过该歌曲,其实就是用户的低维特征

输出层是音乐流派的分类结果

通过展示栈式自编码的学习,可以将隐藏层h(2)(k)取出来,它是歌曲以流派分类为目标降维压缩后的向量,该向量不仅使用到了用户的群体收藏行为还用到了歌曲的流派特征信息,可以表示歌曲更多的特征信息。类似SVD,我们可以通过歌曲的特征向量求得歌曲的相似度,对用户未收藏的歌曲进行打分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5199.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商业化广告--体系学习-- 3 -- 行业蓝图篇 -- 广告主、媒体、第三方检测

我们可以简单地把广告产品的业务流程绘制如下。从左到右,依次是广告主、广告代理公司、媒体平台、广告主的目标消费者也就是媒体平台的用户,下方横跨的则是各种各样的第三方服务公司。 广告主 广告主是广告产品的最终需求方。他们为了向目标消费者推广自…

[SWPU2019]Web3

目录 考点: 解题: 知识点: 总结: 考点: 又是 Flask_session ln -s 软链接 代码审计 解题: 进入页面随便输入点东西 不是ssti 访问upload 显示没有权限。 抓包看 经典的 flask_session . 放到kal…

Codeforces Round #818 (Div. 2) D Madoka and The Corruption Scheme

Madoka and The Corruption Scheme 组合数 + 思维 + 贪心 首先要思考一开始要如何摆放才是最优秀的 按照完全二叉树(根就是最后赢的那个),给所有的点赋予权值,代表需要转换多少条边,才能使得这个点的数字被选上 显然假设当前点的权值为 \(x\),该点的其中一个节点权值必然…

Python-爬虫 (BS4数据解析)

文章目录1. BS4数据解析常见方法2.BS4数据解析&#xff0c;爬取豆瓣电影属性1. BS4数据解析常见方法 BS4数据解析方法是把需要的数据进行截取。处理数据的时间比较长 测试用网页&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta c…

zookeeper知识点扫盲

zookeeper是什么 引用官网的描述&#xff0c; ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or a…

express演示前端解决跨域的方法jsonp、cors

1.jsonp jsonp全称 JSON with Padding 即json外面包了一层js函数外衣&#xff0c;jsonp主要是利用了html中<script>等带有src属性的标签进行服务器请求时可以不受跨域影响 ①直接fetch请求 客户端代码 <!DOCTYPE html> <html lang"en"><head…

数据仓库---Hive

1. 数据仓库 1.1 概念 一个非常规范标准的定义是:数据仓库是一个面向主题的、集成的、相对稳定的、反应历史变化的数据集合,用于支持管理决策。 1.2 根本目的 数据仓库的根本目的是为了支持企业内部的商业分析和决策,也即企业相关的经营管理可以基于数据仓…

Java的接口以及接口与抽象类区别

java的接口 产生的背景 有时候必须从几个类中派生出一个子类&#xff0c;继承他们所有的方法&#xff0c;java不支持多继承&#xff0c;于是就有接口 当抽象类中全是抽象方法时&#xff0c;为了简化abstract关键字&#xff0c;于是就有了接口 特点 接口用interface实现 接口中…

22-09-02 西安 JVM 类加载器、栈、堆体系、堆参数调优、GC垃圾判定、垃圾回收算法、对象的finalize机制

JVM入门 1、JVM结构图 JVM是运行在操作系统之上的&#xff0c;它与硬件没有直接的交互 方法区&#xff1a;存储已被虚拟机加载的类元数据信息(元空间) 堆&#xff1a;存放对象实例&#xff0c;几乎所有的对象实例都在这里分配内存 虚拟机栈(java栈)&#xff1a;虚拟机栈描述…

springboot简单使用(4)

1.9 第九章 Thymeleaf 模版 1.9.1 认识 Thymeleaf Thymeleaf 是一个流行的模板引擎,该模板引擎采用 Java 语言开发 模板引擎是一个技术名词,是跨领域跨平台的概念,在 Java 语言体系下有模板引擎,在 C#、PHP 语言体系下也有模板引擎,甚至在 JavaScript 中也会用到模板引擎技…

每个架构师都值得拥有的一份Netty开发实战(附带面试专题)

前言 本书循序渐进的地介绍了 Netty各个方面的内容。 本书共分为 4 个部分&#xff08;共15章&#xff09;&#xff1a; 第一部分详细地介绍 Netty 的相关概念以及核心组件&#xff1b;第二部分介绍自定义协议经常用到的编解码器&#xff1b;第三部分介绍 Netty 对于应用层高…

线程相关方法

1. wait&#xff0c;notify&#xff0c;notifyAll 1.1wait原理 1.2用法 阻塞阶段 让线程暂时休息&#xff0c;等到时机成熟再唤醒继续运行。 在对象执行wait方法的时候&#xff0c;线程必须拥有这个对象的monitor锁&#xff0c;然后释放锁&#xff0c;进入阻塞状态。 唤醒阶段…

如何让 ABAP 报表在后台作业的模式下运行

本教程迄今为止我们介绍的各种 ABAP 程序的编写,都是在事物码 SE38 或者 SE80 里完成之后,直接点击工具栏的执行按钮,或者使用 F8 快捷键来执行的: 以这种方式启动的 ABAP 程序,是以在线方式(online)运行的,有时也称 联机 模式。 也就是说,如果在执行 ABAP 程序的过程中…

利用 SSH 完成 Git 与 GitHub 的绑定

如上图所示,进入Settings页面后,再点击SSH and GPG Keys进入此子界面,然后点击New SSH key按钮:在「史上最简单的 GitHub 教程」中,我们已经对 GitHub 有了一定的了解,包括创建仓库、拉分支,或者通过Clone or download克隆或者下载代码;我们也下载并安装了 Git,也了解…

Java开发五年跳槽涨薪从12K到35K,靠“狂刷”九遍面试题

朋友做Java开发三年多的时间了&#xff0c;在老东家勤勤恳恳工作了三年多&#xff0c;工资也就是从刚开始的8K涨到了12K&#xff0c;天天给我吐槽他的工资低。2020年年初开始就一直在各种地方找资源&#xff0c;刷面试题&#xff0c;想要“骑驴找马”&#xff0c;恰恰又是在疫情…

jupyter 基本用法

前一段时间&#xff0c;同事帮我在超算服务器安装了一套 jupyter notebook 软件&#xff0c;甚是好用。但用了几天后&#xff0c;忽然就不能用了。今天研究了一下&#xff0c;发现是服务器程序关闭了&#xff0c;所以我在浏览器端的网页就打不开了。今天仔细研究了一下&#xf…

Unity入门01——unity界面基础

1.工程文件夹 1.Assets&#xff1a;工程资源文件夹&#xff08;(美术资源&#xff0c;脚本等等) 2.Library&#xff1a;库文件夹(Unity自动生成管理) 3.Logs&#xff1a;日志文件夹&#xff0c;记录特殊信息(Unity自动生成管理) 4.obj&#xff1a;编译产生中间文件(Unity自动生…

【05】Yarn

125_尚硅谷_Hadoop_Yarn_课程介绍 126_尚硅谷_Hadoop_Yarn_基础架构 整个集群资源的老大&#xff1a;ResourceManager 单个结点资源的老大&#xff1a;NodeManager 每一个作业任务的老大&#xff1a;ApplicationMaster 相应的容器&#xff08;相当于一个小电脑&#xff09;&…

DolphinScheduler实例表备份、清理

&#x1f60b;DolphinScheduler实例表备份、清理 &#x1f44a;一、前言 DolphinScheduler至今已经在项目中使用了将近一年&#xff0c;工作流实例和任务流实例都积累了百万级的数据量。在查看工作流实例和任务实例的时候&#xff0c;都要等待后台去查询数据库&#xff0c;感觉…

【电商项目实战】拦截器(详细篇)

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot电商项目实战 ✨学习社区&#xff1a; &#x1f449;不会压弯的小飞侠 ✨知足上进&#x…