推荐系统——Wide Deep

[[点击率]]预估介绍

点击率预估是对每次广告点击情况作出预测,可以输出点击或者不点击,也可以输出该次点击的概率,后者有时候也称为pClick.对于点击率预估模型而言,其最终作用是输出点击的一个概率,是一个回归模型

可以解决[[FM模型]]的一些问题如泛化能力过强导致会推荐一些其实并没有那么相关的物品。

Wide & Deep 模型的记忆能力和泛化能力

对于RS而言,memorization和generalization是两个常见的概念,其中memorization代表推荐系统的保守性,即RS通过记忆为用户推荐之前行为的items,而generalization则是泛化能力的体现,倾向于提高推荐系统的多样性。而Wide & Deep模型综合了两个方面,其中,memorization通过一个线性模型来实现,而generalization通过[DNN]来实现。
其中,对于Wide & Deep 模型而言,需要根据自己的场景去判断哪些特征放在Wide中,哪些特征放在Deep中

如何理解Wide部分有利于memorization,而Deep部分有利于generalization

  1. wide部分是一个广义的线性模型,输入包括两部分,一部分为样本的原始特征,另一部分为原始特征的交互特征。

    交互特征的定义:
    ϕk(x)=∏i=1dxicki,cki∈{0,1}\phi_k(x) = \prod_{i=1}^d x_i^{c_{ki}}, c_{ki} \in \{0, 1\}ϕk(x)=i=1dxicki,cki{0,1}大致意思为只有两个特征同时为1时,交互特征才能为1,否则为0

    其中,训练Wide部分时使用的是带[[L1正则]]的[[FTRL]]算法,其中,L1 FTRL十分注重模型的稀疏特质,即Wide采用L1 FTRL会使Wide部分变得更加稀疏,即Wide部分的大部分参数都为0,这就大大压缩了模型权重及特征向量的维度,因此Wide部分模型训练完成之后留下来的特征都是十分重要的

  2. Deep部分是一个DNN模型,输入特征可以分为两大类,一类为可以直接输入的数值特征,另一类类别特征(即经过Embedding之后才能输入到DNN中),Deep部分的数学形式为a(l+1)=f(Wla(l)+bl)a^{(l+1)} = f(W^la^{(l)} + b^l)a(l+1)=f(Wla(l)+bl)其中,对于DNN而言,随着层数的增加,中间特征也就越抽象,从而提升了模型的泛化能力。

Wide部分与Deep部分的结合
Wide & Deep将Wide部分和Deep部分两部分的输出结果进行联合训练,重新使用一个逻辑回归做最终的预测,输出概率值。P(Y=1∣x)=δ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)P(Y=1|x) = \delta (w^T_{wide}[x, \phi(x)] + w^T_{deep}a^{(lf)}+b)P(Y=1x)=δ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)

操作流程

  1. retrieval:利用机器学习模型和一些人为定义的规则,来返回匹配当前query的一个小的items集合,这个集合就是最终的推荐列表的候选集。
  2. ranking:
    1. 收集更细致的用户特征
    2. 将特征分别传入Wide和Deep中一起训练
      • 训练方法是用mini-batch stochastic optimization。
      • Wide组件是用FTRL(Follow-the-regularized-leader) + L1正则化学习。
      • Deep组件是用AdaGrad来学习。
    3. 训练完成之后推荐TopN

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

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

相关文章

redis系列:通过文章点赞排名案例学习sortedset命令

前言 这一篇文章将讲述Redis中的sortedset类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。 项目Github地址:https://github.com/rainbowda/learnWay/tree/master/learnRedis/case-sortedset 案例 demo功能是文章点赞排名等等&am…

xml生成2维码_MyBatis(2)之MyBatis-Generator最佳实践

自定义注释自定义注解指定xml文件模式上一篇文章详细阐述了xml配置文件的各种标签及其含义。其实从标签开始,每一个标签都对应一个实体类。context.class对应标签,而每一个子标签都对应一个属性;如图:标签与实体类的对应关系。有了…

nginx 配置详解_Nginx 配置详解

序言Nginx是lgor Sysoev为俄罗斯访问量第二的http://rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持Fast…

推荐系统——GBDT+LR

