基于模糊聚类和协同过滤的混合推荐系统

Hybrid Recommender System based on Fuzzy Clustering and Collaborative Filtering

给出题目,想找的话直接在ElsevierSD里下载即可。

并不是逐句翻译,一些简单的背景比如经济啦什么的直接忽略,不过笔者会在博文里点出来。

一二三这样的标题是原论文的题目,我没翻译,为以后自己写英文论文做准备,以1234这样的标题开始的内容是笔者自己加上去的,就是我的笔记。

我自己把握不准的或者比较精妙的局段,都有英文原文留下,分段也被保留。

如何输入罗马数字,看下图,搜狗输入法下,ctrl+shift+z;有时候可能需要多个这样的符号,每次都这样调用的话很麻烦,我就按住ctrl键,果然可以一次多个,看来计算机是相通的。

一、Abstract

由于越来越多的电商使用推荐系统,推荐系统获得了极大发展。不过由于产品和用户数的显著增加使得推荐系统面临数据稀疏性和可扩展性的问题。本篇提出了FCM(Fuzzy C Means)算法。

二、Introduction

推荐系统结合电商背景介绍。NetFlix推荐电影,Amazon推荐图书。有几种不同的方法来做推荐,这包括给出销量最高的产品列表、基于人口统计学给我出建议和通过分析用户过去行为来给出建议(including providing top list of items, making suggestion based on demographic data and making recommendation by analyzing past user interaction of the user with the system.)。在这之中,协同过滤是最好的技术之一,该技术于1992年由[Goldberg et al., 1992]提出(我以Goldberg为关键字百度之,只出现摔跤运动员,对于这么吊的算法思想来说,这很不合理啊)。通常来说,推荐系统被分为三类,协同过滤、基于内容的推荐和混合推荐。基于内容的推荐使用过去的产品或者用户的描述信息(the item or user’s profile),因此当产品是像视频、音乐这类东西的话,该算法会很不方便得到需要的信息(原文是be quite challenging)。

在协同过滤算法(下文用CF来代替,太麻烦,我自己加上的)中,关键元素是用户过去的行为。CF推荐系统采用由用户制作的原来产品的排名来预测新产品的排名(笔者感觉这很像是Item-Based的CF算法,请参考笔者这一篇博文探秘推荐引擎之协同过滤算法小综述)。这种算法思想是根据(The idea behind this is that)两个用户曾经喜欢过想死产品的话那么他们很可能继续喜欢同样的产品(这一句又像是User-Based)。在建议的的方法中(proposed approach),初试聚类中心采用FCM算法生成。然后这些中心采用item-based来预测未来的产品排名。

相关工作在区域 Ⅱ,区域Ⅲ详细讨论了建议的方法,实验结果在区域Ⅳ讨论,结论呈现在区域Ⅴ。

1.基于人口统计学的推荐

这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。

系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。

优势:

a 不需要历史数据,没有冷启动问题

b 不依赖于物品的属性,因此其他领域的问题都可无缝接入。

不足:

算法比较粗糙,效果很难令人满意,只适合简单的推荐

2.基于内容的推荐

与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。

系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙,还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户A很可能对电影C也感兴趣。于是将电影C推荐给A。

优势:

对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度

不足:

a 物品的属性有限,很难有效的得到更多数据

b 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性

c 需要用户的物品的历史数据,有冷启动的问题

看完2我发现,冷启动问题指的就是建模的初始数据的来源问题,看来书真是阅读越明白,所以温故而知新,古人没有欺骗我---古之人诚不欺余也。

三、Related Work

