您当前的位置:首页 > 新闻资讯 > 产品动态 > 正文

【东网技术大咖带您走进大数据】大数据挖掘技术分享-APP推荐模型应用

发布时间: 2016-12-23 15:56:13  
分享到:

 
 

 

 
专栏介绍

新东网自2001年成立以来,掌握大数据、云计算、通信、物联网及区块链等信息技术,拥有一支逾16年经验的强大IT团队。为沉淀企业技术实力,继续发挥行业优势,《东网快讯》特邀新东网技术大咖带您走进这些先进信息技术,揭秘新东网16年来的技术成果,每周五发布

 

 

新东网已经开发并运营智慧福州、智慧仓山、智慧中山、流流顺、中山好生活、派金宝等平台和App。接下来就为大家揭秘APP推荐模型应用。

 

模型设计思路
 

 

APP推荐模型训练时,采用了以下几种方法:

 

基于项目的协同过滤算法(1-0)

 

基于项目的协同过滤算法(1-0)与偏好的IBCF算法相似,不同的是,算法是根据客户是否使用item来计算不同item之间的相似性矩阵(相当于使用余弦公式计算相似度)。由于计算时,矩阵只有1-0两种值,存储较小,同时1-0矩阵的矩阵计算效率较优(矩阵的转置,矩阵乘法以及crossprod算法),因此该算法可方便地实现对大量客户的APP使用做算法推荐。

 

基于项目的协同过滤算法(偏好度)

 

基于item的协同过滤算法,通过用户对不同item的评分来评测item之间的相似性,计算形成item之间的相似性矩阵,根据客户对item的偏好列表做出推荐。实际上是,给用户推荐和他之前喜欢的item相似的item。

 

基于用户的协同过滤算法(偏好度)

 

基于用户的协同过滤算法,通过不同用户对item的评分来评测用户之间的相似性,计算形成用户与用户之间的相似性矩阵,根据最近邻的偏好列表做出推荐。实际上是,给用户推荐与他兴趣相似的其他用户喜欢的item。

 

基于关联规则的推荐算法(1-0)

 

基于关联规则的推荐Association Rule-based Recommendation)是以关联规则为基础,把客户已使用过的item作为规则头,规则体作为推荐对象。关联规则挖掘可以发现不同item在使用过程中的相似性。关联规则就是在一个交易类型的数据集合中统计使用了某itemA的交易中有多大的比例客户同时使用了某itemB,其直观意义在于用户在某时间周期内,使用某些item的同时有多大的倾向去使用另外一些item。

 

由于算法只对“使用过”感兴趣,数据只要生成1-0(或者根据某些偏好标准判断客户是否使用过1-0);另外,算法只需要对样本数据以离线的形式进行分析采集、发现规则,无需对全部数据集做算法计算,因此计算效率及存储空间较优。发现规则后,即可定义向满足规则头的客户推荐规则体的item。

 

模型实施
 

 

基于项目的协同过滤算法(1-0)

 

为测试该算法的计算效率,使用的数据为泉州-丰泽(595-501)的APP使用数据,整体计算约在10分钟内完成,算法步骤如下:

1)读入交易类型数据,数据形式类似user_id,app_id;

2)将数据转换成user_id~app_id的矩阵M,其中Rij代表客户i对APPj是否使用过,未使用过的使用0进行填充;

3)计算各APP(列)之间的模mod;

4)计算各列除以该列的模,计算各APP的向量MM;

5)使用crsooprod计算列向量的内积,得到APP之间的相似度矩阵S;

6)推荐列表:R = M %*% S%*%为矩阵乘法)。

 

基于Popular、UBCF、IBCF偏好度的协同过滤算法

 

由于APP定义为客户规模排名前100个的APP,因此,这里同时使用了流行度的算法作为IBCF、UBCF的参考算法。

 

使用recmomenderlab包对Popular、UBCF、IBCF三种算法进行训练:

 

1)读入user_id,app_id,rating的数据(实际中,Popular及IBCF算法都可对8万个客户进行推荐,而UBCF算法计算推荐时耗费大量时间,因此在测试的过程中,使用的4.5万客户的APP使用数据);

2)将数据转化为USERID~APPID的形式,值为rating,其他用0进行填充(fill=0);

3)将数据split为两份,80%的数据为训练集,20%的数据为测试集,分别对三种算法的预测rating与实际rating做误差计算;

4)对三种算法做topNList的4-折cross验证,计算混淆矩阵的TPR、FPR。

 

