#没事儿学点东西#个性化推荐总结(一) 算法的类别、和推荐的关系


我的算法和推荐策略学习(一)
算法的种类、和推荐的关系**

一、使用算法的前提
1、拥有被动取获取信息的途径-落地点;
2、有足量可推荐的内容;
3、有用户的行为数据,维度越多越详细越好;

二、算法的种类

A、协同过滤算法
通过用户的历史数据来构建“用户相似矩阵”和“产品相似矩阵”来对用户进行相关item(某一条目/项目/物品)的推荐,以达到精准满足用户喜好的目的。**
举例:“买过XXX的人也买了XXX”推荐
协同:协调两个或者两个以上的不同资源或者个体,协同一致地完成某一目标的过程或能力。
相关熵:利用两个及以上资源(用户)之间的相关性来进行推荐,降低不确定性,提高P值的准确性。
目前,常见的协同过滤有三种,基于内容的协同过滤,基于用户的协调过滤和基于模型的协同过滤。

1、基于用户的协同过滤

A——喜欢a、b B——喜欢a C——喜欢c、d、e 猜测B也喜欢b

仅仅用喜不喜欢来评价感兴趣程度是远远不够的——通过其他行为来反应喜欢程度。
机器只能理解量化的东西,所以在算法中,这些行为会转化成相应的分数
比如一个电影,完整看完的,给3分;看完还给了正面评价的,给5分;看到一半就怒删的,给负10分。这样每个用户都会有一个电影评分表,在计算两个用户相似度的时候,把这些数据代入下面这种专门计算相似度的公式,就能得到二人口味的相似程度。

现在给用户D推荐电影——

制定行为评分体系; 依据A、B、C的行为统计分数(喜欢程度),进行排序; 通过公式计算AD、BD、CD的相似度 找到跟D最相似的用户,将该用户喜欢的推荐给D

(公式叫做余弦相似度公式,通过计算n维空间中两个向量的夹角余弦,来表示相似度)
个性化推荐总结 - 图1
该策略的主要思路:给用户推荐和该用户相似用户集喜欢但该用户未消费的物品
基于相似用户,很难提供令用户信服的推荐理由。
该推荐策略主要分成三步:

  1. 基于全站用户的行为来计算用户间的相似度
  2. 找到与目标用户有相似度的用户集
  3. 过滤掉相似用户集的偏好产品集中目标用户已经购买的产品,将剩下的产品推荐给到用户

1、 用户群体划分 做基于用户的协同过滤,首先就要做用户的划分,可以从三方面着手: (1)外部数据的借用 这里使用社交平台数据的居多,现在产品的登录体系一般都借用第三方社媒的登录体系,如国外的Facebook、Twitter,国内的微信、微博,借用第三方账户的好处多多,例如降低门槛,方便传播等,还能对个性化推荐起到重要作用。因为第三方账户都是授权获取部分用户信息的,往往包括性别,年龄,工作甚至社交关系等,这些信息对用户群划分很有意义。 此外还有其他的一些数据也能借用,例如IP地址,手机语种等。 使用这些数据,你很容易就能得到一个用户是北京的还是上海的,是大学生还是创业者,并依据这些属性做准确的大类划分。比如一篇行业投资分析出来后,“上海创业圈”这个群体80%的用户都看过,那就可以推荐给剩下的20%。 (2)产品内主动询问 常见在产品首次启动的时候,弹框询问用户是男是女,职业等,这样能对内容推荐的冷启动提供一些帮助。但总体来说,性价比偏低,只能询问两三个问题并对用户的推荐内容做非常粗略的划分,同时要避免打扰到用户;这种做法算是基于用户个性化的雏形。 (3)对比用户特征 前文已经提到过,新闻的特征加用户的阅读数据能得到用户的特征,那就可以通过用户特征的相似性来划分群体。 2、 内容推荐实施> 我们结合一个很小的实例来了解用户协同过滤的原理,包括如何计算用户之间的相似性和如何做出推荐。假设有A、B、C、D和E共5个用户,他们各自阅读了几篇新闻并做出了阅读,赞,收藏,评论,分享操作,我们对这几种行为赋予的分数分别为1分、2分、3分、4分和5分,这样用户对每条新闻都有自己的得分,其中“-”表示未阅读,得分如下: 个性化推荐总结 - 图2 接下来,我们需要给用户E推荐4,5,6中的哪一篇? 用户的阅读特征向量由用户所有的阅读数据决定,我们以用户E阅读过的新闻数据作为参考标准,来找到与E最相似的用户。 个性化推荐总结 - 图3 多维向量的距离需要通过欧几里得距离公式来计算,数值越小,向量距离约接近。 个性化推荐总结 - 图4 算出结果:

  • distance(E,A)=4.123 (用户A没有阅读news2,因此news2的数据不能用来计算与用户E的相似度,这里取1,3)
  • distance(E,B)=3.162
  • distance(E,C)=3.742
  • distance(E,D)=1.414

