http://blog.csdn.net/pipisorry/article/details/49231919

海量数据挖掘Mining Massive Datasets(MMDs) -Jure Leskovec courses学习笔记 推荐系统Recommendation System之降维Dimensionality Reduction

{博客内容:推荐系统有一种推荐称作隐语义模型(LFM, latent factor model)推荐,这种推荐将在下一篇博客中讲到。这篇博客主要讲隐语义模型的基础:降维技术,包括SVD分解等等}

降维Dimensionality Reduction

降维介绍

数据的低维表示:空间中的点不是完全随机分布的,而是分布lie in在它的一个子空间中。我们的目标就是找到这个可以有效表示所有数据的子空间。

降维示例

customer-day矩阵中行表示data(也就是点),列代表数据属性(也就是点的坐标)。降维就是要减少属性(列)。

这个矩阵实际只有2维,wc-th-fr和sa-su。

数据集的维度

矩阵的秩

矩阵A的秩就是A中列的无关最大组数目。下面的是坐标重新定义后A矩阵的表示。

秩即维数

通过秩来进行坐标重定义,用新坐标重新表示A矩阵,达到降维目的。

降维的实质

实质是找到一个新的数据轴。

这个例子中,我们只考虑数据在红线上的投影,而忽略与红线的距离,存在一定的error。目标就是找到一个新坐标轴让error尽量小。

降维的目的

皮皮blog

UV分解

UV分解示例

UV分解误差度量RMSE

我们一般通过RMSE(Root-Mean-Square Error, 均方根误差)度量UV和M的相近程度。

UV分解的增量式计算

{寻找具有最小RMSE的UV分解过程:初始任意选择UV,然后反复调整UV使得RMSE越来越小}

初始化

增量计算-对特定元素优化的示例


增量计算-对任意元素的优化。。。

完整UV分解算法的构建

1. 预处理

2.初始化

3. 执行优化

4. 收敛到极小值

5. 避免过拟合

皮皮blog

奇异值分解Singular Value Decomposition, SVD

{数据降维技术}

SVD定义

这里假设奇异值对角矩阵中的奇异值是降序排列的。

   

[矩阵论]

SVD分解的性质

Note: U、V列向量是正交的orthogonal,也就是说向量间内积为0。

SVD分解实例

users-movies矩阵,其中行代表用户,每列代表一部电影。

concepts就是SVD分解要告诉我们的,用户是sci-fi lover和romance lover类型,电影是sci-fi和romance等类型。也就是不同的genres(流派), or topics。

SVD分解中各分解分量的实际意义解释

下面是通过matlab或者python对矩阵A进行SVD分解得到的结果。下面分别讲解U V矩阵代表的实际含义(注意这种解释性也是人为解释的,其实SVD分解的解释性并没有那么强)。

我们可以将U的列看成concepts,如U的第一列对应Sci-Fi concept,第二列对应romance concept(第三列可能代表其它的什么,其实不一定能用一个类别来描述和解释,因为SVD其解释性并不是那么强)。我们从这里可以看到,前4个用户衷情于sic-fi,后3个用户衷情于romance。

于是我们可以将U矩阵看成是user to concept matrix(user to concept similarity matrix)。其中元素代表某个用户对某个concepts的感兴趣程度。这里是说第1个用户很喜欢sci-fi concept(0.13),而第5个用户很喜欢romance concept(-0.59)。至于-0.59代表最喜欢的concept,可能是要看它的绝对值?

Sigma矩阵中的值可看做是concepts的强度,如sci-fi concept强度(12.4)就比romance concept的强度(9.5)强。

同样的,我们可以将V矩阵看成是movies to concept matrix(movies to concept similarity matrix)。注意这里还有第三种concepts,但是其强度1.3太小,可以忽略。

从V矩阵第1列我们可以看到,第1部电影与第1个concept和第3个concept相关度高,然而第3个concept的强度过低,它对解释数据并不重要。

