基于矩阵分解的推荐系统在电商领域的应用(矩阵分解适用于图像数据)

本文目录一览:

矩阵思维在电商上的使用

在电商业务中或大部分与人和市场有交集的岗位中都会需要用到跨学科综合性的技能知识,分析调研、市场营销、财务管理、统计、项目管理、组织行为学等等。但当涉及的面特别广了,知识就多了起来,多得记不住的时候就只有找到一些知识的基础通用逻辑、模型才是最有效的,找到思考框架然后重复套用。

基于矩阵分解的推荐系统在电商领域的应用(矩阵分解适用于图像数据)

今天就整理一个简单的思考框架-矩阵思维。

优秀的思考是简约的 ,其中一种叫波士顿矩阵(BCG Matrix)。

波士顿矩阵

波士顿矩阵又称市场增长率-相对市场份额矩阵、波士顿咨询集团法、四象限分析法、产品系列结构管理法等。波士顿矩阵的两个重要指标分别为市场察侍埋增长率和企业相对市场占有率。

要了解这两个重要指标,我们要先理解两个概念:市场引力和企业实力。

市场引力 主要包括:市场增长率、目标市场容量、竞争对手强弱和利润高低等,企业市场增长率是综合指标。这是市场需求旺盛与否的表征。

市场实力 包括:市场占有率、技术、设备、资金利用能力。其中市场占有率是决定企业产品结构的内在因素。它直接显示你和对手PK的时候能不能吃鸡。

通过这两个指标的组合可以把公司的经营业务分为四类:

产品可以是一款洗发水,可以是一项虚拟服务、也可以是一款APP。于是这些产品被分为高增长率-高占有率、高增长率-低占有率、低增长率-高占有率、低增长率-低占有率。

【高-高】产品群为明星类产品,想象一下自己穿着香奈儿挎着限量款包包的样子……从财务报告上看,它总是能产生利润,但是高增长往往意味着高投资。某种情况下,它不代表着自给自足。如果市场份额处于垄断或者领先地位时,那么企业不必再维持投入以保持高增长,此时产品能源源不断地维持现金流,它被称为现金牛。

【低-高】产品群为败蚂金牛类产品,银行卡后面的0全靠它了。现金牛产品的特点是高市场份额和低增长率。产品已经迈入成熟期,其特征是产生大量的现金收入,数额远大于维持市场份额所需再投入的资金,是企业支持其他产品的后盾。

【低-低】产品群为瘦狗类产品,一种冬日傍晚,陈旧街巷那种凄凉的即视感。这类产品对企业都是鸡肋,财务特点是利润率低、处于保本或亏损状态。这类产品往往会实行撤退或者整顿的战略。

【高-低】产品群为问题类产品,伤脑筋吧?这些产品吸纳的资金总是多于所产生的资金。虽然高增长率意味着市场未来潜力好,但是份额不高要打上一个问号。不投入资金,产品会衰亡,即使投入资金,若只能勉强维持住市场份额。那么它最终仍属于瘦狗产品。

象限是动态的,明星产品的目标是成为现金牛,问题产品需要摆脱泥沼增加市场份额,而所有的产品都可能衰退为瘦狗。

要打一套组合拳,可以使企业的产品互相支持,资金良性循环。

第一法则 :成功的月牙环。

简单地说就是金牛产品和明星产品要多,问题和瘦狗产谈野品要少,把圆圈框起来就像一个月牙。如果不是这样的结果,那估计你负责的市场做得很痛苦。

第二法则 :黑球失败法则。

就是你的市场里没有金牛产品,没有可以赚钱的产品,那一块用一个巨大的黑球填起,就像脸上刻了两个字——失败。

第三法则 :东北方向大吉。

东北方向还是西北方向不是本质,本质是靠近明星产品的方向,远离瘦狗产品的方向。这不难理解,有人下飞机就围拢很多粉丝,他定然是明星吧。

第四法则 :踊跃移动速度法则。

从问题产品变成明星产品再变成金牛产品,最后沦落成瘦狗,这个过程如果太快了,你就赚不到钱,就像你在看包包,男朋友催你赶快走,还没有摸热,那肯定包包买不成了;但是如果过程太慢了,你以为包包就是你的了?打折的时候,如潮水般涌来的人都在和你抢,还有你的戏份?所以这个过程非常微妙。

