推荐系统学习点滴
2015-09-08 10:54
225 查看
1,推荐系统分成两类:协同过滤和基于内容过滤。其中协同过滤基于假设:“people who agreed in the past will agree in the future, and that they will like similar kinds of items as they liked in the past”。核心思想是:找到历史上与当前用户有公共交集(比例达到一定程度)的人群,用人群中大多数人的商品/兴趣选择(但当前用户还未选择),来推荐给当前的用户。
以下转载
"利用协同过滤来产生推荐,很耗计算。最坏的情况是O(MN),其中M是顾客数量,N是产品目录中商品的数量,因为算法要验算M个顾客,并且对每个顾客最多要计算N种商品。但是,由于顾客向量的平均值很稀疏,算法的执行更倾向于接近O(M + N)。扫描每一个顾客大约是O(M),而不是O(MN),因为几乎所有顾客向量都只含有很少的商品,无需考虑产品目录的规模。但有少数顾客,他们买过或评级过的商品在产品目录中占有值得注意的百分比,需要O(N)处理时间。因此,算法最终执行的大约是O(M + N)。尽管如此,对非常大的数据集来说——比如1千万以上的顾客,以及1百万以上登记在册的商品——算法也会遭受严峻的性能和计算量问题。
通过减小数据量,可能部分缓解这些计算量的问题4。我们能够减小M,通过对顾客进行随机抽样,或丢弃那些购买很少的顾客;我们也能减小N,通过丢弃那些极热门和极冷门的商品。我们还可能减少所需计算的商品数量,通过一个小的常数因子,在产品类别或主题分类的基础上,对商品空间进行区隔。诸如聚类和主分量分析等维度降低技术,也能很大程度减小M和N。"
以下转载
"利用协同过滤来产生推荐,很耗计算。最坏的情况是O(MN),其中M是顾客数量,N是产品目录中商品的数量,因为算法要验算M个顾客,并且对每个顾客最多要计算N种商品。但是,由于顾客向量的平均值很稀疏,算法的执行更倾向于接近O(M + N)。扫描每一个顾客大约是O(M),而不是O(MN),因为几乎所有顾客向量都只含有很少的商品,无需考虑产品目录的规模。但有少数顾客,他们买过或评级过的商品在产品目录中占有值得注意的百分比,需要O(N)处理时间。因此,算法最终执行的大约是O(M + N)。尽管如此,对非常大的数据集来说——比如1千万以上的顾客,以及1百万以上登记在册的商品——算法也会遭受严峻的性能和计算量问题。
通过减小数据量,可能部分缓解这些计算量的问题4。我们能够减小M,通过对顾客进行随机抽样,或丢弃那些购买很少的顾客;我们也能减小N,通过丢弃那些极热门和极冷门的商品。我们还可能减少所需计算的商品数量,通过一个小的常数因子,在产品类别或主题分类的基础上,对商品空间进行区隔。诸如聚类和主分量分析等维度降低技术,也能很大程度减小M和N。"
相关文章推荐
- RTC是什么
- VM里linux安装VMTools
- Android FTP ftpClient.listFiles()报java.lang.ClassNotFoundException: Didn't find class "Windows_NT"
- python __init__.py
- Android学习笔记之:NDK开发环境配置
- JAVA多态的事例
- [MDB] EXP 导入数据库
- 使用Maven来管理项目-Maven安装配置(一)
- git 命令总结
- Delphi中的匿名方法和闭包
- Codeforces 575C 状压+KM
- 正十二面体的走访
- 常见的串行通信协议
- unison+inotify
- Sahara组件调查:环境搭建
- 第7章 进程管理
- LeetCode Insertion Sort List 链表的插入排序
- HDU 5431
- Add Digits
- POJ 3237 Tree 树链剖分