从零搭建推荐体系:概述及标签体系搭建(上)

大数据
本文阐述整个推荐体系从0搭建的全流程,也是最近以来一直深入研究的成果展现。

[[180137]]

本文阐述整个推荐体系从0搭建的全流程,也是最近以来一直深入研究的成果展现。因原文太长,故此切分成3部分发送,每天发送1篇。全文结构为:上篇:第零章概述,第一章标签体系搭建;中篇:第三章用户体系,第四章项目体系,下篇:第五章推荐体系,第六章评估体系,第七章全文总结,第八章参考资料。

0. 概述

随着信息技术的迅速发展和信息内容的日益增长,“信息过载”问题愈来愈严重,愈发带来很大的信息负担。推荐系统可以有效缓解此难题,从而得到推崇并加以广泛应用。

简单来说:推荐系统是通过挖掘用户与项目之间的二元关系,帮助用户从大量数据中发现其可能感兴趣的项目如网页、服务、商品、人等,并生成个性化推荐以满足个性化需求。目前市场上对于电子商务的推荐系统有亚马逊、阿里巴巴、豆瓣网、当当网等,信息检索的有谷歌、雅虎、百度等,以及在其它周边领域广泛运用如移动应用、电子旅游、互联网广告等。本文只阐述网页内容,特制新闻方面的项目体系搭建。

研究者认为根据施拉姆信息选择公式,人们对媒体的注意或选择的可能性(然率)与它能够提供的报偿(价值)程度成正比,与人们获得它的代价(费力)程度成反比。

也就是说:人们愿意用最小的代价获取价值最大的新闻信息。由此,媒体要从认知接收方面,减轻受众的“费力”程度,提升信息或传媒的价值,树立品牌意识,形成规模效应;拥有与众不同的品味和特色,将自己在受众眼中的“可读”形象转变成“必读”形象,从而使用户对媒介产品形成强烈的信赖感和依赖感,在受众心中形成稳定的独特风格。

下图是一般情况下的推荐系统基本框架(图片取自网络):

从最初的数据收集,到最末端的展示阶段,中间还经过数据处理以及生成环节,处理大多数所指提取特征初处理,生成一般是指利用特征来选取相应算法进行匹配计算。数据的整个生命周期如下:

也就是从数据获取,一直到最后的加工输出,经历的整个环节,最终给我们提供相应的有效信息,采取相应的有效手段,才是数据价值的最终体现。

在正式开始前,对于数据收集的要求也是很高,如果数据不准确或有偏差,很可能之后做的都是徒劳无功,下表为目前常见的数据收集时常见的问题:

对于新闻内容的推荐系统,让人们最顺畅获取到人们想看到的内容,从而形成核心竞争力。推荐系统的常规推荐系统,一共分为两条线,第一条线是用户,第二条线是项目,计算两者间的相关近似值,从而完成推荐。

计算近似值一定有所媒介,这个媒介就是标签(Tag)系统,所以在建设整个体系之前,最优先需要建设的就是标签系统,其次是用户体系,也就是用户模型,我们在感知用户唯一的途径就是通过用户操作,换言之既用户行为,所以相对用户行为微妙的变化,要求我们的用户体系是十分敏感的,而最后是项目体系,这里特指新闻内容。

下面将从产品层面尽量描述如何搭建推荐体系相关流程及细节,整体搭建思路流程如下:

整体相对比较复杂,下面将逐一阐述其中细节。

1. 标签体系

1.1 搭建流程

要做标签体系,我们要先确定的就是系统结构,常规来看一般都是讲标签随内容或用户建设(但是我觉得那样是不完整的,在之后获取不到更加有效有帮助的信息,这也就是为什么我认为一定要将标签体系一定要单独拎出来的原因)。

在确定系统结构之后,我们要进行相关的算法选择,并且大致选定学习的范围和地点,以供机器学习,至此整个标签体系的搭建流程就此完毕。随着不断的内容填充进来,要有相应的标签不断补充进来。这是一个长期的过程,并且也需要及时依据用户反馈修正算法,实时调整,并非一日之功。

1.2 二维化结构

常规网络的标签是随用户和内容添加的,但是会有局限性,也就是标签体系较难或无法透彻追查其它相关联内容。实际上标签体系的核心价值,体现在相应建立起信息和人、人与人之间的关联。所以我在思考:如何能够进行最深入的追查最深处的关联?有一个常规方案就是单独建立标签体系,将标签平铺于系统中,也就是二维化。

通过机器学习,建立标签的基本联系网络,之后贴合于用户与内容中即可。无立体结构的上下层级展示,好处是可以避免了一维化的后果。换句话说如果有层级,那么不可避免的就会变成一级、二级。