充分了解了四种业务的特点后,还须进一步明确各项业务单位在公司中的不同地位,从而进一步明确其战略目标。

通常有四种战略目标分别适用于不同的业务。

发展

以提高相对市场占有率为目标,甚至不惜放弃短期收益。要使问题类产品尽快成为“明星”,就要增加资金投入。

保持

投资维持现状,目标是保持产品现有的竞争格局,对于较大的“金牛”可以此为目标,以使它们产生更多的收益。

收割

这种战略主要是为了获得短期收益,目标是回笼资金。对处境不佳的金牛类,没有发展前途的问题类和瘦狗类产品应视具体情况采取这种策略。

放弃

目标在于裁撤某些业务,减轻负担,以便将资源投入到效益较高的产品。这种目标适用于无利可图的瘦狗类和问题类产品。

一个优秀的销售必须对其业务加以调整,以使其投入的精力和资源趋于合理。

矩阵思维

怎么进一步理解矩阵思维在  电商 中的应用?

BCG Matrix 就像初中我们把学过的象限和坐标轴,用两个指标把条件分不同象限。而现在,我们可以把它认为是一种思考方式。只要留意,矩阵思维其实有很多应用。

电商应用

通过曝光量和利润率能区分出带量商品,明星商品,潜力商品,鸡肋商品

商品 曝光量 利润率 类别 策略

商品A100003%带量产品导流产品,维稳并提高关联销售

商品B500030%明星产品现金流产品,注重售后优化体验

商品C50015%潜力产品增长曝光量、搜索权重

商品D5003%鸡肋产品优化转化率,实在不行的下架

高曝光量-高利润率的商品,属于电商中的明星产品,是重要的现金流业务。这里的曝光量可以是站内的店铺流量,也可以是独立电商平台的各种营销渠道。除了明星产品外,还对应着高曝光量-低利润率的导流商品,低曝光量-高利润率的成长潜力商品,低曝光量-低利润率的鸡肋商品等。

每种类别的商品对应不同的运营策略,潜力商品可以在后期运营中增长曝光量,培养搜索权重;鸡肋商品则要优化转化率。这里通过象限梳理清楚了基于商品的运营逻辑,避免盲目优化。

矩阵思维的一个优点是方便归类和聚焦,它是可以指导策略的。

商品的象限维度不止曝光量和利润率。

我们可以尝试曝光量-转化率,去分析商品落地页的效果,比如高曝光量-低转化率的商品,是不是设计和文案有问题?

也可以尝试利润率-回购率的象限维度,衡量商品长期的盈利多寡,某个商品虽然利润低了些,但是用户会反复购买,那么它也是半个明星产品。

还可以尝试浏览量-时间,去分析新品测款数据,衡量商品短期热度,并不是所有的产品都能顺利走完一圈,有的新品刚上去是瘦狗,数据长时间上不去,一日为瘦狗日日为瘦狗,超过两个月没反应基本就狗带了。

思维的墙

其它领域的应用还有很多,比如经典的时间管理上以重要性和紧急性为坐标得出轻重缓急。阿里巴巴在绩效管理以工作业绩和价值观为坐标区分出不同的象限进行员工管理。

当然如果可以,我们可以多加一个轴,四象限就变为八象限了。

最经典的就是RFM模型用消费金额、消费频率和最近一次消费时间三个指标划分客户价值。

打破思维的墙,世界就是你的。只要象限合理、可用,数量是不是四并不重要。

矩阵思维的目的是区分,区分后我们可以再聚焦。

聚焦就会回到我们常说的二八定律,要用八分的精力重点放在二分的产品上,因为它们会带来八分的利润。

人生,是思维的产物,思维框架就是脚手架,帮你抵达想到达的高点。

跨境电商从未如此性感,Stay Hungry Stay Foolish !

Blog:

Minimalist​carlospython.github.io

抖音买的菜刀退款被商家改成拒收七天会自动退款吗?

