思维导图:

推荐系统在技术实现上一般划分三个阶段:挖掘、召回、排序。

模型融合:

挖掘的工作就是对用户和物品做非常深入的结构化分析,对各个角度的特征都被呈现出来,并且建好索引,供召回阶段使用,大部分挖掘工作都是离线进行的。

召回:

因为物品太多,每次给一个用户计算推荐结果时,如果对全部物品挨个计算,那将是一场灾难,取而代之的是用一些手段从全量的物品中筛选出一部分比较靠谱的

最后就是排序,针对筛选出的一部分靠谱的做一个统一的论资排辈,最后这个统一的排序就是融合

示意图如下:

在召回阶段,其实就是各种简单的,复杂的推荐算法,比如说基于内容的推荐,会产生一些推荐结果,比如基于物品的协同过滤会产生一些结果,矩阵分解会产生一些结果,等等。

总之,每种算法都会产生一些推荐结果,一般同时还附带给每个结果产生一个推荐结果,是各自算法给出来的。不同算法只负责推举出候选结果,真正最终是否推荐给用户,由另一个统一的模型说了算,这个叫做模型的融合。

典型的模型融合:逻辑回归和梯度提升决策树组合

组合原理:

在推荐系统的模型融合阶段,就要以产品目标为导向。

简单的例子:信息流推荐,如果以提高ctr为目标,则模型融合就要把预估ctr作为本职工作,这个工作一直一来就是逻辑回归完成

逻辑回归:

ctr 预估就是在推荐一个物品之前,预估一下用户点击它的概率有多大,再根据这个预估的点击率对物品排序输出。

逻辑回归经常被选来执行这个任务,它的输出值范围就是0和1之间,刚好满足点击率预估的输出,这是一个基础。因为逻辑回归是广义线性模型,相比于传统线性模型,在线性模型基础上增加了 sigmoid函数。

在对召回阶段不同算法给出的候选物品计算ctr预估时,需要:特征、权重

第一个是特征,就是向量化、向量的方式把一个用户和一个物品的成对组合表示出来。量化方式包括两种:实数和布尔。实数好理解,比如一个用户的年龄,一个用户平均在某个类上每个月的花销等,布尔,就是取值0或1,针对两种类别形式的,比如用户所在的省市,物品的每一个标签。

用户和每一个候选物品都组一下,然后以这种特征化的方式表达出来,就可以计算了,否则类别形式的字段不能直接参与计算。

第二个就是权重,每个特征都有一个权重,权重就是特征的话语权,在决定那些物品最终有机会能走到前台的选秀过程中,用户和物品对这对组合的所有特征都有投票权,只是每个特征的权重不一样,对最终计算ctr影响?️大有小。

有了特征x,还有特征的权重,也是一个维度和特征一样的向量w,通过对 x和w做点击运算,就得到一个传统线性模型的输出,再用sigmoid函数对这个值做一个变换,就得到一个0到1之间的值,也就是预估的ctr

特征工程+线性模型,就是模型融合、ctr预估必备的方法

权重主要是损失函数最小化,就是模型的偏差是否足够小,另一个就是模型的正则化,就是看模型的方差是否足够小,学习模型的权重,经典的方法就是梯度下降一类,但是梯度下降效果收敛很慢。后来google在2013年发表新的学习算法:FTRL,一种结合L!正则和L2正则的在线优化算法

梯度提升决策树GBDT部分请看:https://blog.csdn.net/weixin_41362649/article/details/82803279

模型融合的原理虽然比较简单,但是实际应用中非常的有效。

打尽协同过滤、矩阵分解和线性模型