简单来说:与某标签周遭相关联的一切标签均展示;那周遭的标签还会又有标签,再展示;也就变成无穷尽的立体结构化的标签网络,也就是价值基础。最终价值的输出还要结合其它的相关行为、操作、用户物理属性、内容载体以及效果评定等因素综合考量。

1.3 机器学习

常规机器训练流程是:先确定方法→训练集→特征选取→训练→分类器;分类:新样本→特征选取→分类→判决。

所以最开始我们就要确定机器学习的方法。方法有许多种,需要具体根据情况来具体确定。下面仅以产品角度罗列常见经典的机器学习方法、特点、利弊等。以供数据工程师进行选择、对比,辅助做出最优选择,以供参考。

方法当中,首先分为两个大类别:监督学习和非监督学习。监督学习又称为分类或者归纳学习。几乎适用于所有领域,包括内容处理。常见算法有决策树、贝叶斯模型、KNN、SVM等。

与这一方式相对的是非监督学习,在这种方式中,所有的类属性都是未知的,从零开始摸索,算法需要根据数据集的特征自动产生类属性。其中算法中用于进行学习的数据集叫做训练数据集:当使用学习算法用训练数据集学习得到一个模型以后,我们使用测试数据集来评测这个模型的精准度。

常见的有聚类、特征矩阵。下表为常规推荐算法的分类,一共是三类:分类算法、关联规则和聚类,依据不同场景选择不同算法进行调整即可。表格后面列出最常用算法的利弊以及用人话描述的算法原理,以供产品同事参考。

朴素贝叶斯:

对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率;哪个最大,就认为此待分类项属于哪个类别。非常好理解,单纯的概率问题。

优点:算法十分稳定,并且对数据参数无要求;运用较为简单。

缺点:在属性个数比较多或者属性之间相关性较大时效率不理想,并且重前期数据格式,需要知道先验概率,存在一定错误率。但是结合聚类算法,可以一定程度解决属性个数问题。

使用场景:常见于垃圾邮件分类场景。

决策树:

哈利波特中的分院帽应用的是个非常典型的决策树模型:帽子往学生头上一扣,读取学生的显著特征,然后分到某个类别里。所以你看,哈利波特一开始表现出来的特征都是格兰芬多的特征,分院帽读取数据时候发现这个人有两类显著特征,于是犹豫不决,最后还是波特自己提出了要求,这就证明应用模型时的人工干预必不可少。

优点:决策树较为通俗易懂,并且对数据格式不敏感,较为聪明;易于通过静态测试测量模型可信度,善于短时间处理大量数据源,对属性数量兼容性好,有很好的扩展性。

缺点:对样本数量不一致的数据,结果有偏向,处理缺失数据时候会有困难,并且有过度拟合现象,容易忽略数据集中属性之间的相关性。

使用场景:可结合随机森林算法,减少相应过度拟合现象。常见于用户行为分析场景。

KNN:

说白了就是我们要寻找邻居,但是为什么要寻找邻居?如何选取邻居,选取多少邻居?怎么样去寻找我们想要的邻居,以及如何利用邻居来解决分类问题这是KNN算法需要解决的几大问题。

为什么我们要寻找邻居?古话说的好:人以类聚,物以群分。要想知道一个人怎么样,去看看他的朋友就知道了。我们如果要判断一个样本点的类别,去看看和它相似的样本点的类别就行了。

优点:该算法简单有效,重新训练代价较低,对于类域有较差或重叠较多的样本较为适合。同样适用于样本量较大的情况。

缺点:样本量较小时反而有误差。而且该算法是懒散学习方法,不主动,类别评分不规格且输出可解释性不高。当样本量不平衡时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数,并且计算量较大。可以采用权值的方法,和该样本距离小的邻居权值大,来改进问题,对于计算量较大,可以事先对已知样本点进行剪辑,去除对分类作用不大的样本来优化。

使用场景:常见于预测价格场景。

SVM:

说到这个算法之前,先得配一张图:

这图啥意思呢?不用管。但是这两种分法哪种更好呢?从直观上来说,显然右侧好。也就是分割的间隙越大越好,把两个类别的点分得越开越好。就像我们平时判断一个人是男还是女,就是很难出现分错的情况,这就是男、女两个类别之间的间隙非常的大导致的,让我们可以更准确的进行分类。从实践的角度来说,这样的效果非常好,错误率低。

优点:该算法适用于样本量较小的情况,可提高泛化性能,可解决高维度问题。并且对线性和非线性问题均可解决,可避免神经网络结构选择和局部极小点问题。

缺点:对缺失数据较敏感,对非线性问题没有通用解决方案,需要选择核函数来处理,算法使用并且极其复杂。

使用场景:常见于社交网站用户分类场景。

Ad boosting:

这个算法说实话我也解释不清,没真正运用过,凭自己查资料的理解试着说一下。这个算法核心的思想是整合多个弱分类器,成为一个强大的分类器。这时候,集合分类器出现了。用人话说就是三个臭皮匠赛过诸葛亮,好理解了吧?识别一组条件特征概念判断的正确率比随机猜测略好,但是还不够,这就是弱分类器;多个弱分类器的效果叠加起来,就变成一个强分类器,识别率就会很高了。

优点:该算法精度较高,可用任意方法构建子分类器;使用简单分类器时结果容易理解,且弱分类器构造极其简单,而且不用做特征筛选,不用担心过度拟合情况。

缺点:对离群值比较敏感。

使用场景:常见于人脸检测、目标识别场景。

K-means:

给你一万个人,分成四群,需要能够解释每一群人的突出特征,如果有两群人的特征很相似,那就要重新分群了;或者有一群人的特征不明显,那就要增加分群了。好处在于样本量大的时候,可以快速分群,但需要在分群后注意每个群体的可解释性。

优点:这个算法属于经典算法,简单快速,对处理大数据集可伸缩,高效。并且在簇密集度高、球状或团状时,且有明显于其他簇区别时,聚类效果好。

缺点:但是只有簇平均值被定义情况下才能使用,且对分类属性数据不适用,并且要求用户必须事先给出要生成的簇的数目。对初始值敏感,不适合发现非凸面形状的簇,或者大小差别很大的簇。对噪声和孤立数据敏感,少量该类数据能直接影响平均值。

使用场景:常见于CRM筛选目标客户场景。

神经网络:

这个算法不想解释啥,就想放张图,觉得不放可惜了。

以上摘要从产品角度来说只要大概心里有数即可,一般情况下从产品数据、应用场景等决定。

一般来看,冷启动期间应选择非监督学习,如聚类;等数据丰富之后,转换为监督学习,择优选择算法方可;但仍需具体问题具体分析。更多的还是配合技术、算法人员来选择和实现,详细算法和原理、公式等可以到后面附录1进行查看,给予参考。

1.4 学习地点

这里我建议从百科类产品进行机器学习,国内最大的百科就是百度百科了,在国际上自然还有维基百科。

查了一些相关方法,发现从百度百科利用机器学习标签,已经有相应的案例并且成本相对不是很大,具体的方法也放在后文中的附录2中。

文中探究的是微博标签相关的项目,与本文无关,但整体思路可借鉴。大致流程为先抓取页面下相关标签内容,要注意特殊情况,会有歧义页面;将标签抓取存储之后通过算法计算之间的关联性、权重分数,而后输出验证。整体的过程非常简单快捷,能在前期非常快速的补充相关数据,但是要注意数据量的问题,很可能导致无穷,所以收集哪些主要领域,收集多少,是需要我们最开始定义好的,及时踩刹车。

1.5 输出展示

这里的展示更多指的还是相应的后台页面,要满足几个条件:其中最基本的一定要满足可视化的要求,点击标签以后相应的关联标签可形成关联展示;可以选择展示两级或者三级,清晰直观的看到关联情况。更进一步的是点击后,每个标签里面的详细情况也会展示出来。比如说标签的历史类型情况、载体情况、分别的打开情况、受众用户群体,所以这也是需要依托于用户体系的相关标签结合之后的产出物。

结合基本数据维度比如昨日新增多少标签、文章类型走向是什么样的受众是什么样的走向,都是属于基础数据范畴,达到实时监控,定位报警的作用。

1.6 小结总结

本节总体来说阐述了搭建标签体系的整体流程和相关经典算法的展示与利弊分析,并且提供了标签学习机制的思路。下面,将进行用户模型的体系搭建,详见明日发布的中篇。

责任编辑:武晓燕 来源: 36大数据
相关推荐

2016-12-29 10:32:06

2020-11-06 08:43:21

AIOps运维DevOps

2023-03-06 11:35:55

经营分析体系

2018-12-10 08:10:39

2017-01-23 13:40:43

2017-07-27 08:16:36

2023-08-30 11:41:17

活动效果评估体系注册

2023-02-07 13:27:00

运营策略分析

2021-10-18 11:27:07

运营分析体系

2018-06-22 09:49:02

自动化运维体系

2022-09-20 09:42:54

数据指标

2023-04-28 07:34:39

数据指标数据治理

2023-05-15 12:56:32

运营数据分析

2022-06-20 09:08:00

数据体系搭建

2022-07-29 11:30:33

数据监控体系

2017-01-05 21:05:40

2009-09-11 10:38:03

LINQ体系结构

2016-12-30 17:04:57

2024-04-24 08:15:40

数据模型大模型AI

2014-03-14 15:17:44

万国数据灾备白皮书
点赞
收藏

51CTO技术栈公众号