[TopicModel主题模型 - LSA(隐性语义分析)模型和其实现的早期方法SVD]

使用concept space进行查询

如果原始矩阵中没有的一个新用户Qurncy看了一部电影The Matrix,评分为4,则Qurncy的向量表示为q=[4,0,0,0,0]。

当然使用协同过滤,不过这里可以通过qV将Qurncy map到concept space中,其中qV = [2.32, 0],说明Qurncy对scifi有很大兴趣,对romance几乎没有兴趣。

map回movie space,qVVT = [1.35, 1.35, 1.35, 0, 0],也就是说Qurncy会喜欢Alien and Star Wars, but not Casablanca or Titanic。

可以将所有用户都map到concept space中,再计算他们的cosin相似度。

SVD分解的计算

Note: m*n矩阵A的奇异值是矩阵乘积AAH的特征值(这些特征值是非负的)的正平方根。

当然可以使用软件来代替手动计算,如scipy中linalg.svd(A)

[SVD Dimension Reduction 奇异值分解 降维]

皮皮blog

CUR分解

SVD分解的缺点在于:
计算比较耗时
存储矩阵比较占空间
 CUR分解是另外一个选择,其目标是:找到输入矩阵的一个“尽可能好”的分解为三个矩阵的乘积,SVD分解是完美的分解(通过允许误差来加速计算)。

U矩阵构造

C矩阵构造

计算M所有数据平方和f,取出的行数为r

计算选取列的缩放scale因子

R矩阵构造

同C,只是概率(缩放因子计算是对行来说的)

CUR分解示例

对下面矩阵进行CUR分解

假设选取列Matrix, Alien,和行Jim, John。

所有元素平方和为243

Matrix, Alien和Star Wars的squared Frobenius norm为1^2 + 3^2 + 4^2 + 5^2 = 51,故缩放因子即概率为51/243 = .210。其它两列的概率为45/243 = .185。

7行的squared Frobenius norms分别为3, 27, 48, 75, 32,50, 8,相应的概率为.012, .111, .198,.309, .132, .206, .033.

C矩阵构造

C矩阵中选择了Alien列和Matrix 列,则

R矩阵的构造

R矩阵选择了行Jim, John。

U矩阵的构造

W矩阵为

W的SVD分解结果为:

u:

[[-0.6-0.8]

[-0.8 0.6]]

e:

[ 7.0711  0.    ]

v:

[[-0.7071-0.7071]

[-0.7071 0.7071]]

1/e =

[[0.1414  0.    ]

[ 0.     0.    ]]

故M矩阵的CUR分解为:

[Anand.Rajaraman-Mining of Massive Datasets-mmds2014:CUR Decomposition]

[CUR Dimension Reduction CUR分解 降维]

皮皮blog

。。。

Review复习

标准正交基

计算出各个选项的长度(2范数)和与[2/7...]的内积为:

0.771042151896
-0.125

1.00021697646
0.000142857142857

2.42383992871
-0.214285714286

1.00014298978
0.735

故选择选项2

Code:

a = np.array([2 / 7, 3 / 7, 6 / 7])
B = [[.608, -.459, -.119], [.728, .485, -.485], [2.250, -.500, -.750], [.429, .857, .286]]
for b in B:
    print(np.linalg.norm(b))print(a.dot(b))print()

PCA

皮皮blog

from: http://blog.csdn.net/pipisorry/article/details/49231919

ref: Anand.Rajaraman-大数据:互联网大规模数据挖掘与分布式处理