这个情况具体要氏含看商家的退款政策。一般来说,如果你购买的商品存在质量问题或者与描述不符,你可以向商家申请退款。如果商家同意退款,你需要按态悉照商家的要求进帆核乎行退货,然后等待退款到账。如果商家拒绝退款,你可以通过投诉、申诉等方式维护自己的权益。总之,建议你先在和商家协商解决问题,如果无法解决可以寻求相关部门的帮助。

推荐系统论文阅读(二十三)-神经图协同过滤NGCF

论文:

论文题目:《Neural Graph Collaborative Filtering》

论文地址:

本论文是关于图结构的协同过滤算法,在原始的矩阵分解和基于深度学习的方法中,通常是通过映射描述用户(或物品)的现有特征(例如ID和属性)来获得用户(或物品)的嵌入。从而利用user和item的embedding进行协同召回。但是作者认为这种方法的固有缺点是:在user与item的interaction数据中潜伏的 协作信号(collaborative signal) 未在嵌入过程中进行编码。这样,所得的嵌入可能不足以捕获协同过滤效果。

让我们一起来看一下本论文是怎么利用数据中潜伏的协作信号的吧。

推荐算法被广泛的运用在各个领域中,在电商领域,社交媒体,广告等领域都发挥着至关重要的作用。推荐系统的核心内容就是根据用户以前的购买和点击行为来评估用户对一个物品的喜爱程度,从而针对每个用户进行个性化推荐。协同过滤算法认为历史行为相似的用户之间的兴趣是相同的,所以给用户推荐的是同类型用户的爱好,也就是UserCF,而ItemCF给用户推荐的是跟历史行为相近的物品。

传统的协同过滤方法要么是基于矩阵分解,要么是基于深度学习的,这两种方法都忽略了一个非常关键的信息---user和item交互的协作信号,该信号隐藏在user和item的交互过程中。原始的协同过毁昌滤方法忽略了这种信息,所以在进行user 和 item representation时就不足以较好的进行embedding。

本论文通过将用户项交互(更具体地说是二分图结构)集成到embedding过程中,开发了一个新的推荐框架神经图协同过滤(NGCF),该框架通过在其上传播embedding来利用user-item图结构。这种方法在用户项目图中进行高阶连通性的表达建模,从而以显式方式将协作信号有效地注入到embedding过程中。

在介绍模型之前先来讲解一下什么是useritem interaction以及什么是高阶的useritem interaction。

我们先看左颤余尘边的图,这个图就是useritem interaction,u1是我们待推荐的用户,用双圆圈表示,他交互过的物品有i1,i2,i3。在看右边这个树形结构的图,这个图是u1的高阶interaction图,注意只有l 1的才是u1的高阶连接。观察到,这么一条路径,u1 ← i2 ← u2,指示u1和u2之间的行为相似性,因为两个用户都已与i2进行了交互。而另一条更长的路径,u1←i2←u2←i4暗示u1可能会点击i4,因为他的相似用户u2之前已经购买过i4。另一方面,用户u1在l = 3这一层会更倾向于i4而不是i5,理由是i4到u1有两条路径而i5只有一条。

当然这种树结构是不可能通过构建真正的树节点来表示的,因为树模型比较复杂,而且结构很大,没法对每个用户构建一个树,茄禅这样工作量太大了。那么怎么设计模型结构可以达到跟这个high-order connectivity的效果呢,这个就要运用到神经网络了。通过设计一个embedding propagation layer来表示这种embedding 在每个层之间的传递。

还是拿上面那张图举例子,堆叠两层可捕获u1←i2←u2的行为相似性,堆叠三层可捕获u1←i2←u2←i4的潜在推荐以及信息流的强度(由层之间的可训练权重来评估),并确定i4和i5的推荐优先级。

这个跟传统的embedding是一样的,都是对原始的userID和itemID做embedding,跟传统embedding不同的地方是,在我们的NGCF框架中,我们通过在用户-项目交互图上传播embedding来优化embedding。 由于embedding优化步骤将协作信号显式注入到embedding中,因此可以为推荐提供更有效的embedding。

这一层是本文的核心内容,下面我们来进行详细的解读。

从直观上来看,用户交互过的item会给用户的偏好带来最直接的依据。类似地,交互过某个item的用户可以视为该item的特征,并可以用来衡量两个item的协同相似性。 我们以此为基础在连接的用户和项目之间执行embedding propogation,并通过两个主要操作来制定流程:消息构建和消息聚合。

