【论文笔记】Diversified Third-Party Library Prediction for Mobile App Development

原文作者:Qiang He, Bo Li, Feifei Chen, John Grundy, Xin Xia, Yun Yang

原文标题:Diversified Third-Party Library Prediction for Mobile App Development

原文来源:IEEE TSE 2020

原文链接:https://ieeexplore.ieee.org/abstract/document/9043686

Diversified Third-Party Library Prediction for Mobile App Development

移动app开发人员同样面临着信息过载的问题:从海量的第三方库中找出能够满足他们开发需求的第三方库。有些研究方法采用协同过滤算法进行预测,作者使用了矩阵分解算法(MF-based)进行预测,但是结果缺乏多样性,一小部分非常流行的第三方库主导了预测结果。较低的多样性限制了预测的可用性。因此作者设计了一个新的MF-based方法,LibSeek。采用了自适应加权机制,抵消第三方库的流行度造成的影响。

研究背景

第三方库(Third-party libraries,TPLs)使得app开发者能实现很多功能。对于开发者来说,在大量的第三方库中找到满足自己需求的库非常费时费力,而且有些库之间还存在着依赖关系,找出这些依赖关系也非常耗时。有些工作(LibRadar,LibD,LibPecker,LibScout)能够分析检测app中使用的TPLs。普遍认为找出有用的TPLs是比较困难的。

作者研究发现,TPLs的使用有一定的参考模式,比如facebook和picasso,一个用于社交,一个用于图像视频的处理,这两个libraries通常一起使用。作者构建了一个MALib的数据集,包括GoolePlay上61722个移动app,725502个app使用libraries的记录,还有这些app使用的827个libraries。选择使用超过10个libraries的app,共31432个app。然后使用SGD、ALS、BPR三种MF-based方法进行TPL预测。结果发现推荐结果的32.12%都是非常流行的libraries,只占1%,作者称之为popularity bias issue。经过研究,作者认为这是有用MALib数据集中的长尾分布造成的:29.91%的app-library使用记录中的libraries占所有libraries的1%。

作者认为,推荐流行的libraries给开发者意义不大,因为开发者很有可能对这些库已经很熟悉了,而且已经明确了这些库对他们的app是否有效。所以推荐的结果需要更丰富的多样性。

作者使用SGD、ALS、BPR三种MF-based方法进行了初步实验,实验结果表明了MF-based方法对于TPLs推荐的有效性,平均召回率达到了37.98%。但是只有一小部分的TPLs被推荐到,很大一部分TPLs几乎没有让开发者看到。这是一个急需解决的问题,因为推荐常见的libraries对于开发者意义不大。

问题定义

使用矩阵M表示app-libraries usage,有m个app,n个libraries。如果 r u , i = 1 r_{u,i} = 1 ru,i=1表示app u使用了libraries i,否则为0。令A为M中的所有app集,L为M中所有的libraries集。目标是对每一个app u,从L中选择k个libraries。

对于矩阵M,矩阵分解在一个隐空间中建模app和libraries,每一个app/libraries表示为一个f维的向量。令向量 x u ∈ R f x_{u} \in \mathbb{R}^{f} xuRf表示一个app,向量 y i ∈ R f y_{i} \in \mathbb{R}^{f} yiRf表示一个library,那么:

r ^ u , i = x u T ⋅ y i {\widehat{r}}_{u,i} = x_{u}^{T} \cdot y_{i} r u,i=xuTyi

写成矩阵就是:

M ≈ X T Y M \approx X^{T}Y MXTY

其中, X = { x 1 , x 2 , ⋯   , x m } ∈ R f × m X = \left\{ x_{1},x_{2},\cdots,x_{m} \right\} \in \mathbb{R}_{f \times m} X={ x1,x2,,xm}Rf×m Y = { y 1 , y 2 , ⋯   , y m } ∈ R f × n Y = \left\{ y_{1},y_{2},\cdots,y_{m} \right\} \in \mathbb{R}_{f \times n} Y={ y1,y2,,ym}Rf×n。在训练时,矩阵分解方法一般使用的损失函数为:

min ⁡ X , Y Loss = ∑ r u , i > 0 ( r u , i − x u T y i ) 2 + λ ( ∥ x u ∥ 2 + ∥ y i ∥ 2 ) \min_{X,Y}\text{Loss} = \sum_{r_{u,i} > 0}^{}\left( r_{u,i} - x_{u}^{T}y_{i} \right)^{2} + \lambda\left( \left. \parallel x_{u} \right.\parallel^{2} + \left. \parallel y_{i} \right.\parallel^{2} \right) X,YminLoss=ru,i>0(ru,ixuTyi)2+λ(xu2+

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值