在参考文献3里,作者提出了一种基于用户和产品之间不同的CF算法。首先,他们(用的they,表示作者不止一个的意思吧)比较了不同的CF算法。根据他们的方法,他们没有考虑用户和产品知己恩的联系,只考虑(other than)了不同之处。在这种情况下,有一些用户倾向于给好评,对那些真正的垃圾产品才给差评;而其他用户给最好的产品最高的评价,对于其他的产品倾向于给差评(On the condition that there are some users, who inclined to give positive rating, leaving negative ratings for really bad items, while other user, save their highest rating s for the best item and tends to give negative ratings. So according to their approach, first find the tendencies of items and users and on the basis of this, recommendation is done.刚开始翻译不出来参考了百度翻译,就翻译了出来;我想起了英语老师说咱们口语不好不是因为搞几次会不会,而是因为很多低级词汇忘了;我真是个听话的孩子,好老师说的话我基本都记得,感觉自己萌萌哒)。因此根据他们的方法(approach),首先找到产品和用户的趋势,据此,推荐完成。

在参考文献11里,作者提出了混合的方法,该方法结合了(take advantages of)基于内容和CF的优点。根据他们的方法,他们首先采用k-means算法找到相似的用户(笔者认为这地方没说清楚,根据用户买的产品类别还是用户的个人注册信息,不过就笔者个人感觉而言,对于非社交群体,比如电商企业,用户的注册信息完全没有价值);然后,找到同一簇中高度相关用户的内容(感觉内容量子很别扭then find the content that the users of the same cluster rated high)。添加这一内容进入内容列表中,然后在同一簇中就要求的内容采用FCM算法找到内容。最后,从珍贵(我在想,他是不是写错了previous:前一个,写成了precious)的两个已经计算的集合找出公共部分(Add this content in the list of contents and then apply fuzzy c-mean algorithm to find contents in the same cluster as that of the content requested. And in the end find common set from precious two computed set. 我不理解两个已经计算的集合是什么)。公共部分就是最好的结果。算了,确实看不明白,有空看原文。

在参考文献15中,作者针对个性化推荐提出了一种相反的CF算法。根据他们的方法,他们结合user-based和item-based算法,同时使用斯皮尔曼等级相关系数代替皮尔逊相关系数来确保在数据的逻辑区域有相同的空间(或者等距,equal space),这不必要成对出现从正态分布(which do not need to be receive in pairs from the normal distribution)。根据这个算法,CF算法预测相似的产品集根据已经给的数据,然后使用第二个算法得到最终的分配,同时解决奇异的数据(

singular data

)。

1.斯皮尔曼相关系数

在此例中,我们要使用下表所给出的原始数据计算一个人的智商 和其每周花在 电视上的小时数的相关性。

首先,我们必须根据以下步骤计算出 ,如下表所示。

  1. 排列第一列数据 ()。 创建新列 并赋以等级值 1,2,3,...n
  2. 然后,排列第二列数据 (). 创建第四列 并相似地赋以等级值 1,2,3,...n
  3. 创建第五列 保存两个等级列的差值 ().
  4. 创建最后一列 保存 的平方.

ρ = −0.175757575,这个值很小表明上述两个变量的关系很小。

该系数和皮尔逊的区别是xy可以不是正态分布;但是xy不也可以进行标准花么((x-u)/D),然后可以用皮尔逊洗漱了。

四、ProposedApproach

算法被分为两个阶段(phase)。

阶段一:根据产品信息进行产品聚类

阶段二:对阶段一的每个簇应用基于项目的CF。

算法概述。

步骤一:根据产品信息进行产品聚类(笔者认为说的很不直观,聚类的结果是什么,只是产品还是包括用户)

步骤二:在用户项目矩阵中对于每个簇应用基于项目的CF来预测丢失的评分。

步骤三:为了减少冷启动的问题,新用户(NU):必须给在给定阈值数量的产品的评分来做推荐。新产品(NI):用户U对于新产品的评分经由NI(U)的评分=用户U在该簇中的评分平均值(To reduce the Cold Start problem.New User: Rating must be given on the specific (threshold)number of items to get recommendation.New Item (NI) : Rating of new item by user U is given byRating of NI(U) = Average rating of the user U within thatcluster.)。这是不是在说SlopeOne算法,前面提到的博文里对该算法有介绍。