[[逻辑回归模型]] 逻辑回归是在[[线性回归]]的基础上添加了一个Sigmoid函数(非线形)映射,从而可以使逻辑回归成为一个优秀的分类算法 逻辑回归假设数据服从[[伯努利分布]],通过[[极大化似然函数]]的方法,运用[[梯度下降…

从燃尽图看项目管理:你的项目哪里出错了?(燃尽图类型全解析)

什么是燃尽图 燃尽图(burn down chart)是在项目完成之前,对需要完成的工作任务的一种可视化表示。理想情况下,该图表是一个向下的曲线,随着项目任务的逐渐完成“烧尽”至零。 燃尽图常常用于敏捷开发中,作为…

springtboot 引用子工程的文件_xmake从入门到精通11:如何组织构建大型工程

xmake是一个基于Lua的轻量级现代化c/c的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。本文主要详细讲解下,如何通过配置子工程模块,来组织构建一个大规模…

bzoj 1024 [SCOI2009]生日快乐——模拟

题目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id1024 可以枚举这边放多少块、那边放多少块。 注意精度。不要每次用x*y/base算有多少块&#xff0c;传参较好。 #include<iostream> #include<cstdio> #include<cstring> #include<algo…

依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?

SpringBoot中的起步依赖(starter)是一组特定功能的依赖项集合&#xff0c;SpringBoot通过starter来进行项目的依赖管理&#xff0c;而不是直接基于单独的依赖项来进行依赖管理。starter其实就是特殊的Maven依赖项或者Gradle依赖项&#xff0c;它把常用的库组合到一起构成了一个…

5g理论速度_5G是什么?5G速度有多快?

原标题&#xff1a;5G是什么&#xff1f;5G速度有多快&#xff1f;5G到底是什么东西&#xff1f;今年5G网络会普及吗&#xff1f;5G网速到底有多快&#xff0c;背后又有哪些黑科技&#xff1f;近日&#xff0c;全球首个5G火车站在上海虹桥火车站启动建设。而根据三大运营商的时…

c++ new一个结构体_「C/C++」构造类型及应用:数组、结构体、共用体、枚举类型...

3.1数组同类型、同性质、按顺序存放的一组数据集合&#xff0c;易于批量处理。3.1.1一维数组定义int 1.数组名为常量&#xff0c;指向首地址&#xff0c;由系统指定。2.数组长度为整型常量,但不能为03.上例取值image[0]-image[255]&#xff0c;取值可以修改。初始化int 输入for…

FFT学习笔记

搬运一下之前在luogu blog写的。 参考http://picks.logdown.com/posts/177631-fast-fourier-transform 废话不写了。首先补零将多项式项数补为2的整数次幂。下标均从0开始。 DFT&#xff08;递归版&#xff09; 将系数表示转为点值表示。设项数为n&#xff0c;即求多项式将所有…

自动产生fsm代码的工具_代码自动生成工具

构建支持多种数据库类型的代码自动生成工具背景&#xff1a;一般的业务代码中写来写去&#xff0c;无外乎是先建好model&#xff0c;然后针对这个model做些CRUD的操作。(主要针对单表的业务操作)针对于数据库dao、mapper等的代码自动生成已经有了mybatisGenerator这种工具&…

gtest测试框架使用详解_测试框架TestNG使用介绍

近期接触到了一个比较全面的基于Java的接口自动化测试框架&#xff0c;作为一名Java小白&#xff0c;所以打算研究一下&#xff0c;顺带学习学习Java&#xff0c;该测试框架的逻辑控制层使用的HttpClient TestNG。在本期中&#xff0c;给大家分享一下TestNG测试框架的基础知识…

同期收治患者住院天数_(完整版)DDD值算法

有关DDD 值的计算问题根据卫生部开展的《抗菌药物临床应用专项整治活动实施方案》要求&#xff0c;抗菌药物使用强度应控制在40DDD 以下。抗菌药物使用强度&#xff0c;即限定日剂量(defined daily doses &#xff0c;DDD )&#xff0c;为药物主要适应症以成人每日常用剂量作为…

LOJ#6282. 数列分块入门 6

一个动态的插入过程&#xff0c;还需要带有查询操作。 我可以把区间先分块&#xff0c;然后每个块块用vector来维护它的插入和查询操作&#xff0c;但是如果我现在这个块里的vector太大了&#xff0c;我可能的操作会变的太大&#xff0c;所以这时候我需要把现在里面的数全部拿出…

fragment在activity中的静态和动态用法_使用Matlab修改压缩Gif动态图片制作微信表情...

脚本之家你与百万开发者在一起作者&#xff1a;theOwlAndPussyCat/焦旭光引言电脑里存了很多有意思的Gif动态图片&#xff0c;闲暇想把这些动图全导入微信表情&#xff0c;可是这些动图很多大小超过了微信表情大小1MB的限制&#xff0c;要制作成表情只能压缩图像文件大小。网上…

mysql命令_MySQL常用操作命令

MySQL常用操作命令PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。欢迎大家阅读&#xff01;更多相关信息请关注相关栏目&#xff01;1、启动MySQL服务器实际上上篇已讲到如何启动MySQL。两种方法&#xff1a;一是用winmysqlad…

The 2018 ACM-ICPC上海大都会赛 J Beautiful Numbers (数位DP)

题意&#xff1a;求小于等于N且能被自己所有位上数之和整除的数的个数。 分析&#xff1a;裸的数位dp。用一个三位数组dp[i][j][k]记录&#xff1a;第i位&#xff0c;之前数位之和为j&#xff0c;对某个mod余数为k的状态下满足条件的个数。这里mod的值就是小于等于N的数中&…

mysql定时增量备份_Mysql日常自动备份和增量备份脚本

序你是否在寻找一个MySQL备份脚本?适合对象本文是在Linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数.每个人的备份策略都可能不同,所以请…

frontcon函数用不了_C++复制构造函数与析构函数

想用机器人赋能未来&#xff0c;少不了扎实的编程的基本功&#xff0c;让我们跟着清华大学的C语言程序设计课程一起过一遍C的语法知识吧&#xff01;当定义基本类型的变量时&#xff0c;经常会用已有的变量去初始化新定义的变量&#xff0c;当定义对象的时候也有类似的需求&…