因此得出结果:用户D是与用户E阅读喜好最接近的那个,应该优先归为同一类用户。最终结论根据用户D的阅读数据,优先推荐news4。 3、 内容选取> 我们通过阅读特征向量把用户做群体划分后,接下来就是如何获取新闻推荐的优先级。上面的例子里面只需要选出一个相似用户,并且用户A,B,C,D都只阅读news4,5,6中的一条,所以比较简单,但现实情况中,同一个用户群体阅读的新闻多且随机,用户交互更是错综复杂,如何得出推荐新闻的优先级呢? 假设用户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)中的新闻列表按照得分高低的顺序推荐给用户。
    4、 优缺点> 相比于基于内容的推荐算法,基于用户的协同过滤同样优缺点明显。 优点主要在于对分词等算法的精确度无太大要求,推荐都是基于用户的行为数据去不断学习和完善;同时能发现用户的潜在阅读兴趣,能“制造惊喜”。 而缺点则是启动的门槛高,用户量不够时几乎无法开展;并且学习量不够时推荐结果较差。

2、基于item/物品的协同过滤

A、B、D…都喜欢a、b 推导a、b相似 F喜欢a 猜测F喜欢b

该策略的主要思路:给用户推荐和他们之前喜欢的物品相似的物品
基于用户的历史行为,所以能够给推荐结果提供推荐理由。
该推荐策略主要分成两步:

  1. 基于全站用户的行为来计算物品间的相似度
  2. 找到与用户历史偏好的相似物品集按照相似度排序推荐给到用户

3、基于模型的协同过滤(用户标签数据/用户画像推荐)
基于已有的用户与资源之间喜好关系的样本(利用人群或者物品的特征来计算人群或物品的相似度),训练模型,通过该模型计算P值,进行推荐。训练样本越多,有效特征越多(输入的有效信息维度),训练的模型越准确,也就是P值的准确度越高。
该策略的主要思路:给用户推荐那些和该用户兴趣相匹配的物品。
该推荐策略主要分成三步:

  1. 基于用户的行为计算出用户的兴趣点
  2. 找到与用户兴趣点匹配的物品集按照模型匹配度排序推荐给到用户

推荐效果依赖于数据样本的大小,数据维度的多少,以及数据的完备性
从数据维度来看,策略产品经理可以从用户需求和场景化的角度,去考虑哪些维度对于用户是有价值的,在什么场景下有价值,价值有多大。
4、协同过滤的缺点**

  • 协同过滤算法(CF)推荐中存在流行性偏差,因为协同过滤算法是基于惯性数据来进行推荐的,流行的物品由于关注的用户多,产生的数据也多,因此可以建立较为有效的推荐机制;而对于小众或长尾的产品(没人用过也没人评分过),则无法有效推荐;
  • 冷启动问题(又叫做新用户问题,或推荐新项问题),同样是由于惯性数据的缺失,导致一开始的推荐算法无法建立;这样的问题可以通过流行性算法进行一定程度的解决,当然也可以利用基于内容的推荐算法来进行解决(后面会提到)。