海量数据挖掘MMDS week4: 推荐系统之数据降维Dimensionality Reduction相关推荐

  1. 机器学习Machine Learning:特征选择Feature Selection 与 数据降维Dimension Reduction的区别?

    为什么会有降维和特征选择??? 我们知道机器学习的终极目标就是为了预测,当然预测前我们要对数据进行训练.通常我们不会拿原始数据来训练,为什么呢?可能有些人觉得原始信息(original data)包含 ...

  2. 海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

    http:// blog.csdn.net/pipisorry/article/details/49052057 海量数据挖掘Mining Massive Datasets(MMDs) -Jure L ...

  3. 降维 (Dimensionality Reduction)

    文章目录 1. 目标一:数据压缩 2. 目标二:数据可视化 1. 目标一:数据压缩 第二种类型的无监督学习问题,称为降维.有几个不同的的原因可能想要做降维.一是数据压缩,数据压缩不仅允许压缩数据,它也 ...

  4. 【数据挖掘】鸢尾花分析实验与数据降维

    鸢尾花分析实验与数据降维 相关性分析 特征工程-特征降维 低方差特征过滤 相关系数 皮尔逊相关系数(Pearson Correlation Coefficient) 斯皮尔曼相关系数(Rank IC) ...

  5. 基于云计算的海量数据挖掘

    一 基于云计算的海量数据挖掘 2008年7 月,<Communications of the ACM>杂志发表了关于云计算的专辑,云计算因其清晰的商业模式而受到广泛关注,并得到工业和学术界 ...

  6. python用tsne降维_哈工大硕士实现了 11 种经典数据降维算法,源代码库已开放

    网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA.LDA.MDS.LLE. ...

  7. std中稳定排序算法_源代码库已开放 | 哈工大硕士生用 Python 实现了 11 种经典数据降维算法...

    转自:AI开发者 网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA.LDA ...

  8. python 最优化算法库_哈工大硕士生用?Python 实现了 11 种经典数据降维算法,源代码库已开放...

    雷锋网 AI 开发者按:网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA. ...

  9. 智能推荐系统之数据预处理

    智能推荐建立在广泛的的用户产品行为数据基础之上,在做推荐之前往往需要对数据进行预处理及分析,只有这样,才能真正理解并搞懂你收集到的数据,并给出更加智能的推荐结果. 一.什么是数据预处理 数据 我们把数 ...

  10. 大数据-数据抽取(数据降维)算法

    1.dimensionality_reduction_alo_codes:该项目使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,展示效果,适用于机器学习,数据挖掘. 2.pytho ...

最新文章

  1. 南农Nature Microbiology一作顾少华:我与铁载体的这5年
  2. 数字转换为字符的L受哪个参数影响
  3. 2 - 前端基础--CSS 选择器
  4. 面向对象程序设计第三次作业
  5. shell脚本-页面静态化
  6. netty系列之:一口多用,使用同一端口运行不同协议
  7. 使用named_mutex实现锁机制
  8. Eclipse 版本升级:如何不卸载旧版本 Eclipse 实现在线升级到最新版本?
  9. 手把手教你用C语言画“心”!
  10. 7-14 求整数段和
  11. PDF目录的自动生成
  12. 做微信小程序商城需要什么材料?
  13. 360手机助手pc版 v2.4.0.1265 官方版
  14. Elasticsearch 集群报错 master not discovered yet
  15. 如何使用前端css代码去掉百度地图左下角的图标
  16. 牛客习题总结38(7月13日)
  17. 金河电站被困216小时女工获救生还记
  18. 藏在表分区统计信息背后的小秘密
  19. kali Linux的简单介绍
  20. 【LeetCode】重复元素相关题目

热门文章

  1. Makeflie自动生成依赖,自动化编译
  2. 一天一个小技巧(1)——CSDN编辑器中文字颜色、尺寸、类型修改
  3. 数据库连接池的实现方法(MySQL+C++)
  4. OC 类的load方法
  5. bzoj 1078 [SCOI2008]斜堆 —— 斜堆
  6. loadrunner录制时web时,安全证书问题
  7. 直接复制php的安装目录部署到其他服务器的时候,无法运行
  8. 关于TcpClient,Socket连接超时的几种处理方法
  9. EMNLP'21中预训练模型最新研究进展
  10. 【Pre-Training】超细节的 BERT/Transformer 知识点