1 初期阶段

​ 个性化推荐不是产品首次发布就能自带的。无论是基于用户行为的个性化,还是基于内容相似度的个性化,都建立在大量的用户数和内容的基础上。

​ 产品发布之初,一般两遍的数据都有残缺,因此个性化推荐并不能完整开展。

​ 故,产品发展初期 推荐内容一般采用更加聚合的“热度算法”,把热点的内容有限推荐给用户;虽无法做到基于兴趣和习惯为每一个用户做到准确化推荐,但能覆盖到大部分用户需求,而且启动成本比个性化推荐算法低很多。

2 热度算法

2.1 热度算法基本原理

新闻热度分 = 初始热度分 + 用户交互产生的热度分 – 随时间衰减的热度分

Score = S0 + S(Users) – S(Time)

1、新闻入库后,被系统赋予一个初始热度值,该新闻进入推荐列表进行排序

2、随着新闻不断被用户点击阅读,收藏,分享...... 用户行为被视作帮助提升新闻热度,系统需要为每种新闻重新赋予热度值

3、同时,新闻自身具有较强的实效性,随着时间的变化而变的陈旧,进而热度衰减

2.2 初始热度需要不一致

由于不同的新闻本身属性所在,受欢迎程度是不一样的。

如:娱乐类比文化类受欢迎程度高;

​ 某些突发事件的受关注度也会急剧变高;

​ 体育活动期间,体育类的关注度也会继续变高;

解决方案:把初始热度设置为变量。

(1)按照新闻类别给予新闻不同的初始热度,让用户关注高的类别获得更高的初始热度分,从而获得更多的曝光

img

(2)对于重大事件的报道,可通过热词匹配来使其入库即具备更高的热度

​ 对大型新闻站点的头条,Twitter热点,竞品头条监控和爬取,并将关键词维护到热词库并保持更新;

​ 每条新闻入库时,用新闻的关键词去匹配热词库,匹配度越高,则有越高的初始化热度;

2.3 用户行为分规则不是固定不变的

有了初始热度分之后,需要考虑热度分的变化。

1、先明确用户哪些行为会影响到热度分值,并对这些行为赋予一定的得分规则

2、例如:点击(click)、收藏(favor)、分享(share)、评论(comment),对行为赋予分数,即可得到实时用户行为分:

S(Users) = 1click + 5favor + 10comment + 20share

​ 示例分数:但分数值不是一成不变的,做内容运营时需要对行为分不断调整

​ click , 1分,

​ favor,5分,

​ share,10分,

​ comment ,20分,

​ 当用户规模小的时候,各项事件量小,需要提高每个事件的行为分来提升用户行为的影响力;

​ 当用户规模变大时,行为分也应该相应的慢慢降低;

2.4 热度随时间的衰减不是线性的

1、由于内容的时效性,已发布的新闻热度值必须随时间流逝二衰减,并且衰减趋势越来越快,直至趋于0热度。

​ 如果一条新闻(内容)需要长期处于靠前的位置,随时间推移必须有越来越多的用户来维持。

img

2、要求推荐给用户的新闻(内容)必须是24h以内,故 衰减算法必须保证在24h后 内容热度一定会衰减到很低。

​ 线性衰减:当新闻突然有大量用户点击阅读,获得极高热度分,就会持续排名靠前,会使用户感觉内容更新较慢

​ 指数衰减:参考牛顿冷却定律,时间衰减因子应该是一个类似于指数函数:

T(Time) = e ^ (k*(T1 – T0))

​ 其中T0是新闻发布时间,T1是当前时间

而热度的发展最终是一个无限趋近于0热度的结果,最终算法调整为:

Score = ( S0(Type) + S(Users) ) / T(Time)

2.5 其它影响因素

“赞” “踩” “不推荐此类”等选项的存在

建议:把所有的调整指标均做成可配项,如:初始热度分,行为事件分,衰减因子等

3 个性化推荐

个性化推荐 一般常用的两种解决方案:一是基于内容的相关推荐,二是基于用户的协同过滤(对用户规模有较高要求)

3.1 基于内容的推荐算法

“新闻(内容)特征向量”来标示新闻的属性,以及用来对比内容之间的相似度;

​ 新闻(内容)特征向量是由内容所包含的关键词所决定的;

​ 把新闻(内容)看作所有关键词(标签)的合集;

​ 两个新闻(内容)的关键词越类似,则两个内容是相关的可能性更高;

3.1.1 分词

得到新闻(内容)特征向量的第一步, 就是要对新闻(内容)进行关键词级别的拆分。

  • 分词
    • 正常词库:把内容拆解为词语的标准

停用词 主要是没有实际含义的,如“the” "that" "are"之类的助词,如"behind" "under" 之类的介词, 以及很多常用的高频但没有偏向性的动词"think" "give";

  • 停用词库:分词过程中需要首先去掉的内容