步骤四:为了降低可扩展性的问题,聚类是预先处理步骤。该算法周期性运行或者当超过给定阈值数量额产品被加入时该算法被触发(Clustering is pre-processing step. This algorithm is runperiodically or triggered after some particular (threshold)number of new items add in the system.)。

阶段一:聚类

A.K-means

笔者注:下面只做简单翻译

采用k-means算法(原文是k-mean,是不是笔误)。Movielens数据集包括来自943个用户的评分分为1到5等级的10w个评分,该数据集也包括每个电影的大致信息(profile),比如类型(genre[???nr?])(喜剧、动作等),类型共19种。在电影的类型上做聚类。在划分好的k个簇上上应用基于项目的CF算法。

下面就是k-means的步骤了,不再翻译。

假设10个电影(Assume),每个电影经由三种类型来描述(喜剧、动作、音乐片),如表1(为毛没加上章的信息,写成表3-1)。

 

使用曼哈顿距离来计算电影之间的相似性或者不想实行。

笔者注:曼哈顿距离与欧氏距离:红 蓝和黄分别表示曼哈顿距离都拥有一样的长度12.绿色表示欧式距离 6*1.414=8.48的长度。

笔者感觉这个图很直观,妙处自己体会。

结果是表2

B、FCM

先介绍

生成如下表

假设阈值是0.15

C。减少冷启动问题

新用户未做任何评价,新产品未收到任何评价。

a.新用户必然要评价超过阈值数量的产品。

b.if new item add in the system: rating of new item M,by user U is given by:上面的式子Where右端第一部分 average of user U in cluster c. And右端第二部分 is membership value of new item M to cluster c。

阶段二:基于项目的CF

笔者注:未做逐字逐句翻译。

由于当数据达到百万级时,user-based算法寻找像是用户的CF的计算复杂度太大。 所以2001年提出了item-based算法。

该阶段把第一阶段的输出作为输入,对每个簇用基于项目的CF算法。

采用皮尔逊相关系数离线计算ij之间的相似度。

U是同时评价过i和j的用户集,带上划线的是评价过该项产品的所有用户评分的均值。

由于FCM是模糊聚类,那么问题来了当一个产品同时属于两个或多个簇时,评分公式如下,

Nc是簇个数,分子是a对i在簇c下的评分,实际上就是求各个簇下的均值。写到这,笔者认为,所谓论文就是把简单问题复杂化,通俗名词专业化。

五、Experiment Results

CF的评价准则有统计学准则和决策支持准则,本文采用前者。统计学准则比较预测值和实际值的分离程度,采用MAE(mean absolute error),

,下面第二个图x是指数据量的大小,单位是10w。

六、Conclusion

结合CF和FCM解决数据稀疏性和冷启动问题。

提出的方法是基于记忆的方法,因此不需要花费时间来训练数据(这个不懂,可能看的资料不够吧,我感觉是不就是说增量)。

七、笔者自己

四点半左右去听了一个讲座,小公式注重你的技术,要能立刻上手;大公司注重基础,愿意培养你,所以跟一个大牛,他跳槽了,也把你带走了。

今晚在实验室吃饭啦,附上照片纪念正在流逝的青春。

时间: 2024-10-26 17:01:16

基于模糊聚类和协同过滤的混合推荐系统的相关文章

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

Mahout分布式运行实例:基于矩阵分解的协同过滤评分系统