B、基于内容的推荐算法
将item的名称、简介等进行分词处理后,提取出TF-IDF值较大的词作为特征词,在此基础上构建item相关的特征向量,再根据余弦相似度来计算相关性,构建相似度矩阵。
本质上是计算单篇资源与用户的之间的相关性。**

这里引入一个概念叫“新闻特征向量”来标识新闻的属性,以及用来对比新闻之间的相似度。 我们把新闻看作是所有关键词(标签)的合集,理论上,如果两个新闻的关键词越类似,那两个新闻是相关内容的可能性更高。 新闻特征向量是由新闻包含的所有关键词决定的。得到新闻特征向量的第一步,是要对新闻内容进行到关键词级别的拆分。 对于用户而言,会建立一个用户模型,可以简单抽象为一个用户向量,这个向量记录了用户的各种个性化的兴趣点及其权重,对于资源而言,会建立一个内容模型,可以简单抽象为一个内容向量,这个向量中记录了跟单篇内容相关的各种关键词和权重。通过计算用户向量和资源向量的相关性,求得单篇资源和用户之间的相关系数P。

**

1、 分词 分词需要有两个库,即正常的词库和停用词库。正常词库类似于一本词典,是把内容拆解为词语的标准;停用词库则是在分词过程中需要首先弃掉的内容。 停用词主要是没有实际含义的,例如“The”,“That”,“are”之类的助词;表达两个词直接关系的,例如“behind”,“under”之类的介词,以及很多常用的高频但没有偏向性的动词,例如“think”“give”之类。显而易见,这些词语对于分词没有任何作用,因此在分词前,先把这些内容剔除。 剩下对的内容则使用标准词库进行拆词,拆词方法包含正向匹配拆分,逆向匹配拆分,最少切分等常用算法,这里不做展开。 因为网络世界热词频出, 标准词库和停用词库也需要不断更新和维护,例如“蓝瘦香菇”,“套路满满”之类的词语,可能对最终的效果会产生影响,如果不及时更新到词库里,算法就会“一脸懵逼”了。 因此,推荐在网上查找或购买那些能随时更新的词库,各种语种都有。 2、 关键词指标 前面已经说过,新闻特征向量是该新闻的关键词合集,那关键词的重合度就是非常重要的衡量指标了。 那么问题来了,如果两条新闻的关键词重合度达到80%,是否说明两条新闻有80%的相关性呢? 其实不是,举个例子: (1)一条“广州摩拜单车投放量激增”的新闻,主要讲摩拜单车的投放情况,这篇新闻里“摩拜单车”是一个非常高频的词汇,新闻在结尾有一句“最近广州天气不错,大家可以骑单车出去散心”。因此“广州天气”这个关键词也被收录进了特征向量。 (2)另外一条新闻“广州回南天即将结束,天气持续好转”,这篇新闻结尾有一句“天气好转,大家可以骑个摩拜单车出门溜溜啦”,新闻里面“广州天气”是非常高频的词汇,“摩拜单车”尽管被收录,但只出现了一次。 这两个新闻的关键词虽然类似,讲的却是完全不同的内容,相关性很弱。如果只是看关键词重合度,出现错误判断的可能性就很高;所以特征向量还需要有第二个关键词的指标,叫新闻内频率,称之为TF(Term Frequency),衡量每个关键词在新闻里面是否高频。 那么问题来了,如果两条新闻的关键词重合度高,新闻中关键词的频率也相差无几,是否说明相关性很强呢? 理论上是的,但又存在另外一种情况:如果我们新闻库里所有的新闻都是讲广州的,广州天气,广州交通,广州经济,广州体育等,他们都是讲广州相关的情况,关键词都包含广州,天河,越秀,海珠(广州各区)等,并且有着类似的频率,因此算法很容易将它们判断为强相关新闻;从地域角度讲,这种相关性确实很强,但从内容类别层面,其实没有太多相关性,如果我是一个体育迷,你给我推荐天气,交通之类的内容,就没多大意义了。 因此引入第三个关键词的指标,即关键词在在所有文档中出现的频率的相反值,称之为IDF(Inverse Document Frequency)。为什么会是相反值?因为一个关键词在某条新闻出现的频率最大,在所有文档中出现的频率越小,该关键词对这条新闻的特征标识作用越大。 这样每个关键词对新闻的作用就能被衡量出来即TFIDF=TF IDF,这也就是著名的TF-IDF模型。 3、 相关性算法> 做完分词和关键词指标后,每一篇新闻的特征就能用关键词的集合来标识了: 个性化推荐总结 - 图5 其中word0,1,2……n是新闻的所有关键词,tfidf0,1,2……n则是每个关键词的tfidf值。 两个新闻的相似度就能通过重合的关键词的tfidf值来衡量了。根据之前所学的知识,几何中夹角余弦可以用来衡量两个向量的方向的差异性,因此在我们的算法中使用夹角余弦来计算新闻关键词的相似度。夹角越小,相似度越高。 有了关键词和各关键词的tfidf之后,就可以计算新闻的相似度了。假设两条新闻的特征列表如下: 个性化推荐总结 - 图6 可以看到两条新闻有5个重合的关键词:广州,摩拜单车,太阳,天河和市长,因此两条新闻的相关性由这5个关键词决定,计算方式如下: 个性化推荐总结 - 图7 得出两条新闻的相关性最终值;用同样的方法能得出一条新闻与新闻库里面所有内容的相关性。 4、 用户特征> 得到新闻特征以后,还需要得到用户特征才能对两者进行匹配和推荐,那怎么获得用户特征呢? 需要通过用户的行为来获得,用户通过阅读,点赞,评论,分享来表达自己对新闻内容的喜爱;跟热度排名类似,我们对用户的各种行为赋予一定的“喜爱分”,例如阅读1分,点赞2分,评论5分等,这样新闻特征跟用户行为结合后,就能得到用户的特征分。 个性化推荐总结 - 图8 而随着用户阅读的新闻数越来越多,该用户的标签也越来越多,并且越发精准。 从而当我们拿到新闻的特征后,就能与用户的关键词列表做匹配,得出新闻与用户阅读特征的匹配度,做出个性化推荐。 *5、 其他运用> 除了个性化推荐,基于内容的相关性算法能精准地给出一篇新闻的相关推荐列表,对相关阅读的实现非常有意义。此外,标签系统对新闻分类的实现和提升准确性,也有重要的意义。

