第九课:电商推荐系统

补充知识:几种相似度度量方式

现有3个item,user1评分较严,对3个item的评分分别为:3,4,6;user2评分较松,对3个item的评分分别为5,6,5;
如果用“欧氏距离”来计算user1和user2的相似度,则看起来user1和user2的喜好相近。但是,事实上,由于user2评分较松,当其评分为6,表示其不太喜欢,而user1评分较严,评分为6,已经表示其很喜欢。如果用“欧氏距离”,不考虑user之间评分的习惯,则会误认为两个user很相似,事实则不然。
利用Pearson进行度量,将user1和user2的评分去平均,因此,可以真实的表示两个user对item的喜好程度,从而能够更好的评估两个user的相似度。
note that:Pearson为cosin相似度 去平均的结果。

一、推荐系统需求

信息过载的情况下,帮助用户缩短“决策路径”。

二、推荐系统评估指标

1、notation

2、推荐系统评分指标

  • 推荐系统结构
  • 准确度:评价推荐系统performance的优劣
    1)针对打分系统
    |T|:所有的推荐集合

    2)针对Top N推荐
    R(u):系统预测推荐;
    T(u):用户实际选择;
    U:all users;
    一般讲,Precision和Recall是相互制约的关系,要想获得较高Precision,往往要牺牲掉部分Recall。
  • 覆盖度:评估推荐系统对于物品的曝光程度;实际中,希望推荐系统能够曝光更多的物品,使得各个物品均有机会接触到user,出售;
    R(u):系统预测推荐list;
    |I|:全平台的items;
    下列PPT列举了两个评估“曝光度”的方法,其中,利用coverage进行评估时,R(u)可能全为“hot items”,这样,即使coverage很高,但是,实际,推荐系统曝光的都是“hot items”,那些“冷门商品”依然无法接触到user,这种情况,会使Hot items越来越火,而冷门商品越来越冷,到最后,只有hot items能够在“推荐系统平台”存活下来。这是平台不希望看到的,也即:马太效应。
    而第二种方法,利用“熵”来评估推荐系统曝光度,由于,熵在各个item的曝光概率P相等时最大,因而,利用“熵”进行评估,可保证各个item均享有同等的曝光度。其中,熵中P的计算,可以采用频率的方法,在预测出推荐list后,计算各个item曝光的频率,用频率作为P的value。
  • 多样性:评估推荐系统给user推荐list的多样性
    s(i,j):代表item i 和 item j的相似度;
    R(u):代表推荐系统为user1提供的推荐list;
    下述第一个公式:分子项为推荐list中each two item的相似性,分母为推荐list中item两两组合的组合数,整体表示两个item的平均相似度,1-average similarity表示两个item之间的平均差异度;
    第二个公式:将所有user推荐list item之间的差异度进行加和,求平均,得到推荐系统推荐list中item的差异性(多样性)。
  • 其它评估推荐系统的指标

三、推荐算法

1、基于内容的推荐
“基于内容的推荐”在进行推荐时,主要考虑“用户喜欢属性”与“物品属性”之间的相似度,如果相似,则将该物品推荐给用户。其中,“用户喜欢属性”与“物品属性”均可用vector表示。
例如:加入我们要给user推荐news:
首先,我们可以根据news的常用word构建一个dictionary,将news以及“user喜欢属性”均用TF-IDF表示。(我们可以仅根据news set中高频word构建dictionary,然后,将其他鲜见的word都归入unknown中)。
其次,将user看过的news vector进行“加权平均”,作为“user喜欢属性”的vector_user。
第三,将vector_user与各个news的vector_news进行相似度计算(cosin),选择相似度较高的news推荐给user。
具体要点如下PPT:

2、基于用户行为的推荐(协同过滤CF:neighborhood-based algorithm)
协同过滤是基于“近邻”的一种推荐算法,他有两个执行途径:
1)user-based CF;
2)item-based CF;
note that:协同过滤不等于KNN。
其核心思想是:构建一个item-user matrix,matrix的每个元素为user对某一item的评分,根据这个matrix即可进行item 推荐,如下所示为item-user matrix:

1)user-based CF 执行过程:
假设recommender要对user1进行item推荐,现我们通过user vector(item-user matrix column),根据cosin similarity寻找与user1最相近的若干个user。找到以后,将这些user进行加权平均,比如:user1与user_i的相似度为w1,user1与user_j的相似度为w2,则summation中,给user_i乘以w1,给user_j乘以w2,在获得summation后,我们可以将summation中,对各个item的评分看作是user1的评分,将user1未看过,且评分最高的item推荐给user1,即完成了user-based CF。
具体计算公式如下所示:

2)item-based CF 执行过程:
假设recommender要对user1进行item推荐,先要计算movie1的“预测评分”,其具体过程如下:
寻找与movie1相近的几个movie(similarity用cosin计算),然后根据user1对这些movie的评分的加权和来估算user1对movie1的评分,具体计算公式如下所示:

其中,各个movie vector为item-user matrix的row,如下所示:

