从分类,排序,top-k多个方面对推荐算法稳定性的评价
介绍
论文名: “classification, ranking, and top-k stability of recommendation algorithms”.
本文讲述比較推荐系统在三种情况下, 推荐稳定性情况.
与常规准确率比較的方式不同, 本文从还有一个角度, 即推荐算法稳定性方面进行比較.
具体
參与比較的推荐算法
包含:
- baseline
- 传统基于用户
- 传统基于物品
- oneSlope
- svd
比較方式
比較的过程分为两个阶段:
阶段一, 将原始数据分为两个部分, 一部分为已知打分, 还有一部分为未知打分, 用于预測.
阶段二, 在用于预測打分那部分数据中, 取出一部分数据, 增加到已知打分部分, 剩余部分仍然为预測部分.
比較阶段一中的预測结果和阶段二中预測结果的比較.
数据划分情况如图所是.
比較的方式
预測稳定性
预測性的评价方式有下面几种:
MAE, RMSE
分类稳定性
分类型的评价方式有下面几种:
准确率, 召回率, F-分数.
排名稳定性
排名型的评价方式有下面几种:
排名相关性, Spearman的ρ评价, Kruskal的γ评价, Kendall的τ评价.
前K项稳定性
前k项的评价方式有下面几种:
点击率稳定性(hit-rate), NDCG(normalized discounted cumulative gain).
比較的场景
稀疏性冲击
改变数据的稀疏性, 从几个方面比較这些推荐算法的稳定性.
结果如图所是.
基于内存的推荐算法和slopeone算法表现出强烈的不稳定性和对数据敏感性.
svd和baseline算法相对稳定.
评价数量冲击
改变第二阶段中新增加数据的数量, 比較两次实验的差异.
结果如图所是:
横坐标为比例, 即已知打分数据的倍数, 从10%到500%.
从图中能够看出, 在新增加的数据较少时, 各个推荐算法表现出高度的稳定性.
当新增加的数据较多时, 基于内存的推荐算法的稳定性不断下降.
相反, 基于模型的方法相对稳定.
打分分布冲击
除了新增加的数据外, 新增加的数据的数据分布也一定程度上影响了推荐算法的稳定性.
下表显示了改动数据分布的策略:
实验的结果例如以下:
从图中能够看出, 当增加的数据为随机时, 各个推荐算法都表现出相对较高的稳定性.
可是, 当增加的数据出现歪斜时, 基于内存的推荐算法的稳定性减少较快, 基于模型的推荐算法的稳定性基本保持不变.
算法參数冲击
对于推荐算法而言, 除了数据的因素外, 还有算法本身參数对算法稳定性的影响.
对于基于内存的算法, 类似用户/物品的数量影响着推荐算法的效果,
对于svd算法, 隐含属性的数量影响着推荐算法的结果.
实验通过改动推荐算法參数的方式进行比較, 结果如图所时:
对于top-K的比較, k值的大小也影响推荐算法的稳定性.
通过改动k的大小, 实验的结果如图所时:
实验结果表示:
对于改动算法的參数, 对svd算法的影响较少, 对于基于内存的算法影响较大.
改动top-k中k的大小, 对基于模型的推荐算法影响较小, 对于基于内存的推荐算法的稳定性影响较大.
总结
对于上面多种情况的比較.
基于模型的推荐算法在多种情况下, 稳定性较高, 特别时svd算法.
基于内存的推荐算法稳定性较差.
从分类,排序,top-k多个方面对推荐算法稳定性的评价的更多相关文章
- 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题
常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...
- pig询问top k,每个返回hour和ad_network_id最大的两个记录(SUBSTRING,order,COUNT_STAR,limit)
pig里面有一个TOP功能.我不知道为什么用不了.有时间去看看pig源代码. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggy ...
- pig中查询top k,返回每个hour和ad_network_id下最大两个记录(SUBSTRING,order,COUNT_STAR,limit)
pig里面是有TOP函数,不知道为什么用不了.有时间要去看看pig源码了. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggyb ...
- [LeetCode] Top K Frequent Elements 前K个高频元素
Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...
- 347. Top K Frequent Elements
Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...
- Top k问题(线性时间选择算法)
问题描述:给定n个整数,求其中第k小的数. 分析:显然,对所有的数据进行排序,即很容易找到第k小的数.但是排序的时间复杂度较高,很难达到线性时间,哈希排序可以实现,但是需要另外的辅助空间. 这里我提供 ...
- 经典面试问题: Top K 之 ---- 海量数据找出现次数最多或,不重复的。
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- [LeetCode] Top K Frequent Words 前K个高频词
Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted b ...
- 程序员编程艺术:第三章续、Top K算法问题的实现
程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha. 致谢:微软100题实现组,狂想曲创作组. 时间:2011年05月08日 ...
随机推荐
- 01背包【p1060】开心的金明
Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要 ...
- iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)
以前比较懒,遇到问题解决了就完事了,有些问题再次遇到时忘记了当初是怎么解决的,又要查各种资料来解决.好记忆不如烂笔头,不管简单还是复杂都记一下吧,所以决定写一篇常见问题总结,方便以后查阅.现在有点忙, ...
- 为什么我不使用Kubernetes的Ingress
为什么我不使用Kubernetes的Ingress 很不幸,据我所知Kubernetes的文档不是很完美,这就是为什么有很多同学在使用它的时候会遇到很多的坑,Ingress这个组件就是这些坑中的一个. ...
- 设计模式之装饰器模式(PHP实现)
/** * 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. * 这种模式创建了一个 ...
- Java源码阅读ArrayList
1简介 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAc ...
- 2017.10.13 git提交时忽略不必要的文件或文件夹
参考来自:git学习六:git提交忽略不必要的文件或文件夹 1.应用场景 创建maven项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如如下截图,实际开发中我们只需提交: ...
- Java Servlet 技术简介 from:IBM Dev
点评:讲的没有太听懂. from: http://www.ibm.com/developerworks/cn/education/java/j-intserv/index.html#resources
- Angular 学习笔记——ng-repeat 隔行换色
<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...
- 倍福TwinCAT(贝福Beckhoff)基础教程 松下官方软件开启报错伺服未就绪怎么办
一般是伺服到电机的动力线没接好(请查看动力线接线是否正确) 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线 ...
- 两种“新型”的javaweb后门(jspx和Java Logger)
利用这个可以突破st2下 强制jsp跳转login.jsp 利用jspx解决jsp后缀被限制拿shell - Hack Blog | 黑客博客http://www.hackblog.cn/post ...