Page 58 - 《软件学报》2020年第11期
P. 58
3374 Journal of Software 软件学报 Vol.31, No.11, November 2020
质量、库依赖、设备/用户要求、能耗处理、界面复杂度、应用描述、市场指标这 9 个维度选出共计 108 项数
据特征,采用多种回归模型融合的方法对用户接受度进行预测,并挖掘数据特征与用户接受度之间的线性与非
线性关联.
同样选用豌豆荚数据集,包括 2014 年 5 月 1 日~9 月 30 日用户的下载、更新、卸载等操作行为数据.在爬
取对应的安装包并进行反编译等处理后,获取包括第三方库 [41] 在内的代码相关指标.进一步爬取应用的网页描
述信息,并提取数据特征和用户接受度指标.最终获得了 9 824 个应用的完整有效信息,用于预测模型的训练和
测试.将数据集随机分为 3 个子集,即一个包含 9 000 个应用的训练集,一个包含 500 个应用的测试集和一个包
含 324 个应用的验证集.
在成功提取 108 种特征之后,一个简单的做法是直接用这些特征训练模型.考虑到一些特征可能彼此之间
高度相关,从而导致共线性等问题,严重影响模型的鲁棒性和个体特征的可解释性,因此在训练预测模型之前,
先对特征进行相关性分析,并以此为基础进行过滤,最后得到 79 个特征用于后续预测.
为了达到指导开发的目的,需要预测模型具有较好的可解释性,因此选取经典的机器学习算法,包括 Lasso
回归、岭回归和随机森林算法,来预测应用的用户接受度.其中,Lasso 回归 [42] 和岭回归 [43] 是标准的线性回归模
型,采用相同的损失函数,但使用不同的正则项.模型学到的变量系数能够体现相应特征的重要性.由于在训练
过程中,Lasso 回归模型会对特征进行选择,而岭回归模型不会,因此二者生成的变量系数会有所不同.但由于两
种回归模型产生的系数的正负符号基本一致,因此对符号的判断更为可靠.进一步地,由于有些特征可能会与用
户接受度指标之间存在非线性关系,因此在线性模型之外引入随机森林算法 [44] ,在解决非线形回归问题的同时,
保持变量的可解释性.以均方误差(mean square error,简称 MSE)和肯德尔等级相关系数(Kendall’s tau [45] ,简称τ
值)作为模型评价指标.
作为比较,采用随机猜测算法作为基线算法.例如,对于测试集中的每个应用,可以简单猜测其卸载率为 0,并
计算相应的 MSE;同样地,也可以简单猜测卸载率为 0.5 或 1.在不同的猜测策略中,选择效果最好的一种(即产生
最低的 MSE)作为比较基线.在排名效果的比较方面,对测试集中的应用进行随机排序,计算τ 值后,与实际观测
值比较.实验结果可见表 2.
Table 2 Prediction results of user acceptance
表 2 用户接受度预测结果
下载量(download percentile) 卸载率(U-I ratio) 好评率(like ratio)
预测模型
τ 值 MSE τ 值 MSE τ 值 MSE
Lasso 回归 0.236 0.080 0.280 0.028 0.150 0.054
岭回归 0.220 0.084 0.314 0.027 0.135 0.061
随机森林 0.316 0.070 0.331 0.025 0.252 0.047
基线算法 −0.011 0.091 −0.016 0.075 0.010 0.075
从实验结果来看,MSE 越低、τ值越高,表明算法效果越好.因此 Lasso 回归、岭回归和随机森林算法的模型
效果均明显优于基线算法,这验证了基于应用特征建立的用户接受度预测模型的有效性.其中,从下载量、卸载
率和好评率来看,随机森林算法的效果均优于两种线性回归模型.
在通过预测模型建立数据特征与用户接受度指标之间的关联后,可以通过识别单个特征对每个指标的影
响来验证特征与指标之间的相关性.具体而言,在使用 R 语言训练随机森林模型后,可以通过 rf$importance 指令
得到每个特征的%IncMSE 数值,表明当该特征发生重新排列时,MSE 发生的变化.%IncMSE 值越大,表明相应变
量对模型输出越为重要.对于随机森林模型选出的重要变量,若该变量也被 Lasso 模型选择,则可以进一步判断
其相关性方向.通过这一方法,为 3 个用户接受度指标选出了包括 SDK 版本、调用 Android API 的数量、要求
权限的数量、代码耦合程度、描述文本长度等 44 个特征.通过进一步分析每项特征与具体指标之间的相关性,
可以为开发者提供改进应用的建议.例如,应用市场中介绍图片的数量、文本描述的长度、描述标签的个数都
与用户下载量之间存在正相关,这表明开发者可以使用更多的图片、更为丰富的描述信息来展示应用的功能特
性.又如,调用 Android API 的数量、目标 SDK 的版本都与用户接受度之间存在正相关,开发者可以考虑更多地