Apr 08, 2014  Categories in tutorial tagged with Mahout hadoop 协同过滤  Joe Jiang 前言:之前配置Mahout时测试过一个简单的推荐例子,当时是在Eclipse上运行的,由于集成插件的缘故,所以一切进行的都比较顺利,唯一不足的是那是单机运行的,没有急于分布式系统处理.所以基于测试分布式处理环境的目的,下午找了一个实例来运行,推荐系统原型是一个电影评分的系统. 一.问题描述 对于协同过滤(Collaborative Filt

基于用户和项目协同过滤原理及实例

1. 基于用户的协同过滤 基于用户(User-Based)的协同过滤算法首先要根据用户历史行为信息,寻找与新用户相似的其他用户:同时,根据这些相似用户对其他项的评价信息预测当前新用户可能喜欢的项.给定用户评分数据矩阵R,基于用户的协同过滤算法需要定义相似度函数s:U×U→R,以计算用户之间的相似度,然后根据评分数据和相似矩阵计算推荐结果. 在协同过滤中,一个重要的环节就是如何选择合适的相似度计算方法,常用的两种相似度计算方法包括皮尔逊相关系数和余弦相似度等.皮尔逊相关系数的计算公式如下所示: 其

基于MLlib的机器学习--协同过滤与推荐

<Spark快速大数据分析> 11.5.4 协同过滤与推荐 协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术. 协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录: 无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了一个 产品的页面但是没有对产品评分)交互皆可.仅仅根据这些交互,协同过滤算法就能 够知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间 比较相似,然后就可以做出新的推荐. 尽管MLlib的API使用了用户

机器学习之协同过滤算法(推荐系统)

前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 很多网站都有推荐系统,向我们推荐我们想要地或者有可能需要的信息,那么它是怎么实现的呢?因为它们 都采用了推荐算法,在现今的推荐算法之中,最被大家广泛认可和采用的是协同过滤算法. 协同过滤算法 所谓基于内容的推荐,就是说我们的item具备某些属性attrs,然后我们可以通过某个user的历史评分记录, 计算出该user对各种 属性 attr的喜好程度,从而可以给user推荐具备他喜欢的attr的item. 比如说,每

基于用户相似性的协同过滤——Python实现

代码基本来自项亮的<推荐系统实践>,把书上的伪代码具体实现,还参考了https://www.douban.com/note/336280497/ 还可以加入对用户相似性的归一化操作,效果会更好. 数据集为MovieLens的10万条数据. 链接:MoiveLens #coding:utf-8 import random,math from operator import itemgetter class UserBasedCF: def __init__(self,trainDataFile=

推荐引擎算法学习导论:协同过滤、聚类、分类

作者:July.出处:结构之法算法之道 本文转自互联网,仅供学习收藏只用,如有侵权,请联系本人删除. 引言 昨日看到几个关键词:语义分析,协同过滤,智能推荐,想着想着便兴奋了.于是昨天下午开始到今天凌晨3点,便研究了一下推荐引擎,做了初步了解.日后,自会慢慢深入仔细研究(日后的工作亦与此相关).当然,此文也会慢慢补充完善. 本文作为对推荐引擎的初步介绍的一篇导论性的文章,将略去大部分的具体细节,侧重用最简单的语言简要介绍推荐引擎的工作原理以及其相关算法思想,且为了着重浅显易懂有些援引自本人1月7

基于协同过滤的个性化Web推荐

         下面这是论文笔记,其实主要是摘抄,这片博士论文很有逻辑性,层层深入,所以笔者保留的比较多.          看到第二章,我发现其实这片文章对我来说更多是科普,科普吧-- 一.论文来源 Personalized Web Recommendation via Collaborative Filtering(很奇怪via为什么小写,先记住吧) (Candidate)博士研究生:孙慧峰 (Advisor)导师:陈俊亮(院士) (Academic Degree Applied for)

基于协同过滤的推荐系统

在上一篇博文中,我已经总结了几种主要的推荐方法,其中,基于内容和基于协同过滤是目前的主流算法,很多电子商务网站的推荐系统都是基于这两种算法的.基于内容在第一篇博文中已经详细介绍了,因此本博文主要是介绍基于协同过滤的个性化推荐系统. 协同过滤是一种基于一组兴趣相同的用户或项目进行的推荐,它根据邻居用户(与目标用户兴趣相似的用户)的偏好信息产生对目标用户的推荐列表.协同过滤算法主要分为基于用户的协同过滤算法和基于项目的协同过滤算法. 基于用户的(User based)协同过滤算法是根据邻居用户的偏好