Message Construction(消息构建)

对于连接的user-item对(u,i),我们定义从i到u的消息为:

其中ei是i的embedding,eu是u的embedding,pui是用于控制每次传播的衰减因子,函数f是消息构建函数,f的定义为:

其中W1和W2用来提取有用的embedding信息,可以看到W2控制的i和u直接的交互性,这使得消息取决于ei和eu之间的亲和力,比如,传递更多来自相似项的消息。

另一个重要的地方是Nu和Ni,pui = 1/ 。Nu和Ni表示用户u和item i的第一跳邻居。 从表示学习的角度来看,pui反映了历史item对用户偏好的贡献程度。 从消息传递的角度来看,考虑到正在传播的消息应随路径长度衰减,因此pui可以解释为折扣因子。

Message Aggregation

聚合方法如下 :

其中 表示在第一嵌入传播层之后获得的用户u的表示。激活函数采用的是leakyrelu,这个函数适合对pos和neg信号进行编码。

另一个重要的信息是 ,它的定义如下:

这个信息的主要作用是保留原始的特征信息。

至此,我们得到了 ,同样的方法,我们也能获得 ,这个都是first order connectivoty的信息。

根据前面的计算方式,我们如果将多个Embedding Propagation Layers进行堆叠,我们就可以得到high order connectivity信息了:

计算方式如下:

当我看到这里的时候,我的脑子里产生了一个大大的疑惑,我们在计算第l层的eu和ei时都需要第l-1层的信息,那么我们怎么知道ei和eu在第l层是否存在呢?也就是说出现u侧的总层数l大于i侧总层数的时候,我们如何根据第l-1层的ei来计算第l层的e呢?经过思考,我感觉应该是这样的,训练样本应该是一条path,也就是这个例子是u1 ← i2 ← u2 ← i4这条path,所以可以保证u1跟i4的层数l是一样的,所以不存在上面那个层数不匹配的问题。

ps:看到后面的实验结果才知道L是固定的所以每一层都不会缺失。

还有一个就是,不同层之间的W是不一样的,每一层都有着自己的参数,这个看公式就知道,理由就是我们在提取不同层信息的时候需要不同的W进行信息提取。

另一个疑惑是pui到底是不是每一个l层都一样?这里看公式好像就是指的是第一跳的Nu和Ni进行就计算的结果。

这部分内容是为了在进行batch训练的时候进行矩阵运算所推导的数学过程,其实跟之前我们讲的那个过程在数学上的计算是完全一样的,你想象一下,如果不用矩阵进行运算,在训练过程中要如何进行这么复杂的交互运算。

当进行了l层的embedding propagation后,我们就拥有了l个eu和l个ei,我们将他们进行concate操作:

这样,我们不仅可以通过嵌入传播层丰富初始嵌入,还可以通过调整L来控制传播范围。

最后,我们进行内积计算,以评估用户对目标商品的偏好:

采用的是pair-wise方式中的bpr loss:

推荐系统中——矩阵分解

在推荐系统中基于矩阵分解的推荐系统在电商领域的应用基于矩阵分解的推荐系统在电商领域的应用我们经常会拿到一种数据是user—item基于矩阵分解的推荐系统在电商领域的应用的表格,然后对应基于矩阵分解的推荐系统在电商领域的应用的是每位user对每个item的评分,如下图基于矩阵分解的推荐系统在电商领域的应用

对于这个问题我们通常会选择矩阵分解的方法来解决。

我们常见的推荐系统矩阵分解有BPR、SVD(funkSVD)、ALS、NMF、WRMF。

接下来就来看看推荐系统中常用的几种矩阵分解的区别,主要通过公式、特点和适合哪种数据这几个方面来讲。

对于 矩阵 进行SVD分解,把矩阵 分解为:

其中 是矩阵 中较大的部分奇异值的个数,一般会远远的小于用户数和物品数。如果我们要预测第 个用户对第 个物品的评分 ,则只需要计算 即可。通过这种方法,我们可以将评分表里面所有没有评分的位置得到一个预测评分。通过找到最高的若干个评分对应的物品推荐给用户。

