介绍

论文名: “classification, ranking, and top-k stability of recommendation algorithms”.

本文讲述比較推荐系统在三种情况下, 推荐稳定性情况.

与常规准确率比較的方式不同, 本文从还有一个角度, 即推荐算法稳定性方面进行比較.

具体

參与比較的推荐算法

包含:

  1. baseline
  2. 传统基于用户
  3. 传统基于物品
  4. oneSlope
  5. 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多个方面对推荐算法稳定性的评价的更多相关文章

  1. 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

    常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

  2. 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 ...

  3. 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 ...

  4. [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 ...

  5. 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 ...

  6. Top k问题(线性时间选择算法)

    问题描述:给定n个整数,求其中第k小的数. 分析:显然,对所有的数据进行排序,即很容易找到第k小的数.但是排序的时间复杂度较高,很难达到线性时间,哈希排序可以实现,但是需要另外的辅助空间. 这里我提供 ...

  7. 经典面试问题: Top K 之 ---- 海量数据找出现次数最多或,不重复的。

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  8. [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 ...

  9. 程序员编程艺术:第三章续、Top K算法问题的实现

    程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha.     致谢:微软100题实现组,狂想曲创作组.     时间:2011年05月08日    ...

随机推荐

  1. Spring 依赖注入(控制反转)介绍

    耦合性是软件工程中的一个重要概念.对象之间的耦合性就是对象之间的依赖性.对象之间的耦合越高,维护成本越高.因此对象的设计应使类和构件之间的耦合最小. spring Ioc思想 控制翻转也就是sprin ...

  2. centos iptables关于ping

    配置iptables策略后,一般来说INPUT都是DROP然后配置需要通过的 当执行: iptables -P INPUT DROP 后,机器就不能被ping通了! 因为icmp没有添加到规则中! 于 ...

  3. SYSPROCESSES 查看连接

    原文:SYSPROCESSES 查看连接 SELECT at.text,sp.* FROM[Master].[dbo].[SYSPROCESSES] sp CROSS APPLY sys.dm_exe ...

  4. Delphi 实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题

    给你一段代码,网上转的:unit uMyClassHelpers;//实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题.//        陈小斌,2012年3月5日 interface Uses ...

  5. tiny4412 串口驱动分析六 --- TTY驱动架构

    转载: http://www.linuxidc.com/Linux/2013-11/92639.htm 参考: http://blog.csdn.net/lamdoc/article/details/ ...

  6. ASIHTTPREQUEST framework compile error when method is called / link error

    never mind!!! duplicate: Error with iOS 5.1 when i use ASIHTTPRequest and SBJSON "I would take ...

  7. 新人补钙系列教程之:拒绝CPU高占用

    1.关于MovieClip和Sprite的鼠标事件,当不需要鼠标事件的时候将mouseEnabled和mouseChildren设为false. 不断的检测鼠标交互事件会消耗CPU,尤其是大量交互对象 ...

  8. 第一章 初识shiro

    shiro学习教程来自开涛大神的博客:http://jinnianshilongnian.iteye.com/blog/2018936 第一章 初识shiro 简单了解shiro主要记住三张图即可. ...

  9. SparkMLlib分类算法之逻辑回归算法

    SparkMLlib分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/5169383 ...

  10. PS如何使用自定义画笔

    1 没有杂色的白背景不用抠图,GIF格式的透明背景不用抠图,有背景但是不想抠图都可以直接定义为画笔.先选中需要定义的画笔(得到选区),然后单击编辑-定义画笔预设.   2 随后就可以找到我们的画笔工具 ...