一个被遗忘的推荐R包:recommanderlab(一)
计较告白和推荐系统城市用到一个算法,协同过滤。
协同过滤是推荐算法的基石,固然当前炒得火热的隐语义和图的随机游走挡住了根基的邻域算法,基于物品的协同过滤依然有他不行替代的优势。电子商务开拓推荐算法目标是想让用户拥有本性化的商店,亚马逊的人曾经说过我们有几多用户就有几多个商店,说的就是推荐。
回过甚来说说告白,计较告白的本质是audience
selection,也就是通过给用户展示他感乐趣的告白,来提高各环节的转化率以便到达提高销售额的目标;尤其是在RTB日益火热的本日,告白公司对技
术的依赖性越来越大,动态竞价算法、cookie look-alike model雷同模子质量的坎坷抉择了DSP获取流量的本钱。个中cookie
look-alike就涉及到协同过滤的算法,这主要因为DSP太依赖于DMP,而当前DMP平台的缺乏迫使各大告白公司都在做本身所谓的DMP,这就面
临一个数据匮乏的问题,依据不完整的欣赏行为和碎片化的点击行为不能有效的刻画用户的行为属性;所以告白公司在做竞价算法的时候会更多的参考有限的告白点
击数据,这就需要操作cookie
look-alike对有限的cookie数据举办扩展,预估每个cookie对每支告白(也就item)的转化概率,然后依据概率计较出
价;cookie look-alike主要处理惩罚工具也为一个user-item的矩阵;
跟本性化告白差异,电商网站做站内推荐拥有富厚的显式和隐式的数据,很洪流平上为模子的精度判断基本。对比userCF,电商更倾向于用
itemCF算法,这主要因为userCF需要维护user-user的相似度矩阵,而itemCF需要维护item-item的相似矩阵,我们更倾向于
选择物品变革相对较小的itemCF算法,虽然尚有其他原因,itemCF相对更容易表明;假如我们换成给一个新闻网站做推荐,鉴于新闻的时效性和高更新
频率,我们就只能用userCF了;
先容一下这个被遗忘的R包recommenderlab,Michael
Hahsler大神已经有近两年时间没有更新了,以lab为后缀让我们嗅到弄弄的学术味,真应该多为我们这些做七爷应用的想想;还好,因为R开源,所以我
们可以去改这个包底层的代码,最焦点的就是物品相似度的计较代码,剩下的就是计较的效率了,这部门大概需要一些矩阵解析的能力;
下图该包主要呼吁的框架图
该包主要处理惩罚的工具为ratingMatrix,ratingMatrix有两种:realRatingMatrix和
binaryRatingMatrix,reaRatingMatrix是一个评分矩阵,以真实的评分数据反应在矩阵傍边,而
binaryRatingMatrix为布尔矩阵,相当于把realRatingMatrix中大于0的数值赋值为1;小我私家以为这个包较大利益在于数据格
式转化与效率;
#生成一个100*10的矩阵,缺失值为NA data=sample(c(1:5,NA),1000,replace=TRUE) test.m=matrix(data,ncol=10,dimnames=list(user=paste("user", 1:100, sep='.'), item=paste("item", 1:10, sep='.'))) head(test.m) item user item.1 item.2 item.3 item.4 item.5 item.6 item.7 item.8 item.9 item.10 user.1 NA 4 5 NA 3 1 1 4 2 3 user.2 3 NA 4 3 1 5 4 1 NA 3 user.3 1 5 NA 3 4 4 4 3 4 3 user.4 1 4 2 NA 2 2 3 1 3 1 user.5 5 NA 4 5 4 4 2 5 5 5 user.6 1 1 4 NA 3 NA 4 2 4 1 #转换为realRatingMatrix矩阵,储存空间小,计较效率高 rrm <- as(test.m, "realRatingMatrix") rrm 100 x 10 rating matrix of class ‘realRatingMatrix’ with 828 ratings. #可以很利便把realRatingMatrix转化成list和data.frame list.m=as(rrm,"list") df.m=as(rrm,"data.frame") #按行的均值把矩阵尺度化 norm.m=normalize(rrm) #生成图像查察 image(norm.m,mian="Normalized Ratings") #转换成binaryRatingMatrix,需要设定阈值,设定为3,仅大于便是3的数据转成1,其余为0 bina.m=binarize(rrm, minRating=3) #还可以用colCounts(), rowCounts(), colMeans(), rowMeans(), colSums() and rowSums()等函数做队列的运算
#p#分页标题#e#
recommenderlab这个包主要针对工具的转化和数据处理惩罚的效率;关于协同过滤算法部门我们可以本身写,也可以改这个包的底层代码;
#有四种要领针对realRatingMatrix生成推荐模子,IBCF:基于物品的协同过滤推荐 #POPULAR:风行物品推荐;RADOM:任意推荐;UBCF:基于用户的协同过滤推荐 recom=Recommender(rrm,method="IBCF") names(getModel(recom)) [1] "description" "sim" "k" [4] "method" "normalize" "normalize_sim_matrix" [7] "alpha" "na_as_zero" "minRating" #具体看一下模子内里的参数,许多都是默认好的 getModel(recom) $description [1] "IBCF: Reduced similarity matrix" $sim 10 x 10 sparse Matrix of class "dgCMatrix" [[ suppressing 10 column names ‘item.1’, ‘item.2’, ‘item.3’... ]] item.1 . -0.03882699 -0.13908454 -0.04917893 -0.13065174 -0.12928351 item.2 -0.038826991 . 0.01670524 -0.10893737 -0.10741038 -0.26386049 item.3 -0.139084537 0.01670524 . -0.01686413 0.03345644 -0.12531748 item.4 -0.049178932 -0.10893737 -0.01686413 . -0.36285342 0.08927242 item.5 -0.130651738 -0.10741038 0.03345644 -0.36285342 . -0.16148969 item.6 -0.129283510 -0.26386049 -0.12531748 0.08927242 -0.16148969 . item.7 -0.100984263 -0.05588996 -0.19979560 -0.25537929 -0.05622277 -0.01664353 item.8 0.007492313 -0.23097214 -0.16057226 -0.11028565 -0.10947370 -0.11224345 item.9 -0.108899354 -0.04793808 -0.22530147 0.05270979 -0.28518825 -0.16903132 item.10 -0.237080548 -0.17989050 -0.22045501 -0.13733639 0.10795725 -0.06481016 item.1 -0.10098426 0.007492313 -0.10889935 -0.23708055 item.2 -0.05588996 -0.230972138 -0.04793808 -0.17989050 item.3 -0.19979560 -0.160572262 -0.22530147 -0.22045501 item.4 -0.25537929 -0.110285649 0.05270979 -0.13733639 item.5 -0.05622277 -0.109473702 -0.28518825 0.10795725 item.6 -0.01664353 -0.112243454 -0.16903132 -0.06481016 item.7 . -0.041411436 -0.11997061 -0.13959761 item.8 -0.04141144 . -0.08999017 -0.11679011 item.9 -0.11997061 -0.089990166 . -0.06828637 item.10 -0.13959761 -0.116790112 -0.06828637 . $k [1] 30 $method [1] "Cosine" $normalize [1] "center" $normalize_sim_matrix [1] FALSE $alpha [1] 0.5 $na_as_zero [1] FALSE $minRating [1] NA #Recommender会自动界说好模子参数帮你跑,这不是我们想要的;有时候我们想调动一下相似度 #的计较方法,加IUF来低落风行物品的相似度计较等
模子和评估部门会在第二部门分享…..
参考资料:
[1] 项亮:推荐系统实战
[2]R Packages:recommenderlab