从0到1,基于内容的推荐算法的产品设计
yuyutoo 2024-10-20 13:10 7 浏览 0 评论
本文从定义和框架出发,结合实际案例,深入浅出地阐述了基于内容的推荐算法及其产品设计。
一、前言&定义
可能很多和笔者一样非数据或算法科班出身的产品同学在涉及到需要进行内容推荐的产品时无从下手,尽管在网络上可搜索到各种算法的基本原理和公式,但或过于专业或直接呈现最终逻辑,但具体怎么做还是一头雾水,笔者抛开理论和复杂的公式,直接从产品出发设计一套最小可行性从0到1的推荐算法能力。
什么是基于内容的推荐算法
基于内容的推荐:核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。
简单地理解就是:根据用户过去喜欢的内容,为用户推荐和他过去喜欢的内容相似的内容。
二、算法整体架构说明
1. 明确算法目的
我们在最开始做推荐算法时,要清楚初始阶段目的:即在保证内容质量的前提下根据用户行为推荐尽可能符合用户期望的丰富内容。
这句话虽然很短,但包含了三个很重要的关键词:内容的质量、内容丰富(多元)度和符合预期。
2. 推荐算法整体逻辑
基于推算的场景,我们很容易发现推荐逻辑:用户在线进行操作行为时,系统向后台发起用户数据召回请求,然后根据排序模型形成最终用户看见的内容,最后通过用户的请求和记录完善用户行为,以进行后续的内容匹配。常见的推算下图:
图片虽然看起有点复杂,抽丝剥茧就三个核心:一套内容管理后台+多个权重算法+展示逻辑。
3. 推荐算法产品框架
基于算法逻辑和最小可行性目的,我们可以整理出简单的产品框架,如下图:
很明显算法推荐公式可以不用立马就建立一套复杂的算法模型,只要有基础的用户管理、内容管理能力,结合内容质量权重和用户喜好权重,考虑到去中心化和时效应影响,就可完成在保证内容质量的前提下根据用户行为推荐尽可能符合用户期望的丰富内容。
三、具体算法权重设计
1. 质量管理评分公式
质量评分总得分Score由三大模块得分加权计算得出,其公式如下所示:
(系数可根据业务情况自行调整,起始分为100)
其中A、B、C为三大模块各自得分值。Score得分为三大模块得分乘以各自对应系数。
各模块得分由其多项评分指标及对应系数加权计算得到,此处以A模块为例:
其中为A模块下对应的各项指标得分, 为各项指标得分所对应的权重系数。
A-内容流量模块评分
内容流量为是内容对流量的吸引能力体现,初始化的产品建议的核心热度加权:停留时间(退出率)>评论量>点赞量>收藏量>PV/UV>转发量。下表为案例:
B-内容质量模块评分
主要根据后台内容的状态进行评断,在机审能力未完全搭建以前,本模块受到人工影响较大。
附:评分公式
目前对于内容推荐型的评分算法,推荐贝叶斯平均评分法作。其公式如下:
其中,n为当前内容的评分次数,M为总内容平均得分,S为单个内容总得分,C为动态系数。
单个内容评分得分 = (总内容的平均得分 * C系数) + 单个产品的评分总和) / (当前内容的评分次数+ C系数)
C系数为每个内容的被评分的平均次数,即C=所有内容被评论的总次数/所有内容数量。例如:总共有1000个文章 一共被评论了50000次,那C就等于50000/1000=50。
小例:
(贝叶斯平均法评估示例)
结论:以贝叶斯平均为依据的排序更能反应真实的情况,打分次数多且评分较高的产品会更加靠前,打分次数多评分较低的产品则会更加靠后,与单纯依据每个产品的平均分排序相比,这种结果更有意义。
C-用户质量模块评分
用户质量根据后台人工标识用户属性加上其发帖质量2个维度构成。
2. 用户喜好评分公式
用户行为记录是获取用户相关推荐的主要依据,初期是根据用户关注、浏览喜好以及用户搜索关键词对用户喜好进行统计,基本的逻辑如下:
喜好评分=浏览喜好分类*0.6+关注人内容*0.4 +搜素内容分类*0.0
(系数可根据业务情况自行调整,起始分为100)
举例说明:
(1)通过用户的浏览记录,获得用户的喜好标签
那么对于同一分类下的内容按照公式增加喜好值。
(2)获取用户的关注用户,获得喜好标签
那么对于关注用户下的内容按照公式增加喜好值。
(3)如果内容1属于分类A,并且是用户D创建的,这个内容对于用户来说就是两个权重值相加 =查看内容分类*0.6+关注人内容*0.4
四、前端展示权重设计
通过质量评分和用户喜好评分,我们能得到以内容为主。针对不同用户的内容质量和喜好评分值,那么就可以得到一个简单的推荐逻辑(推荐列表):按照用户喜好评分推荐质量评分较高的内容,若得分相同则按内容创建时间倒序排列进行推荐。
但在实际推荐中除了保证用户喜好外,需要尝试去中心化的内容展示模式,所以最终展示的推荐内容,应该来自三个模块:
A、用户喜好列表:通过用户喜好评分,为用户推荐内容评分质量较高的内容,这是主要推荐内容。
推荐逻辑:先对内容按照用户喜好值进行从高到低的排序,再喜好值A以上的内容中依次健康值高于阀值B、阀值C、阀值D的内容随机推荐,低于阀值D不进行推荐。
B、高质量非喜好列表:用户喜好值低于某个阀值但内容流量评分较高的内容。
C、初始流量推荐列表:通过用户喜好评分,为用户推荐内容质量审核过但流量不高的内容。
老用户算法为:Score=A*0.7+B*0.2 +C*0.1(系数可根据业务情况自行调整)
其中0.7、0.2、0.1位A、B、C为三大模块初始系数,它受到时间效应变化。
新用户冷启动的算法为:ScoreL= B*0.9 +C*0.1
其中B模块直接调用流量池健康评分。
注意:喜好评分和健康值相同时,随机选取加载量,在同一轮加载过程中同一信息需要剔重。
1. 时间效应计算方式
为了进一步去中心化,以及推荐准确性,根据热度冷却公式:
本期系数 = 上期系数 x exp(-(冷却系数) x 间隔的小时数)。T为初始热度,此处默认为0.7,为上一期温度,为冷却系数,为间隔小时数。
五、关于A/B测试
推算推荐更加需要进行A/B test,因为我们在初始化的过程中,具体的权重设置是否合理是无法得知的,但是能保证的时没有垃圾推荐的流出,所以A/B测试结果对优化权重格外重要,将用户分流至对应方案内,在保证每组用户特征相同的前提下,根据用户的真实数据反馈,帮助产品决策。当然随着测试样本变多对技术架构考验越大。
六、尾声
正如开头所说本文的算法是剥离于内容推荐算法理论公式,根据实际产品出发进行的设计,其核心是保证内容质量的前提下根据用户行为推荐尽可能符合用户期望的丰富内容,具有相当的局限性,它适用于没有完善的算法团队和进行最小可行试验的产品。希望文章对和我一样没有算法基础的同学带来帮助和启发,野路子的产品悲哀。欢迎大家交流。
本文由 @jingtianz 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
相关推荐
- Docker部署 chatgpt-web-midjourney-proxy:开启一站式AI与绘图
-
ChatGPT和Midjourney的结合无疑是创新性的突破。ChatGPT作为强大的语言模型,能够为用户提供智能的对话和文本生成服务。而Midjourney则以其出色的绘画能力,能够根据...
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
-
具体案例:局域网内有两台主机,一台Linux、一台Windows,现在需要配置一台Cacti监控服务器对这两台主机进行监控...
- 那些少为人知却非常有意思好用的 Chrome 扩展
-
ChromeWebStoreSessionManager要睡觉了,还有网页没看完怎么办?等明天点开歷史记录重新加载?No!有这个保存当前打开的链接,下回直接打开一串网址,好顶赞有木有!!!chr...
- 分享一款轻量级 HTTP(S) 代理 TinyProxy
-
概述众所周知,我们常用的Web服务器Nginx/Apache都可以很方便的用来做为正向或反向代理服务器使用。但是它们都并不支持HTTPS的正向代理。Nginx做为正向代理不支持HT...
- 深入理解 WebSecurityConfigurerAdapter「源码篇」
-
我们继续来撸SpringSecurity源码,今天来撸一个非常重要的WebSecurityConfigurerAdapter。我们的自定义都是继承自WebSecurityConfigurer...
- RPC、Web Service等几种远程监控通信方式对比
-
几种远程监控通信方式的介绍一.RPCRPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.meth...
- 老酒好喝,5G时代数据中心柴油发电机组以GPRS方式接入动环监控
-
背景:随着手机的普及,电信运营商基站越建越多,网络覆盖范围也越来越广,基本上随时随地都能通过运营商的网络上网冲浪,这给我们传统的通过有线方式实现的动环监控也提带来了新的启发:对于不具备有线传输条件的的...
- 为了春节红包大战,微信做了一次成功的预热!
-
经过上午的预告,微信在今天下午17:00正式推出了微信红包新玩法——红包照片。微信用户在朋友圈点击照片发送按钮,会看到“红包照片”选项,用户在选择发布照片之后,这张照片将被模糊处理后,再发送到朋友...
- Proxy-Lite实战:3步部署+2个案例,轻松掌握轻量级网页自动化
-
大家好,我是何三,80后老猿,独立开发者一、Proxy-Lite模型概述...
- 会Python?那么你一定要试一试mitmproxy
-
mitmproxy是一款工具,也可以说是python的一个包,使用这个工具可以在命令行上进行抓包(现在也可以在web页面上查看上抓的数据包了),还可以对所抓到的包进行脚本处理,非常有用。和...
- 十大Web安全扫描工具,你知道哪些?
-
初入门时,喜欢将目标站点直接丢扫描器,慢慢等扫描结果,极度依赖Web扫描器;而有一些漏洞高手,善于运用运用各种工具但并不依赖工具,经常可以找到扫描工具发现不了的漏洞。一款好用的Web扫描器对于白帽子来...
- 鸿蒙5网页开发神器 ArkWeb:让 Web 和原生手拉手跳舞
-
你有没有想过,在鸿蒙应用里既能用原生代码写高性能界面,又能直接塞进一个网页?这听起来有点像把汉堡和披萨拼在一起,但ArkWeb(方舟Web)真的做到了!今天咱们就聊聊这个神奇的工具,看看它如何让...
- MapReduce过程详解及其性能优化(详细)
-
从JVM的角度看Map和ReduceMap阶段包括:第一读数据:从HDFS读取数据1、问题:读取数据产生多少个Mapper??Mapper数据过大的话,会产生大量的小文件,由于Mapper是基于虚拟...
- 大数据平台建设需要掌握的14个知识
-
Q1、大数据分析中的实时推荐是如何实现的?@rein07某证券系统架构师:实时推荐需要使用实时处理框架结合推荐算法,从而做到对数据的实时处理和推荐。实时处理框架有Storm、Flink、Spark...
- HDFS可视化管理系统设计与实现(hdfs的可靠性设计,主要依靠哪些机制来实现)
-
摘要:Hadoop工具核心模块包括分布式文件系统(HadoopDistributedFileSystem,HDFS)和分布式编程模型MapReduce,其中HDFS是Hadoop数据存储处理的...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
推荐7个模板代码和其他游戏源码下载的网址
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
-
- Docker部署 chatgpt-web-midjourney-proxy:开启一站式AI与绘图
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
- 那些少为人知却非常有意思好用的 Chrome 扩展
- 分享一款轻量级 HTTP(S) 代理 TinyProxy
- 深入理解 WebSecurityConfigurerAdapter「源码篇」
- RPC、Web Service等几种远程监控通信方式对比
- 老酒好喝,5G时代数据中心柴油发电机组以GPRS方式接入动环监控
- 为了春节红包大战,微信做了一次成功的预热!
- Proxy-Lite实战:3步部署+2个案例,轻松掌握轻量级网页自动化
- 会Python?那么你一定要试一试mitmproxy
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)