6、 优缺点> 基于内容的推荐算法有几个明显优点:

  1. 对用户数量没有要求,无论日活几千或是几百万,均可以采用;因此个性化推荐早期一般采用这种方式;
  2. 每个用户的特征都是由自己的行为来决定的,是独立存在的,不会有互相干扰,因此恶意刷阅读等新闻不会影响到推荐算法。

而最主要的缺点就是确定性太强了,所有推荐的内容都是由用户的阅读历史决定,所以没办法挖掘用户的潜在兴趣;也就是由于这一点,基于内容的推荐一般与其他推荐算法同时存在。 如果单纯使用基于内容的过滤算法,会出现过度专业化问题,导致推荐列表里面出现的大多都是同一类东西。



C、混合推荐算法
将其他算法推荐的结果赋予不同的权重,然后将最后的综合结果进行推荐的方法。
举例,将三种推荐结果赋予不同的权重,如:基于用户的协同过滤的权重为40%,基于item的协同过滤的权重为30%,基于内容的过滤技术的权重为30%,然后综合计算得到最终的推荐结果。**

D、热度推荐算法(流行度推荐算法)
按照资源的热度,对资源进行排序。认为热度高的资源,P值越高,用户点击的可能性就越大。例如最多的下载次数或购买量,然后向新用户推荐这些受欢迎的item。
举例:热门商品、热门推荐
实质是利用资源的热度来消除资源和用户匹配的不确定性,热度为500的资源相对于热度100的资源而言,用户点击前者的可能性(概率)更高。
基本原理

