从分类,排序,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日 ...
随机推荐
- MySQL注入工具sqlsus
MySQL注入工具sqlsus sqlsus是使用Perl语言编写的MySQL注入和接管工具.它可以获取数据库结构,实施注入查询,下载服务器的文件,爬取可写目录并写入后门,以及复制数据库文件等功能 ...
- 命令注入工具Commix
命令注入工具Commix 命令注入(Command Injection)攻击是针对Web应用的一种攻击方式.很多Web应用会读取用户提交的数据,然后传递到系统Shell,执行特定的操作,如为用户创 ...
- mysql中单表多timestamp设置default问题
mysql中,同一个表多个timesatmp字段设置default的时候,经常会报错. 一个表只能有一个设置default的字段. 但是有时只有一个字段设置default也会报错. 会报:Incorr ...
- Windows 8.1中WinRT的变化(二)——新增功能
首先我们来看看现有控件中新增的功能: FlipView编程方式切换时支持平滑滚动: 在Windows8中,FlipView在用手触控翻页的时候是有动画效果的,但当我们使用键盘或代码编程翻页时,却没有这 ...
- 死磕 Fragment 的生命周期
死磕 Fragment 的生命周期 本文原创,转载请注明出处.欢迎关注我的 简书 ,关注我的专题 Android Class 我会长期坚持为大家收录简书上高质量的 Android 相关博文.本篇文章已 ...
- axure产品原型图,元件库导入方法
axure是公司产品经理常用的软件,用来绘制产品原型图. 为了画出漂亮的原型图,需要各色各样的元件.因此导入各类元件库很有用处: 打开元件库视图: 载入元件库,选择事先下载好的元件 元件库下载:htt ...
- Shell--命令别名与历史命令
1.命令别名设置:alias,unalias alias:列出目前系统所有的命令别名 设置命令别名:alias 别名=’命令 参数’ 例如:alias lm=’ls -l | more’ unalia ...
- 关于并发,异步,非阻塞(python)疑惑的一些资料解答
从iterable/iterator到generator到coroutine理解python的迭代器: http://python.jobbole.com/81916/理解python的生成器: ht ...
- SSO单点登录系列4:cas-server登录页面自定义修改过程(jsp页面修改)
落雨 cas 单点登录 SSO单点登录系列4:cas-server登录页面自定义修改过程,全新DIY. 目标: 下面是正文: 打开cas的默认首页,映入眼帘的是满眼的中文and英文混杂体,作为一 ...
- Spring3的quartz定时任务
要使用定时任务,需要将quartz-1.5.2.jar加入lib,没有的话可以从下面地址下载: quartz-1.5.2.jar 有了这个再做个配置文件appctx-quartz.xml: <? ...