推荐系统笔记(模型融合)相关推荐

  1. 推荐系统系列教程之十四:经典模型融合方法----线性模型和树模型的组合拳

    编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十三期,今天按约推出第十四期:经典模型融合办法----线性模型和树模型的组合拳.希望朋友们多点"在看", ...

  2. 推荐系统笔记:矩阵分解+基于邻居的模型

    由于其启发式性质,基于邻域的方法通常被认为与其他优化模型具有内在的不同. 尽管如此,结果表明基于邻域的方法也可以嵌入在其他优化模型的上下文中. 这是一个相当方便的框架,因为它为邻域模型与其他优化模型( ...

  3. 推荐系统笔记:基于模型的协同过滤

    1 介绍 基于邻域的协同过滤方法可以看作是机器学习中常用的k-最近邻分类器KNN的泛化. 这些方法是基于实例的方法,因此,除了可选的预处理阶段之外,没有专门为预测预先创建模型. 推荐系统笔记:Intr ...

  4. mf模型 svd++_推荐系统算法(MF、FM、CF、SVD、LFM、SVD++、TItemCF、timeSVD++、模型融合)...

    为什么需要矩阵分解?(matrix factorization model) 协同过滤可以解决我们关注的很多问题,但是仍然有一些问题存在,比如: 物品之间存在相关性,信息量并不随着向量维度增加而线性增 ...

  5. 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting、模型融合

    基本内容与分类见上述思维导图. 文章目录 一.模型融合方法 . 概述 1.Voting 2.Averaging 3.Bagging 4.Boosting 5. Stacking (1)nfolds 次 ...

  6. Datawhale 数据挖掘新手入门笔记 -Task5 模型融合

    文章目录 一.前言 二.模型融合目标 三.内容介绍 四.Stacking相关理论介绍 1.什么是stacking 2.如何进行stacking 3.Stacking的方法讲解 五.代码示例 1.回归\ ...

  7. 推荐系统算法(MF、FM、CF、SVD、LFM、SVD++、TItemCF、timeSVD++、模型融合)

    为什么需要矩阵分解?(matrix factorization model) 协同过滤可以解决我们关注的很多问题,但是仍然有一些问题存在,比如: 物品之间存在相关性,信息量并不随着向量维度增加而线性增 ...

  8. 集成学习-模型融合学习笔记(附Python代码)

    1 集成学习概述 集成学习(Ensemble Learning)是一种能在各种的机器学习任务上提高准确率的强有力技术,其通过组合多个基分类器(base classifier)来完成学习任务.基分类器一 ...

  9. 推荐系统笔记:基于矩阵分解(总结篇)

    推荐系统笔记:基于潜在因子模型的协同过滤(latent factor model)_UQI-LIUWJ的博客-CSDN博客 推荐系统笔记:无任何限制的矩阵分解_UQI-LIUWJ的博客-CSDN博客 ...

最新文章

  1. Redis学习(2)-redis安装
  2. IE下常见兼容性问题记录汇总(04-持续更新)
  3. Windows Phone 7 Developer Tools amp; Training Kit 正式版发布!
  4. arduino安卓手机版_剥离安卓!华为鸿蒙系统手机版正式发布:这两大机型率先升级...
  5. 26. Location assign() 方法
  6. android模拟机型,(安卓)牛X分身 — 支持位置模拟机型修改
  7. px4讲解(一)历史起源
  8. python笔记之json报错
  9. Microsoft Teams 思维导图的4大好处,你知道怎样创建吗?
  10. node-java_node-jvm
  11. LRUCache的C++实现
  12. studio 3T连接不上mongoDB
  13. 2019年暑期GooGle SWE 凉经
  14. python turtle如何写字_python的turtle库可以利用代码写字吗?
  15. 如何快速产生流量,流量精灵使用方法
  16. phpstorm断点调试
  17. 最近360和adsafe软件有冲突
  18. STM32之通用定时器计数器模式
  19. 我是如何改善我的睡眠的?
  20. App Store生存指南

热门文章

  1. 十个有用的linux命令行技巧
  2. 使用MyBatis的Generator自动创建实体类和dao的接口与xml
  3. 5、Python函数
  4. Keepalived的相关应用,使用keepalived实现nginx和lvs的高可用负载均衡器
  5. VMware Fusion DHCP方式下如何指定虚拟机IP地址
  6. 重构遗留代码(1):金牌大师
  7. 详细解析Java中抽象类和接口的区别
  8. RHEL5.4部署中央日志服务器之rsyslog+loganalyzer
  9. 属性项目的定义(property)[ZT]
  10. Acwing104. 货仓选址:贪心(绝对值不等式)