3、基于关联规则的推荐算法

 

使用arules包对客户APP使用数据进行规则发现:

 

1)读入数据:user_id,app_id;

2)将数据转换成transactions形式(交易类型,user_id相当与订单号,app_id相当于订单中的一种商品,一个订单中可以有多种商品,相当于一个客户有多个APP使用记录);

3)对支持度为10%,20%,30%,以及置信度为70%,80%,90%进行规则发现;

4)对生成的规则进行剪枝(若规则1包含着规则2,且规则2的提升度小于等于规则1的提升度,则规则2为冗余规则,只需要保留规则1);

5)得到规则列表。

 

模型输出
 

 

IBCF/UBCF/POPULAR算法的误差分析

 

对基于偏好度的IBCF协同过滤、UBCF、流行度算法对样本数据(客户数4.5万,APP数100)实施效果评估:

 

1)评分rating效果(80%训练集,20%测试集,预测app数目为50):

             RMSE       MSE       MAE

POPULAR 0.5756349 0.3313555 0.3132222

IBCF    0.5347688 0.2859777 0.3108677

UBCF    0.4871018 0.2372681 0.2637091

 

从以上的误差率来看,IBCF,UBCF算法的误差率最小。

 

2)4-折交叉验证topNList效果(将数据集分为4份,运行4次,每次利用其中3份作为模型的训练集,1份作为模型的测试集,对模型的效果进行交叉验证):

运行细节如下:

POPULAR run

         1  [0.2sec/8.89sec]

         2  [0.19sec/8.83sec]

         3  [0.19sec/8.92sec]

         4  [0.19sec/8.82sec]

IBCF run

         1  [1.24sec/2.89sec]

         2  [1.23sec/2.88sec]

         3  [1.22sec/2.89sec]

         4  [1.26sec/2.88sec]

UBCF run

         1  [0.17sec/299.39sec]

         2  [0.16sec/299.66sec]

         3  [0.15sec/298.87sec]

         4  [0.17sec/297.14sec]

 

三种算法对各topN的真正率(TPR)、假正率(FPR)如下:

 


从上面的输出可以看出:

 

1.1、topNList推荐效果: IBCF > UBCF > Popular;

1.2、由于我们选取的APP是按照客户规模排名选取的前100个,而流行度的推荐算法也是根据APP的客户规模进行推荐的,因此在这里,流行度的topNList的推荐效果作为IBCF、UBCF算法的参考值;

1.3、UBCF算法在模型预测的时候,需要耗费大量的时间计算某个客户与其他客户的相识度(可以从模型运行的细节上看出),在这里,使用的4.5万个客户的效果。因此,若客户量较大的话,如直接对1600万APP使用客户进行UBCF计算,计算效率和存储空间对系统都是一个很大的挑战。

1.4、综上所述,在本例中,以基于流行度的算法和IBCF协同过滤算法效果最优,通用情况下,应该考虑使用IBCF算法。

 

关联规则算法得到的规则效果:

 

最终以30%的支持度,90%的置信度得到关联规则的1500条规则,如下形式(详细规则可见rulex.txt):

左件=>   右件     支持度 置信度 提升度

{815,9000382,9007654} => {9003934} 0.302 0.986 2.034

{162,20210162,700826,815,9001014,9007700} => {9008700} 0.303 0.966 1.883

 

规则解释:

 

在所有的客户中,有30.2%的客户同时使用了{815,9000382,9007654}APP,其中,98.6%的客户同时有使用{9003934}APP,因此,可对同时使用{815,9000382,9007654}的客户推荐{9003934}APP。

 

结论
 

 

1、由于模型训练使用的APP为客户规模前100个的APP,因此流行度算法的效果最好,若改变APP的选择定义,需要重新评估该算法的RMSE;

 

2、由于在我们的模型中,客户规模>>APP数量,根据以往的经验,IBCF算法比UBCF算法的效果要好;

 

3、根据上述模型效果评估及计算效率、存储方面综合考虑,可选择基于关联规则及IBCF的协同过滤算法,或者基于流行度及IBCF的协同过滤算法,实现APP的混合推荐系统。

 

 

分享到:
地址:福建省福州市铜盘路软件大道89号软件园A区26号楼 电话:0591-83519233 传真:0591-87882335 E-mail:doone@doone.com.cn
版权所有 新东网科技有限公司 闽ICP备07052074号-1 闽公网安备 35010202001006号