新闻热度分 = 初始热度分 + 用户交互产生的热度分 – 随时间衰减的热度分 Score = S0 + S(Users) – S(Time)

  • 新闻入库后,系统为之赋予一个初始热度值,该新闻就进入了推荐列表进行排序;随着新闻不断被用户点击阅读,收藏,分享等,这些用户行为被视作帮助新闻提升热度,系统需要为每一种新闻赋予热度值;同时,新闻是有较强时效性的内容,因此新闻发布之后,热度必须随着新闻变得陈旧而衰减。
  • 新闻的热度就在这些算法的综合作用下不断变化,推荐列表的排序也就不断变化。

    1、初始热度不应该一致——新闻入库的初始分

    • 例如娱乐类别比文化类别受欢迎程度本身就高很多;或者突发了严重的灾害或事故;或是奥运会期间,体育类别的关注度突然高了起来;而此时如果还是每条新闻给同样的热度就不能贴合实际了。

1)按照新闻类别给予新闻不同的初始热度,让用户关注度高的类别获得更高的初始热度分,从而获得更多的曝光,例如: 个性化推荐总结 - 图9 (2)重大事件的报道,如何让它入库时就有更高的热度,我们采用的是热词匹配的方式。 即对大型新闻站点的头条,Twitter热点,竞品的头条做监控和扒取,并将这批新闻的关键词维护到热词库并保持更新;每条新闻入库的时候,让新闻的关键词去匹配热词库,匹配度越高,就有越高的初始热度分。 这样处理后,重大事件发生时,Twitter和门户网站的争相报道会导致热词集中化,所有匹配到这些热词的新闻,即报道同样事件的新闻,会获得很高的初始热度分。

2、用户行为分规则不是固定不变的——新闻热度分 明确用户的的哪些行为会提高新闻的热度值,然后对这些行为赋予一定的得分规则。 例如对于单条新闻,用户可以点击阅读(click),收藏(favor),分享(share),评论(comment)这四种行为,我们为不同的行为赋予分数,就能得到新闻的实时用户行为分为: S(Users) = 1click + 5favor + 10comment + 20share 这里对不同行为赋予的分数为1,5,10,20,但这个值不能是一成不变的; 当用户规模小的时候,各项事件都小,此时需要提高每个事件的行为分来提升用户行为的影响力;当用户规模变大时,行为分也应该慢慢降低,因此做内容运营时,应该对行为分不断调整。 当然也有偷懒的办法,那就是把用户规模考虑进去,算固定用户数的行为分,即: S(Users) = (1click + 5favor + 10comment + 20share)/DAU * N(固定数) 这样就保证了在不同用户规模下,用户行为产生的行为分基本稳定。

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

  • 由于新闻的强时效性,已经发布的新闻的热度值必须随着时间流逝而衰减,并且趋势应该是衰减越来越快,直至趋近于零热度。换句话说,如果一条新闻要一直处于很靠前的位置,随着时间的推移它必须要有越来越多的用户来维持。

个性化推荐总结 - 图10 我们要求推荐给用户的新闻必须是24h以内,所以理论上讲,衰减算法必须保证在24h后新闻的热度一定会衰减到很低,如果是线性衰减,当某些新闻突然有大量用户阅读,获得很高的热度分时,可能会持续排名靠前很久,让用户觉得内容更新过慢。 参考牛顿冷却定律,时间衰减因子应该是一个类似于指数函数: T(Time) = e ^ (k*(T1 – T0)) 其中T0是新闻发布时间,T1是当前时间。 而由于热度的发展最终是一个无限趋近于零热度的结果,最终的新闻的热度算法也调整为: Score = ( S0(Type) + S(Users) ) / T(Time)