3)user-base 和 item-based CF比较
一般,item-based CF用的比user-based CF要多。因为,人喜好的易变性;user数量级往往>item数量级。

4)协同过滤优缺点

由于“协同过滤”基于用户行为,因此,对于一个 new recommander 无法使用CF为user进行推荐,此时,应该用“基于内容的推荐”实施“冷启动”。
以下罗列了一些解决“冷启动”的一些措施:

在Collaborative filtering中,存在一个缺陷,即:user/item vector中很多元素为空值,这种情况很可能会造成users/items inner product无法计算的局面,为了避免这一情况的发生,我们可以采用“隐语义模型”,重新计算user-item matrix,使得为空的元素,有值。

3、隐语义模型(latent semantic analysis : LSA)
隐语义模型的主要目的是,重新计算user-item matrix,对original matrix中为空的元素进行数值填充,使得可以直接根据user-item matrix来为user进行item推荐。
隐语义模型的核心思想是:将user-item matrix进行分解,利用分解的两个matrix,重新构建user-item matrix,以便对original matrix中为空的元素进行数值填充,图示如下:

在构建“隐语义模型”时,我们可以简单的利用SVD进行“矩阵分解”,但是,1)SVD的计算复杂度非常高,为O(m3);2)原user-item matrix中为空的元素非常多,不宜用0填充,进行矩阵分解。因此,SVD不适合实际应用。

我们可以简单的利用“优化目标函数”的方法来构建“隐语义模型”,其核心思想如下:
构建目标函数:(r-pq)2+regularization(pq),求分解矩阵p,q,使得目标函数可达到最小。(r为user-item matrix中各个元素的值,为空的元素不需要加入目标函数进行计算)。
在上述目标函数中,我们还可以加入“偏置项”,使得预测值rhat=pq+u+b1+b2,通过这种处理方式,可以使得p,q的计算更容易,其原理类似于(y=wx+b中w的优化,较,y=wx中w的优化,容易)。
该方法的具体思路如下PPT所示:
以下PPT为user-item matrix:





4、word2vec在推荐系统中的应用
个人理解:将商品用“用户行为序列”表示,而“用户行为序列”用word2vec表示。根据这种“商品表示”,寻找商品之间的关联性。

参考博文:word2vec
???工业界中word2vec的具体实现方法;

三、推荐系统其它信息

一个推荐系统平台的成功不仅与“技术”有关,还与他的呈现形式有关(work of product manager):

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如今大数据已经成了各大互联网公司工作的重点方向,而推荐系统可以说就是大数据最好的落地应用之一,已经为企业带来了可观的用户流量和销售额。特别是对于,好的推荐系统可以大大提升企业的销售业绩。国内外的知名,如亚马逊、淘宝、京东等公司,都在推荐系统领域投入了大量研发力量,也在大量招收相关的专业人才。打造的推荐系统项目,就是以经过修改的中文亚马逊数据集作为依托,并以某网站真实的业务架构作为基础来实现的,其中包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。具体实现的模块主要有:基于统计的离线推荐、基于隐语义模型的离线推荐、基于自定义模型的实时推荐,以及基于内容的、和基于Item-CF的离线相似推荐。整个项目具有很强的实操性和综合性,对已有的大数据和机器学习相关知识是一个系统性的梳理和整合,通过学习,同学们可以深入了解推荐系统企业中的实际应用,可以为有志于增加大数据项目经验的开发人员、特别是对业务领域感兴趣的求职人员,提供更好的学习平台。适合人群:1.有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2.有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3.有领域开发经验,希望拓展业务场景、丰富经验的开发人员4.有较好的数学基础,希望学br习机器学习和推荐系统相关算法的求职人员
本教程为官方授权出品如今大数据已经成了各大互联网公司工作的重点方向,而推荐系统可以说就是大数据最好的落地应用之一,已经为企业带来了可观的用户流量和销售额。特别是对于,好的推荐系统可以大大提升企业的销售业绩。国内外的知名,如亚马逊、淘宝、京东等公司,都在推荐系统领域投入了大量研发力量,也在大量招收相关的专业人才。量身定制打造的推荐系统项目,就是以经过修改的中文亚马逊数据集作为依托,并以某网站真实的业务架构作为基础来实现的,其中包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。具体实现的模块主要有:基于统计的离线推荐、基于隐语义模型的离线推荐、基于自定义模型的实时推荐,以及基于内容的、和基于Item-CF的离线相似推荐。整个项目具有很强的实操性和综合性,对已有的大数据和机器学习相关知识是一个系统性的梳理和整合,通过学习,同学们可以深入了解推荐系统企业中的实际应用,可以为有志于增加大数据项目经验的开发人员、特别是对业务领域感兴趣的求职人员,提供更好的学习平台。适合人群:1.有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2.有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3.有领域开发经验,希望拓展业务场景、丰富经验的开发人员4.有较好的数学基础,希望学br习机器学习和推荐系统相关算法的求职人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sarah ฅʕ•̫͡•ʔฅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值