陌路茶色/

App2Vec: Vector Modeling of Mobile Apps and Applications

本论文是Qiang Ma的博士论文简化版本,2016年发表在IEEE上。论文中通过构造用户的app使用行为序列来训练app的向量表示,其中在w2v的cbow中引入了权重来优化app2vec,将得到的app2vec用来对app进行聚类,并使用聚类的类别表示用户的app行为特征。

Abstract

我们设计了一种方式来建模app的向量化,受最近深度学习word2vec将word向量化的影响。我们的方法依赖于用户如何使用app,我们将每个用户使用app的时间序列作为document,并将word2vec应用在这些document上,但不同之处在于我们训练的上下文被加以权重,权重由后继app与当前app使用时间间隔来定义。我们将训练的app2vec应用在Yahoo上,显示app2vec体现出的app之间的语义关系和word2vec在word之间体现的语义信息相似;使用Yahoo的extensive human evaluation system表明提取出来最相似的app中有82%被认为是语义相关的,相对于bow(bag-of-word)方法提高了37%,相对于矩阵分解向量化app的方法提高了140%;最后我们使用app2vec去预测app安装转化率(app-install conversion),并将广告转换的准确率提高了5%。这是工业界首次将app向量化训练并使用的案例。

THE APP SIMILARITY PROBLEM

在移动的世界中,一方面用户过段时间会安装并尝试一些新的app,另一方面app开发者想让更多的额用户安装他们的app来增加他们的用户群。因此,app开发者如何让目标用户安装他们的app呢,更一般的说,app开发者如何发现对他们app感兴趣的用户呢,我们看如下一个例子:
屏幕快照 2019-10-08 下午10.28.57.png
从上面这个例子中我们可以看到用户X和Y更可能是目标广告主的一个更好的候选者,是因为他们使用了和广告主要投放app相似的app。然而,如何定义哪一个app和广告主的app相似呢?我们想去解决的一个基本的问题是:给定一个用户集U,$S_u$表示用户u的历史使用app的会话序列,对于其中每一个$s_i \epsilon S_u$被表示为$<u_i,a_j,t_s,t_e>$,即用户$u_i$从时间$t_s$到$t_e$使用了app $ a_j$,对于两个app $a_i$和$a_j$,我们想学习的是相似函数$sim(a_i,a_j)$。

有两个可能的方式可以解决这个问题:
Bag-of-words:一种使用app元信息(比如app的简介等)通过bow来计算app之间的相似性的方法。该方法有很多的缺点:app的文本信息被app开发者提供,因此每个app的文本信息的质量不一,且数据存在噪音,比如一个游戏类的app可能在描述中提到运营cafe店等,基于该信息我们就很难将这个app和真正的cafe店app区分开来;bow的另外一个缺点是该方法是基于特定语言的,比如使用不同语言的人们在使用的不同的语言开发的app,但他们的app使用行为可能是相似的,去定义这样跨语言的公共用户行为不得不为每一种语言构建一个不同的模型(没太理解,通过用户行为来定义两个app的相似性???好像有点偏,怎么扯到用户行为上了)。
Vectorization:学习app的潜在向量表示,这样任何一对app的距离都可以通过他们的潜在向量来计算。利用用户-app矩阵(用户使用app的历史),在这个矩阵中,对应的用户使用了该app,相应的值为1,否则为0,然后通过降维的方法获得app的潜在向量表示。
这两种方法的共同缺点是没有将app使用的上下文考虑进去,即学习不到这样的行为:相似的app可能有不同的描述,互补的app可能被使用在相似的上线文中但是其功能不同。在我们的模型中,我们建模app通过他们被使用的上下文,这些上下文由百万的用户生成。通过这样的上下文,我们学习到了每个app的潜在向量表示,两个向量之间的距离可以通过向量之间的相似度求得。

MOBILE APP MODELING – APP2VEC

app2vec

先讲一下如何构建序列(前面也提到过),比如下面这个例子,选取一个用户使用app的时间序列:
$$(a,g_1,a,g_2,a,g_3,b,g_4,c,g_5,a)$$
其中$a,b,c$为app,$g_i$表示两个app之间的会话间隔(时间间隔),这样的序列有两个问题:
1.在一个序列中一个app连续出现了多次,而我们构建该序列的目标是想利用和该app相近的其他app的信息(上下文),因此将连续重复的app只保留一个,变成如下所示:
$$(a,g_3,b,g_4,c,g_5,a)$$
2.在一个app的上下文中,如果其相邻的app与之的时间太长(也就是使用app a后,过了很长一段时间才使用app b),那么相邻的app和该app是没有太多联系的,这里需要引入权重来解决这个问题,下文会解释。
【此处重申一遍该论文使用这样的序列的直观原因(个人理解):1.当用户使用一个app后,在不久后使用了另外一个app,表明这两个app是有一定的联系的,比如功能互补的同类别app ; 2.用户使用的app序列类似,也就是说用户$u_1$的序列可能是(...,微博,微信,知乎,...),而用户$u_2$的序列可能是(...,微博,飞书,知乎,...),这两个序列中微信和飞书的上下文是一样的,通过w2v训练得到的结果就是微信和飞书的向量相似度非常高

word2vec原理请参考Stanford cs224 note1,相当的详细,这里省略。主要讲一下本论文使用CBOW针对该任务做的改进:
屏幕快照 2019-10-08 下午10.20.40.png
上图显示CBOW输入向量$\bar{v}$的求解以及输出的损失函数计算,其中$\bar{v}$的计算方式是取上线文的平均值,这里添加了权重,上下文$w_i$到中心词$w_t$的权重为:
$$r(w_i,w_t)=\alpha ^{l}$$
$\alpha$取0.8,$l$为上下文app $w_i$和中心app $w_t$之间的差距,可以是时间差(间隔的分钟数)
将$\bar{v}$的计算方式改变为如下所示:
屏幕快照 2019-10-08 下午10.26.50.png

app2vec Training Results

这小节讲述了如何评价一个embedding的好坏。第一种方法是选出和指定的app最相似的topN个app,人工观察是否语义相关,如下所示:
屏幕快照 2019-10-08 下午11.21.22.png
第二种方法是选取了1000个app对应最相似的app(top1)组成app对,按强相关,相关,不相关三个类别来人工进行分类,如下图所示:
屏幕快照 2019-10-08 下午11.14.01.png
第三种方法是使用analogy,即
$$man + king - woman = queen$$
结果如下所示:
屏幕快照 2019-10-08 下午11.16.34.png

APP2VEC IN APP-INSTALL ADVERTISING CONVERSION PREDICTION

当一个广告(这里我理解为广告投放策略)可用时,广告选择算法需要评估每一个合格的广告的点击概率以及点击后转化率(即安装该应用),一个典型的广告选择方法是通过预期收益(expected revenue)来排序广告,对于广告$a_i$,其预期收益被如下计算:
$$E(a_i)=b_i \times p(click) \times p(conversion|click)$$
其中$b_i$为广告商为每一个点击的出价,点击概率和点击后的转化概率通常通过impression context(之前的信息,比如发布者的元信息,过往表现),当前用户画像和当前广告...
这部分我们关注
未完待续...

留下一条评论

暂无评论