4、 其他影响因素 很多新闻产品会给用户“赞”,“踩”或“不在推荐此类”的选项,这些功能不仅适用于个性化推荐,对热度算法也有一定的作用。 新闻的推送会造成大量的打开,在计算热度的时候需要排除掉相关的影响。类似于这样的因素,都会对热度算法产生影响,因此热度算法上线后,依然需要不断地“调教”。建议把所有的调整指标做成可配项,例如初始热度分,行为事件分,衰减因子等,从而让产品和运营能实时调整和验证效果,达到最佳状态。

优点:
启动成本低,只要定义清楚了热度的计算方法,每篇资源都可以计算出热度值,可以作为冷启动方式,为个性化推荐策略积累数据。
缺点:(在上文给出了解决方案)

1.1、 单篇文章每个用户的P值都是一样的 实际需求中,每个人对热度的定义是不一样。例如:我爱看NBA,那同样是热度500的NBA和美妆的两篇文章,很明显NBA的文章对我来说更热,我点击的可能性更大。 所以在热度算法中,需要考虑一些对用户有价值的因素,以提高P值的准确性。例如,有没有一个初始热度值,初始热度值有没有类别差异?需要找出有价值的信息维度,提高P值的准确度。判断这些信息是否有价值,可以看这个场景是否对于绝大多数的用户都是成立的。 1.2、无法做到个性化推荐 热度算法无法根据用户的兴趣点和行为实现细粒度的个性化推荐。 1.3、对新资源和强时效资源没有保护 新入库的资源由于没有历史数据的累积,很难被展现,需要对新资源制定一些保护策略。尤其对一些强时效的重大事件,可以维系一个热词词典进行提权,如有必要,甚至可以结合人工干预,进行强制展现,以保证快速的时效性要求,例如”九寨沟地震事件”。 1.4、避免滚雪球式的放大效应 热度高的资源会排在前面,得到更多的展现,反过来会进一步提高资源的热度,为了避免这种滚雪球式的马太效应,提高资源时效性的感知,需要对热度进行合理的衰减,衰减趋势应该是越来越快,也就是说用户此时此刻的行为价值最大,一篇资源今天被点击了100次的热度价值高于昨天被点击100次,明显高于前天被点击的100次。


算法和推荐的关系:

一、算法和推荐适用的产品生命周期
1、产品初期(冷启动)数据不足——聚合热度算法
虽然无法做到基于兴趣和习惯为每一个用户做到精准化的推荐,但能覆盖到大部分的内容需求,而且启动成本比个性化推荐算法低太多。
2、产品中期——依托数据进行个性化推荐
内容产品顺利度过了早期阶段,拥有了几万甚至十几万级别的日活。
这时候,热度算法导致用户的阅读内容过于集中,而个性化和长尾化的内容却鲜有人看,看来是时候开展个性化推荐,让用户不仅能读到大家都喜欢的内容,也能读到只有自己感兴趣的内容。
个性化推荐一般有两种通用的解决方案,一是基于内容的相关推荐,二是基于用户的协同过滤。

A 由于基于用户的协同过滤对用户规模有较高要求,因此更多使用基于内容的相关推荐来切入。 B 产品已经有了大量活跃用户,这时候虽然基于内容的推荐已经很精准了,但总是少了那么一点性感。所有给用户的内容都是基于他们的阅读习惯推荐的,没能给用户“不期而遇”的感觉——开始做基于用户的协同过滤。

二、负责推荐策略的职位——策略产品经理