可以看出这种方法简单直接。但是有一个很大的问题我们忽略了,就是SVD分解要求矩阵是稠密的,也就是说矩阵的所有位置不能有空白。所以传统的SVD实际上在推荐系统中还是比较难用的。

前面说到,传统的SVD要求的矩阵是稠密的。那么我们现在要解决的问题就是避开矩阵稀疏的问题。

FunkSVD是将矩阵 分解为两个矩阵 ,这里采用了线性回归的思想。我们的目标是让用户的评分和用矩阵乘积得到的评分残差尽可能的小,也就是说,可以用均方差作为损失函数,来寻找最终的 。

对于某一个用户评分 ,用FunkSVD分解,则对应的表示为 ,采用均方差做为损失函数,则我们期望均方差尽可能小:

在实际应用中,我们为了防止过拟合,会加入一个L2的正则化项,因此正式的FunkSVD的优化目标函数 :

其中 为正则化稀疏,需要调参。对于这个优化问题,我们一般通过梯度下降法来进行优化得到结果。

将上式分别对 求导,然后利用梯度下降法迭代, 的迭代公式如下:

还有许多基于FunkSVD的方法进行改进的,例如BiasSVD、SVD++等,这里就不细说了。

在很多推荐场景中,察锋旅我们都是 基于现有的用户和商品之间的一些数据,得到用户对所有商品的评分,选择高分的商品推荐给用户 ,funkSVD算法的做法最基本的做法,使用起来十分有效,而且模型的可扩展性也非常优秀,其基本思想也能广泛运用于各种场景中。并且对于相似度计算方法的选择,有多种相似度计算方法,每种都有对应优缺点,可针对不同场景使用最适合的相似度计算方法。由于funkSVD时间复杂度高,训练速度较慢败凳,可以使用梯度下降等机器学习相关方法来进行近似计算,以减少时间消耗。

参考:

在有些推荐场景中,我们是为了在千万级别的商品中推荐个位数的商品给用户,此时,我们更关心的是用户来说,哪些极少数商品在用户心中有更高的优先级,也就是排序更靠前。也就是说,我们需要一个排序算法,这个算法可以把每个用户基闷对应的所有商品按喜好排序。BPR就是这样的一个我们需要的 排序算法 。

在BPR算法中,我们将任意用户 对应的物品进行标记,如果用户 在同时有物品 和 的时候点击了 ,那么我们就得到了一个三元组 ,它表示对用户 来说, 的排序要比 靠前

BPR是基于矩阵分解的一种排序算法,但是和funkSVD之类的算法比,它不是做全局的评分优化,而是 针对每一个用户自己的商品喜好分贝做排序优化 。因此在迭代优化的思路上完全不同。同时对于训练集的要求也是不一样的, funkSVD只需要用户物品对应评分数据二元组做训练集,而BPR则需要用户对商品的喜好排序三元组做训练集 。

参考:

ALS是交替最小二乘的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。如:将用户(user)对商品(item)的评分矩阵分解成2个矩阵:user对item 潜在因素的偏好矩阵(latent factor vector),item潜在因素的偏好矩阵。

假设有m个user和n个item,所以评分矩阵为R。ALS(alternating least squares)希望找到2个比较低纬度的矩阵(X和Y)来逼近这个评分矩阵R。

ALS的核心就是这样一个假设:打分矩阵是近似低秩的。换句话说,就是一个 的打分矩阵可以由分解的两个小矩阵 和 的乘积来近似。这就是ALS的矩阵分解方法。

为了让X和Y相乘能逼近R,因此我们需要最小化损失函数(loss function),因此需要最小化损失函数,在此定义为平方误差和(Mean square error, MSE)。

一般损失函数都会需要加入正则化项(Regularization item)来避免过拟合的问题,通常是用L2,所以目标函数会被修改为:

上面介绍了“最小二乘(最小平方误差)”,但是还没有讲清楚“交替”是怎么回事。因为X和Y都是未知的参数矩阵,因此我们需要用“交替固定参数”来对另一个参数求解。

先固定Y, 将loss function对X求偏导,使其导数等于0:

再固定X, 将loss function对Y求偏导,使其导数等于0:

然后进行迭代。

在实际应用中,由于待分解的矩阵常常是非常稀疏的,与SVD相比, ALS能有效的解决过拟合问题 。基于ALS的矩阵分解的协同过滤算法的可扩展性也优于SVD。与随机梯度下降的求解方式相比,一般情况下随机梯度下降比ALS速度快;但有两种情况ALS更优于随机梯度下降:(1)当系统能够并行化时,ALS的扩展性优于随机梯度下降法。(2)ALS-WR能够有效的处理用户对商品的隐式反馈的数据。

但是ALS算法是无法准确评估新加入的用户或商品。这个问题也被称为冷启动问题。

参考:

非负矩阵分解(Non-negative Matrix Factorization,NMF)算法,即NMF是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法。NMF中要求原始的矩阵V的所有元素的均是非负的,并且矩阵V可以分解出的两个小矩阵也是非负的,

给定一个打分矩阵R,NMF的目标是求解两个非负秩矩阵  最小化目标函数如下:

计算 的梯度如下:

其中:

采用梯度下降的参数优化方式, 可得W以及H的更新迭代方式见下式:

在矩阵分解基础上,加入了隐向量的非负限制。然后使用非负矩阵分解的优化算法求解。

要用NMF做矩阵分解有一个很大的前提—— 用户item之间的评分矩阵要求是非负并且分解出的小矩阵也要满足非负约束 。NMF分解是对原矩阵的近似还原分解,其存在的问题和ALS相像,对于未知的评分预测相当不准确。

参考:

在有些场景下,虽然 没有得到用户具体的评分,但是能够得到一些类似于“置信度”的信息(也称为隐式反馈信息) ,例如用户的游戏时长、观看时长等数据。虽然时长信息不能直接体现用户的喜好,但是能够说明用户喜欢的概率更大。在此场景下,用户-物品记录可以表示为一个置信度 和一个0-1指示量 (用户-物品是否有交互),如果用户-物品没有交互,那么置信度就为0。

“带权”就是根据置信度计算每条记录对应损失的权重,优化的目标函数如下:

权重通过置信度计算得到,可以使用 。由于未发生的交互也存在于损失函数中,因此惯用的随机梯度下降存在性能问题,为此采用ALS来优化模型,因此训练过程如下:

(1)更新每个用户的向量:

(2)更新每个物品的向量:

前面除了BPR以外,我们讲的算法都是针对显式反馈的评分矩阵的,因此当数据集只有隐式反馈时,应用上述矩阵分解直接建模会存在问题。而WRMF就可以解决隐式反馈的问题。

参考:

基于现有的用户和商品之间的一些数据,得到用户对所有商品的评分,选择高分的商品推荐给用户,可以根据以往的评分矩阵做全局的评分优化。有多种从SVD的改进算法可选择,如:表示biasSVD、SVD++、TimesSVD等

funkSVD可以解决矩阵稀疏的问题,但是其时间复杂度高,训练速度较慢,可以使用梯度下降等机器学习相关方法来进行近似计算,以减少时间消耗。

ALS算法和SVD的使用场景相似,也是基于用户——商品评分数据得到全局用户对商品的评分。

ALS能有效的解决过拟合问题,但是ALS算法是无法准确评估新加入的用户或商品。这个问题也被称为冷启动问题。

要用NMF做矩阵分解有一个很大的前提—— 用户item之间的评分矩阵要求是非负并且分解出的小矩阵也要满足非负约束 。NMF分解是对原矩阵的近似还原分解,NMF用法和SVD、ALS相似。

NMF存在的问题和ALS相像,对于未知的评分预测相当不准确。

BPR是基于矩阵分解的一种排序算法,但是,它不是做全局的评分优化,而是 针对每一个用户自己的商品喜好分贝做排序优化 。因此在迭代优化的思路上完全不同。 BPR需要用户对商品的喜好排序三元组做训练集 。

当 没有得到用户具体的评分,但是能够得到一些类似于隐式反馈信息时,就可使用WRMF进行矩阵分解。

本站内容来源于互联网,由于内容是机器自动获取,无法一一甄别,如果有侵权的内容,请联系站长处理