个性化推荐系统(一)---今日头条等的内容划分、分类
这篇文章搞头条号、运营知乎等流量的兄弟们可以看看,可以让你了解到你的文章是怎么被推荐的、通过很好的配合头条、知乎等的技术架构、机制可以增加你文章的曝光。
今日头条以前进入各大app的流量主要被几部分刮分,一个是app内搜索、一个是固定频道、、一个是用户在闲逛。当前各大app、无论是电商、知乎、新闻等流量一部分还是app内部搜索,另外大头就是各大频道、内容、问答板块都被个性化推荐把持。
今日头条是怎么实现个性化推荐的呢?一个是用户画像,一个是文章分类,分类是由多种纬度组成,通过用户在app内搜索、点击视频、文章、浏览、收藏等app内一些列的操作会不断对用户画像进行完善,并且生成用户对文章分类的喜好,通过喜好给你推荐相似的视频、文章,最终让用户刷不完、离不开。
最开始冷启动今日头条会推荐给你些八卦、娱乐新闻、热门新闻、其他类型文章等多个池子,因为最开始是没有你的用户画像的,因为你在app内没有行为,通过微博账号登录抓取微博信息进行分析生成画像这种方式暂时不谈。
个性化推荐系统主体三部分:文章分类、用户画像、用户喜好均是通过用户在app行为,通过数据分析师对数据分析,构建的策略算法,算法工程师构建的模型、以及推荐引擎、特征工程等一系列的算法、工程最终构成一个内容个性化推荐系统。
这篇主要讲下文章分类主要包含哪些,怎样构建文章分类、分类后怎么使用三个问题。
当下内容推荐引擎,文章由标签、兴趣、主题、其中标签规模最大,标签
又分为粗标签数据规模亿级别、精标签数据规模千万级别,兴趣数据规模粗几十万级、精十万级、主题几百级。多种类型的分类综合构成文章数据来源。来供feed流使用。
文章分类构建主要由hadoop、hive、spark、strom等工具实现,标签的构建主要通过对文章进行分词、通过TF-IDF等算法找出文章可以由哪些标签来抽象表达。标签比如:锤子、坚果、老罗,乔布斯、苹果、iPhoneX。标签下文章几百万、几十万、几千不等。兴趣的构建与标签类似但力度更大、更粗些,兴趣比如:星座、二次元、抖音等等。
主题分类由LDA模型通过spark框架计算实现,主题比如:体育新闻、it新闻、娱乐新闻等构成。
个性化推荐本质就做一件事:排序。数据计算主要通过hive、spark实现离线的数据排序,排序特征包含曝光量、点击量、点击率、作者权重、文章质量分、等几十个特征综合进行排序,排序结果作为备选集合。光有离线计算是不够的、当下推荐系统更加强调实时性,strom准实时框架会根据实时线上上报特征对文章的排序进行实时调整、比如某大V作者的文章权重很高,排名好获得很多曝光机会,但是曝光机会并转化成点击量、这时strom计算会将文章曝光降低,已给其他文章更多的曝光机会。
搜索引擎的曝光更加集中、最大的曝光基本集中在首页前三篇,而推荐引擎会拉取多个分类类别、标签下选择用户多个喜好标签下文章、多个兴趣下用户喜好文章、多个主题下用户喜好文章。调取特征、再通过模型实时预估每篇文章点击量,通过点击量预估模型预估文章被当前用户点的几率。
如果文章在热门的标签下,偏好标签的用户会多,文章排到热门标签前几,那必定会带来特别大的曝光量、但热门标签竞争激烈。冷门标签偏好人少,但是冷门标签下文章会少、竞争少,维护好冷门标签,在固定人群下也会取得持续不错的曝光。
后边文章会详细写下怎样构建用户画像、构建热门分类、通用分类、用户偏好分类、突发新闻分类召回集、搭建特征工程、构建点击量预估模型过程,以及推荐引擎架构、设计、实现。
微信搜索:debugme123
- hql中setDate和setTimeStamp的区别
- Spring源码解析——如何阅读源码
- java获取当前时间和前一天日期
- 国内首个二代基因测序 FPGA 加速方案-背后的技术
- Java基础04 封装与接口
- Maven那点事儿(Eclipse版)
- 【Spring开发】—— Spring注入静态变量
- java判断list为空
- Java基础01 从HelloWorld到面向对象
- Java基础02 方法与数据成员
- 【Spring实战】—— 13 AspectJ注解切面
- EasyUI日期选择框
- Java基础03 构造器与方法重载
- web.xml is missing and <failOnMissingWebXml> is set to true
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法