策略产品经理需要解决的核心问题,是人与物(信息)的匹配问题。让用户在有限的碎片化时间里,尽可能多地看到他感兴趣且尽可能有价值的内容。 个性化推荐的效果极强地依赖技术方案,策略产品经理的价值更多的体现在对用户价值和用户体验的判断。 例如,拿一种新的资源来说,策略产品经理需要思考这类资源对于目标用户有什么价值,目标用户都会满足哪些特征,这种资源用什么样的形式,什么样的比例,什么样的方式出现在用户的信息流中,哪些因素会影响用户的最终体验,怎样衡量最终为用户带来了什么价值等等。 上述这些虽然很多也受制于技术实现方案,但是策略产品经理需要思考清楚以及把控底线。举个极端的例子,纯粹依赖机器和算法进行个性化推荐,最终绝大多数展现的资源都是偏低俗敏感的低价值资源,机器更擅长的是根据用户的行为去迎合用户的喜好,而策略产品经理需要能够从人的角度,去权衡用户喜好和用户价值之间的关系。

参考引用:
https://www.woshipm.com/pmd/723735.html
https://www.woshipm.com/pd/819887.html
https://www.woshipm.com/pd/698640.html
https://www.woshipm.com/pd/698640.html
2018 - 01 - 021

#没事儿学点东西#个性化推荐总结(二) 算法推荐在运用中的实例收集

基于内容的协同过滤算法,最主要的初级步骤是通过分词技术对标题和简介等进行处理,形成特征标签。例如,对于图书和电影而言,可以对名称和简介进行特征词提取,从而构建特征向量;当然,在豆瓣上发现可以用一种更省事的方法,就是让用户进行对作品评价时需要勾选相关的标签,这样只要为不同种类提供足够多的标签供用户选择即可(当然这是我猜的);
而如果对于音乐的推荐呢?没有相关简介,歌名也不具备足够的指向性,这种情况下则可以通过音乐本身的类别来作为标签进行特征向量的构建,例如:民谣、摇滚、怀旧等;我猜这也是网易云音乐采用的一种推荐方式吧。
而对于36氪之类的资讯网站,采用什么样的推荐算法也能够有一定程度的理解了吧,原理都是类似的。
网易云音乐的推荐算法,首先用户过去都会有听歌的历史,由于音乐中没有相关的评分机制,那么可以根据用户对音乐的行为来建立一个喜爱程度模型,例如:收藏-5分,加入歌单-4分,单曲循环-3分,分享-5分,听一遍就删-0分(本来想说负分滚粗的)。这样就大概有了一个喜欢程度列表,于是接下来就可以根据用户的听歌情况,建立用户的特征向量,接下来的推荐就顺利成章了。

目的地的个性化:
当用户在App进行搜索,查看相关目的地的产品时候,比如搜索一张从上海到北京的机票,那么改用户对北京就存在有出行的意向,所以在携程和途牛中都可以看讲浏览的城市作为推荐候选集。
如果要丰富推荐目的地候选集,需要去计算目的地的相似性,可以采用策略二或者策略三,下面给出采用策略三的产品思路如下:

  1. 一个目的地里面会包含多个不同的景点,不同的景点有不同的标签属性,通过对一个目的地下多个景点的汇总,从而得到一个目的地的标签集。
  2. 利用标签集来计算不同目的地的相似度
  3. 对用户浏览的目的地的不同标签集进行抽取,从而得到用户对标签的偏好程度
  4. 基于用户偏好的标签集从目的地集中找到相似的目的地推荐给到用户

产品的个性化
通过目的地推荐帮助用户找到目的地,但是每个目的地下面又存在多种产品,这次产品的个性化就变得十分重要,可以采用上面的三种策略,下面以策略一位例说明一下产品思路:

  1. 依赖于用户对产品的搜索,浏览和订单行为来计算一个目的地下面产品的相似度,从而得到一个目的地产品间的相似度,同时也可以得到一个目的地下产品的热度。
  2. 基于用户最近浏览过的产品,找到相似的产品作为推荐的产品集
  3. 同时补充一些该目的地的热门产品同时作为推荐的产品集

通过以上三步可以得到推荐结果的来源包括:用户实时浏览的,用户浏览产品的相似产品以及该目的地下的热门产品