第一部分是学习ID3时候积累的。

一.以前写的基础知识

  1.信息:是用来消除不确定性的度量,信息量的大小,由所消除的不确定性的大小来计量(香农)。
  2.由于不确定性是由随机性引起的,所以用概率来描述和计量;熵entropy:源于热力学,是分子混乱程度的度量。
  3.X(离散型随机变量)的熵H(X) 为:H(X)= - ∑x ∈X p (x) log2 p (x),其中,约定0log2 0 = 0,通常单位为bits;一个随机变量的熵越大,它的不确定性就越大,正确估计其值的可能性就越小。越不确定的随机变量越需要大的信息量用以确定其值;熵又称为自信息(self-information),表示信源X每发一个符号(不论发什么符号)所提供的平均信息量。

二.协同过滤

  输入:“用户—物品”评分矩阵
  输出: (1)用户对某个物品喜欢程度的评分;

      (2)对于用户,n个推荐的物品列表

  2.1  基于用户的最近邻推荐(user-based cf)

  算法基本假设:(1)如果用户过去有相似的偏好,那么他们未来也会有相似的偏好;(2)用户的偏好不随时间变化而变化。用户相似度计算:user-based cf中pearson相关系数比较好;item-based cf中余弦相似度比较好。学术界在相似度方面有较为深入的研究,例如:很多领域都存在一些所有人都喜欢的物品(热门物品),让两个用户对有争议的物品达成共识、比对热门物品达成共识更有价值,Breese提出“反用户频率”(iuf)来表示。

  用户近邻的选择方法:(1)固定某个相似度阈值;(2)固定某个近邻数阈值

  2.2基于物品额最近邻推荐(item-based cf)

  算法基本假设:用户喜欢某个物品,那么也喜欢和这个物品相似的物品

  当用户量比较大的时候,user-based cf需要计算相似用户,这个计算代价就很大;而且,当数据发生变化的时候,之前计算出的用户之间的相似度,也不稳定。相反,item-based cf,计算item之间的关系,比较适合离线计算,而且计算出的物品之间的相似度,当数据变化的时候,结果更加稳定。

  当计算量实在太大的时候,如果一定要处理,可以采取“二次采样”的方法,即只选择数据的某个子集。

三. 关于评分

  “用户—物品”矩阵,联结用户和物品的是用户对物品的评分。可以分为显示评分和隐式评分。显示评分的问题主要在于用户需要额外付出。收集显示评分也并不是太困难,关键要有一小部分“早起培育者”先提供出来一些评分(有心理学的依据)。对于些领域,例如:个性化在线电台,隐式反馈比现实反馈效果更好。

  如果评分很少、或者没有评分,就是数据稀疏问题。是否可以利用一些别的信息,如:用户的自然属性。对于用户没有行为的物品,可否有缺省值?冷启动问题是数据稀疏问题的一个特例。

四. 更多的模型和方法

  协同过滤推荐可以分为基于记忆的方法和机遇模型的方法。前者将所有数据记忆到存储体中。后者,(离线)做数据降维,抽象出特征,运行时直接用特征。

  (1)矩阵分解方法
  SVD(基础),LSA,LSI。都是降维的方法。至于计算item之间的相似度、user之间的相似度、相似度度量选择等等,和经典的CF没啥两样。
  主成分分析方法。
  (2)关联规则挖掘
  啤酒尿布。在热门电影领域,关联规则挖掘的效果比较好。给用户推荐web页面的场景,关联规则效果也不错。

  (3)基于概率分析的方法
  将推荐问题转成分类问题。例如:用户给item的打分可以是1--5分,对于新物品、以及当前用户,给物品分到五个类别中,分别对应着1–5分。个人感觉,这种方法的作用就是为学术界发文章,在实际中很难使用。

五. 近年来实际的方法和系统

  slope one预测,google reader的预测方法(之一)。思路挺有意思的,就是用与当前用户有关的用户(与当前用户在某个物品上都打了分--分高分低无所谓)对某个物品的评分情况,来预测当前用户对于这个物品的评分情况。直觉上不见得会make sense,即便是make sense,也远不如CF那么sense。不过算法很适合并行化。且Google也是用Map reduce来做的。

  google reader实际上是一个混合推荐系统。既包括了离线计算,也包括了在线的用户行为挖掘。

六. 讨论和小结

  目前找不到一种推荐方法在所有系统和数据集上面都优秀的。所以推荐系统还要“具体问题具体分析”,多尝试。CF方法要求用户有一定的规模,太小规模,效果不可预测。
  参考:http://blog.csdn.net/xceman1997/article/details/41687339