分词之前剔除停用词,对剩下的标准词库进行拆词,拆词方法包含正向匹配拆分,逆向匹配拆分,最少切分等常用算法

由于网络热词的频出,标准词库和停用词库也需要随之不断更新维护。

3.1.2 关键词指标

  • 关键词重合度
  • 新闻(内容)内频率,TF(Term Frequency)
    • 衡量每个关键词在新闻(内容)里面是否高频
  • 关键词在所有文档内出现的频率相反值,IDF(Inverse Document Frequency)
    • 如果一个关键词在某条新闻内出现的频率最大,在所有文档内出现频率小,则该关键词对这条新闻的特征标识作用越大

TF-IDF模型

每个关键词对新闻的作用衡量: TFIDF = TF * IDF

3.1.3 相关性算法

每一份新闻(内容)的特征,即可用关键词的集合来标识:

img

其中word0,1,2……n是新闻的所有关键词,tfidf0,1,2……n则是每个关键词的tfidf值

相关性计算:

image-20190117100504112

3.1.4 用户特征

通过用户行为来获得,用户通过阅读、点赞、评论、分享来表达对新闻(内容)的喜爱;

对用户的各种行为赋予一定的“喜爱分”,例如阅读1分,点赞2分,评论5分等;

新闻(内容)特征 与用户行为分结合,即可得到用户的特征分。

image-20190117101005933

随着用户阅读的新闻(内容)越来越多,该用户的标签也越来越多,并且越发精准;

当我们拿到新闻(内容)的特征后,就能与用户的关键词列表做匹配,得出用户阅读特征的匹配度,做出个性推荐。

3.1.5 其他运用

除了个性推荐,基于内容的相关性,可精准的给出一篇相关推荐列表;

3.1.6 优缺点

  • 优点
    • 对用户数量没有要求,与日活无关,个性化推荐的早期一般可采用此方式;

    • 每个用户特征是由自己行为决定的,独立存在,不会相互干扰, 恶意刷阅读内容不会营销到推荐算法;

  • 缺点
    • 确定性太强,推荐内容均由用户历史访问决定,无法挖掘用户潜在兴趣
    • 基于内容的推荐一般与其他推荐算法同时存在

3.2 基于用户的协同推荐

当具备内容协同过滤推荐后,推给用户的内容均为基于他们的阅读习惯来推荐,没能给用户“不期而遇”的感觉。

则,需要开始实现基于用户的协同过滤。

  • 基于用户协同过滤推荐算法:

​ 依据用户A的阅读喜好,为A找到与他兴趣最接近的群体; 即“人以群分”,把这个群体内其他人喜欢的,但A未阅读的推荐给A

3.2.1 用户群体划分

3.2.1.1 外部数据借用

​ 使用第三方账户授权进入的,往往会包括性别、年龄、工作、甚至社交关系等

3.2.1.2 产品内主动询问

​ 产品首次启动时的弹窗询问,“职业” “性别” 对内容的冷启动提供帮助, 但性价比偏低

3.2.1.3 对比用户特征

​ 从内容的特征+用户的阅读数据 来得到用户特征,通过用户特征的相似性来划分群体

3.2.2 内容推荐实施

A B C D E 5个用户

​ 阅读 1分,

​ 赞 2分,

​ 收藏 3分,

​ 评论 4分,

​ 分享 5分

image-20190117133645188

各个用户的特征向量:

image-20190117133715263

多维向量的距离需要通过欧几里得距离公式来计算,数值越小,向量距离约接近。

image-20190117133658566

3.2.3 内容选取

假设用户X在系统归属于群体A,这个群体有n个用户,分别为A0,A1,A2……An,这些用户的集合用S(X,n)表示。

  1. 首先,我们需要把集合中所有用户交互过(阅读,评论等)的新闻提取出来;
  2. 需要剔除掉用户X已经看过的新闻,这些就不用再推荐了,剩下的新闻集合有m条,用N(X,m)来表示;
  3. 对余下的新闻进行评分和相似度加权的计算,计算包括两部分,一是用户X与S(X,n) 每一个用户的相似性,二是每个用户对新闻集N(X,m)中每条新闻的喜好,这样就能得到每条新闻相对于用户X的最终得分;
  4. 将N(X,m)中的新闻列表按照得分高低的顺序推荐给用户。

3.2.4 优缺点

  • 优点
    • 对分词算法的精确度无较强的要求
    • 基于用户的行为数据去不断学习和完善
    • 能发现用户潜在阅读兴趣,能“制造惊喜”
  • 缺点
    • 启动门槛高,用户量不够时几乎无法开展;
    • 学习量不够时,推荐结果较差

About ME

👋 读书城南,🤔 在未来面前,我们都是孩子~
  • 📙 一个热衷于探索学习新方向、新事物的智能产品经理,闲暇时间喜欢coding💻、画图🎨、音乐🎵、学习ing~
👋 Social Media
👋 加入小组~

👋 感谢打赏~