Beta

It’s a beautiful thing when free data meets free algorithm.

矩阵分解技术是推荐系统常用的技术之一,它的变种出现在很多算法都有涉及。这里先不做展开,对于最基本的矩阵分解技术做一些原理和代码解释。

1. 矩阵分解的数学原理

首先约定一下符号,对于用户(users)的集合 \(U\),以及商品的集合 \(D\),用 \(R\) 来表示用户商品信息的共现( \(U \times D\) )矩阵。我们现在想找出 K 个潜在的特征,即:找到两个新矩阵P( \(U \times K\) ),Q( \(D \times K\) ),使得:

\[R = P \times Q^T = \hat{R}\]

这时,P包含了所有的用户(U)的相关信息(特征),而 Q 则包含了商品的相关信息(特征)。那如何找到这两个矩阵呢?

阅读全文 »

话说 2010 年我和鸟兄去豆瓣做一个技术交流,阿稳现场展示了并行化计算的 R 环境,矩阵运算瞬间跑满了所有的 CPU,当时让我羡慕不已。多年之后在 第六届 R 语言会议 上,张先轶为大家展示了他们负责跟进研发的开源线性代数计算库 OpenBLAS,这个库建立在已经停止开发的 GotoBLAS2 上,对 Intel Sandy Bridge 有非常好的支持(性能上甚至同 MKL 不相上下)。

线性代数库是 R 底层天然的并行运算的极好支持(Revolution R 使用的 MKL 库的支持),可以有效的提高 R 的计算效率。这里要再次感谢中科院张先轶的贡献!

1. OpenBLAS 的编译

OpenBLAS 的编译还是比较方便的,如果没有特殊要求,下载直接执行快速安装即可

1
2
make
make install

即可自行依照环境安装相关组件。

阅读全文 »

推荐系统在个性化领域有着广泛的应用,从技术上讲涉及概率、抽样、最优化、机器学习、数据挖掘、搜索引擎、自然语言处理等多个领域。东西太多,我也不准备写连载,今天仅从基本算法这个很小的切入点来聊聊推荐引擎的原理。

1. 推荐系统的策略

推荐引擎(系统)从不同的角度看有不同的划分,比如:

  • 按照数据的分类:协同过滤、内容过滤、社会化过滤
  • 按照模型的分类:基于近邻的模型、矩阵分解模型、图模型
阅读全文 »

1. 预热

5月16日(周四),西直门

到达西直门已经是八点多,见到舰哥已经是快九点,但是还是兴致勃勃地畅谈了国内 R 语言发展和商业化问题,以及国内比较奇葩的数据环境,包括国内某 xx 所在将 SAS 换代为 R 的种种“事迹”,各种吐槽各种感慨……

又简单聊了聊中文环境下的文本挖掘,准备和舰哥合作写一个,争取后半年空出时间来做。

阅读全文 »

三月底参加了中国人民大学统计学院海峡两岸数据挖掘研讨会,和大家简单聊了聊R语言在京东商城的数据挖掘应用。本来想接着写篇博文说明一下, 一直也没腾出时间,今天补上。

1. 为什么要使用R语言

在互联网企业,在分析端使用闭源的商用软件几乎是不可能的,原因很简单:成本太高,不管是使用,还是研发及维护。 但我个人觉得这可能还不是最主要的原因,对于互联网企业来说,数据虽然获取更容易,但环境更为复杂。开源软件可以根据业务的变化 进行调整,但商业的闭源软件则很难做到。

阅读全文 »
0%