七.遗留问题

  1.反用户频率是什么?

  2.二次采样怎么搞?

  3.item——basedCF中还会买与买过的物品相似的物品吗?如果是,意义何在?莫非这就是“喜欢该物品的还喜欢.....”(购买过还购买了,这种一般是关联规则推荐,而且物品往往是不经常买的,比如手机、单反)。

  4.基于概率分析的方法,还没看过相关论文。

  5.今天刚下了“增量聚类”“实时推荐”“矩阵分解模型”的资料,有相关资料的园友,希望分享一下,留下你的评论,说说我需要看什么就行......爱你们

Recommender Systems协同过滤的更多相关文章

  1. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  2. CF(协同过滤算法)

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  3. 协同过滤的R语言实现及改进

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 协同过滤算法是推荐系统最常用的算法之一,本文将介绍一种方法来使它可以在大型数据集上快速训练. 协同过滤算法(CF)是构建推荐系统时最常用的技 ...

  4. 【翻译】Neural Collaborative Filtering--神经协同过滤

    [说明] 本文翻译自新加坡国立大学何向南博士 et al.发布在<World Wide Web>(2017)上的一篇论文<Neural Collaborative Filtering ...

  5. win7下使用Taste实现协同过滤算法

    如果要实现Taste算法,必备的条件是: 1) JDK,使用1.6版本.需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量. 2) Maven,使用2 ...

  6. [转]-[携程]-A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems

    原文链接:推荐系统中基于深度学习的混合协同过滤模型 近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程 ...

  7. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

  8. (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly Detection&Recommender Systems

    这部分内容来源于Andrew NG老师讲解的 machine learning课程,包括异常检测算法以及推荐系统设计.异常检测是一个非监督学习算法,用于发现系统中的异常数据.推荐系统在生活中也是随处可 ...

  9. [C11] 推荐系统(Recommender Systems)

    推荐系统(Recommender Systems) 问题阐述(Problem Formulation) 将 推荐系统 纳入这门课程来讲有以下两个原因: 第一.仅仅因为它是机器学习中的一个重要的应用.在 ...

随机推荐

  1. DayDream, 移动VR 2.0里程碑: 概述(上篇)

    VR设备, 断断续续使用了很多个; 尤其是最近半年,主要是PC VR方面项目. 以前对移动VR不感冒,这几天试用了一下DayDream, 眼前突然一亮, 就如同年初首次使用HTC Vive眼前一亮的感 ...

  2. 第二十八篇、自定义的UITableViewCell上有图片需要显示,要求网络网络状态为WiFi时,显示图片高清图;网络状态为蜂窝移动网络时,显示图片缩略图

    1)SDWebImage会自动帮助开发者缓存图片(包括内存缓存,沙盒缓存),所以我们需要设置用户在WiFi环境下下载的高清图,下次在蜂窝网络状态下打开应用也应显示高清图,而不是去下载缩略图. 2)许多 ...

  3. JSPatch 遇上swift

    swift使用JSPatch要点: 继承自NSObject的Swift类,其继承自父类的方法具有动态性,其他自定义方法.属性需要加dynamic修饰才可以获得动态性(public属性除外) 例子可参看 ...

  4. Dreamweaver标签库

    .highlight .hll { background-color: #ffffcc } .highlight { background: #ffffff } .highlight .c { col ...

  5. C# 添加,修改,删除文件夹/文件集合

    C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw ...

  6. KindEditor配置步骤

    KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome.Safari.Opera等主流浏览器. KindEditor ...

  7. [Bootstrap]全局样式(五)

    辅助样式 1.情景文本色  .text-muted  .text-primary  .text-success  .text-info  .text-warning  .text-danger  {c ...

  8. CSS的浮动和清除

    CSS浮动和清除 什么是浮动? 在实现效果上,让元素浮起来(飘起来),动起来(向左或向右移动) 浮动本质:就是将两个块元素同存一行. float 取值:主要是对浮动的方向进行控制 left:让元素向左 ...

  9. 输入与enter

    #include<iostream> using namespace std; int main() { char a,b,c; while(scanf("%c%c%c" ...

  10. Mysql 数据库安装配置

    MySQL的多种安装方法 在当今的互联网企业,Mysql数据服务几乎都是运行在LINUX系统操作系统上,当然你也可以在WINDOWS.UNIX等商业操作系统上运行. 但是一般企业都会采用LNMP.LA ...