关键字:SVD、奇异值分解、降维、基于协同过滤的推荐引擎
作者:米仓山下
时间:2018-11-3
机器学习实战(Machine Learning in Action,@author: Peter Harrington)
源码下载地址:https://www.manning.com/books/machine-learning-in-action
https://github.com/pbharrin/machinelearninginaction

********************************************************************************

奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。

SVD应用:SVD在数据压缩(如PCA)、于降维算法中的特征分解、推荐算法、潜在语义索引(LSI)等领域都有着广泛的应用

--------------------------------------------------------------------------------------------

一、奇异值分解(SVD)原理

SVD分解与PCA有都可以实现降维,在pca中Ax=λx,如果我们求出了矩阵A的n个特征值λ1≤λ2≤...≤λn,以及这n个特征值所对应的特征向量{w1,w2,...wn},,如果这n个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:A=WΣW−1。进行特征分解,矩阵A必须为方阵;如果A不是方阵,即行和列不相同时,可以使用SVD。SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵。假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:A=UΣVT,其中U是一个m×m,的矩阵,Σ是一个m×n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,V是一个n×n的矩阵。U和V都是酉矩阵,即满足UTU=I,VTV=I。

<1>主成分分析通过对原始数据线性变化,最大化协方差矩阵,使在新的空间内数据的方差最大化(能量集中),特征值分解,对是针对数据列的降维。
<2>SVD分解是非方正条件下对数据进行奇异值分解。左奇异矩阵可以用于行数的压缩,右奇异矩阵可以用于列数即特征维度的压缩。

与PCA相比,SVD也可以得到协方差矩阵XTX最大的d个特征向量张成的矩阵,但是SVD有个好处,有一些SVD的实现算法可以不求先求出协方差矩阵XTX,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。

PCA的原理及数学推倒可以看【PCA】,SVD的原理和理解看【SVD】
(微信公众号的有些基础文章质量真的是比论坛博客的质量高)

书中对隐形语义的讲解感觉很突兀,我的理解是:其实可以理解为将将一个语义空间去进行分析处理。如在文中餐馆的例子,进行奇异值分解就是:VT矩阵会将用户映射到BBQ/日式食品空间去。U矩阵会将餐馆的菜映射到BBQ/日式食品空间去。自然语言中的奇异值分解形成“概念”后面再慢慢学习

--------------------------------------------------------------------------------------------

二、基于协同过滤的推荐引擎

首先需要说明,推荐引擎有很多方法,协同过滤只是众多场景下的一种,如有基于内容推荐、协同过滤、关联规则(Apriori算法、FPgrowth算法)、混合推荐等。

基于协同过滤的推荐引擎原理:协同过滤(collaborative filtering)是通过将用户和其他用户的数据进行对比来实现推荐的。利用相似物品,基于相似度加权平均求得未评价物品的预测评分,求得未评价物品预测评分的前N高,以此作为推荐项。

SVD(奇异值分解)在协同过滤推荐引擎中的作用是利用U对行数据降维,以解决矩阵稀疏问题,去除了噪声和冗余信息。SVD的作用是:实现了降维,将数据映射/压缩到某个隐形空间,SVD来减少特征空间并提高推荐的效果。可以将奇异值想象成一个新空间。这二维分别是什么呢?能告诉我们数据的什么信息?这二维分别对应图中给出的两个组,右图中已经标示出了其中的一个组。可基于每个组的共同特征来命名这二维,比如得到的美式BBQ和日式食品这二维。

书中首先讲了计算相似度的三种方法,包括欧氏距离、皮尔逊相关系数、余弦相似度。书中计算的是各种餐馆之间的相似度。

接着,就可以利用相似度便可以基于协同过滤进行推荐了,在用户没有评级的所有物品中,对每个物品预计一个可能的评级分数。这就是说,我们认为用户可能对物品的打分(这就是相似度计算的初衷),对这些物品的评分从高到底进行排序,返回前N个物品。

最后,利用SVD提高推荐的效果,解决数据矩阵稀疏问题,并且可以去燥。将用户映射到BBQ/日式食品空间,然后再计算餐馆之间的相似度,加权求为评价商品的得分。

--------------------------------------------------------------------------------------------

三、基于SVD的图像压缩

奇异值分解能够有效的降低数据的维数,图片为例,从450维降到149维后,还保留了90%的信息

原理:
使用SVD来对数据降维,从而实现图像的压缩。在协同过滤推荐引擎中仅使用SVD的左奇异矩阵U,在图像压缩中不仅用到了U还用到了V。一张二维n*m的灰度图片可以看做是n*m的矩阵,利用SVD可以实现对二维图像的压缩。

书中采用了二值化o-1矩阵,对数据进行了SVD压缩,仅保留前两个奇异值的信息,然后采用一个阈值还是把矩阵还原为一个0-1矩阵。(灰度图片和RGB图片的SVD分解下一节介绍)

注意:虽然奇异值分解很有效,但是不能滥用,一般情况下要求降维后信息的损失度不能超过5%,甚至是1%

书中源码
--------------------------------------------------------------------------------------------
参考文献:

刘建平-奇异值分解(SVD)原理与在降维中的应用:https://mp.weixin.qq.com/s/Z0ZkQlZDKUSJEWVq7Vi6Cg  & https://www.cnblogs.com/pinard/p/6251584.html

读书笔记(3) | SVD算法及应用 :https://mp.weixin.qq.com/s/EOmViXqvcIiN2cx5RtHSBg

机器学习实战 第十四章 利用SVD简化数据:https://blog.csdn.net/namelessml/article/details/52987113

机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

转载于:https://www.cnblogs.com/Micang/p/10158386.html

机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维...相关推荐

  1. 决策树(chap3)Machine Learning In Action学习笔记

    优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型(必须离散化)和标称型. 决策树创建分支的伪代码函数crea ...

  2. Machine Learning in Action 读书笔记---第5章 Logistic回归

    Machine Learning in Action 读书笔记 第5章 Logistic回归 文章目录 Machine Learning in Action 读书笔记 一.Logistic回归 1.L ...

  3. Machine Learning in Action 读书笔记---第3章 决策树

    Machine Learning in Action 读书笔记 第3章 决策树 文章目录 Machine Learning in Action 读书笔记 一.决策树算法简介 1 决策树的构造 2 决策 ...

  4. Machine Learning in Action 读书笔记---第4章 基于概率论的分类方法:朴素贝叶斯

    Machine Learning in Action 读书笔记 第4章 基于概率论的分类方法:朴素贝叶斯 文章目录 Machine Learning in Action 读书笔记 一.基于贝叶斯决策理 ...

  5. Machine Learning in Action 读书笔记---第8章 预测数值型数据:回归

    Machine Learning in Action 读书笔记 第8章 预测数值型数据:回归 文章目录 Machine Learning in Action 读书笔记 一.回归 1.回归的一般过程 2 ...

  6. 机器学习(Machine Learning)——深度学习(Deep Learning)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/abcjennifer/article/ ...

  7. 【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)

    这节的内容需要一些线性代数基础知识,如果你没听懂本文在讲什么,强烈建议你学习[官方双语/合集]线性代数的本质 - 系列合集 文章目录 奇异值分解 线性变换 特征值和特征向量的几何意义 什么是奇异值分解 ...

  8. 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第一讲)

    作者:林夕 本文长度为2900字,建议阅读9分钟 本文为大家介绍图网络的基本概念.网络的应用以及图的结构. 标签:机器学习 目录 一.Why Networks 二.网络的应用     2.1 应用领域 ...

  9. 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第二讲)

    作者:于媛,十三鸣 本文长度为3300字,建议阅读10+分钟 本文为大家介绍常用的网络属性和经典的网络模型. 标签:机器学习 [ 导读 ]在研究网络的时候,我们往往需要从结构层面对网络进行分析,网络属 ...

  10. 《机器学习实战》第8章学习笔记(回归)之预测乐高玩具套装的价格

    原文中通过Google提供的API来抓取价格,但由于现在访问不了Google,所以,直接通过文本给的html文件直接读取价格信息.然后进一步进行分析预测. 代码实现: # -*- coding: ut ...

最新文章

  1. 单向循环链表C语言实现
  2. HTTP协议详解(文档)
  3. linux mtk unique id,1.2.16.1. Nand Flash的Unique ID
  4. 《CCIE路由和交换认证考试指南(第5版) (第2卷)》——1.6节理解与记忆
  5. 【java学习之路】(java框架)006.springIOC
  6. lintcode :sort letters by case字符大小写排序
  7. freeswitch 基于webrtc网页视频、语音通话官方例子video_demo安装
  8. debian9 linux的版本,Debian 9.4 发布,小版本更新
  9. c语言结构体的实例使用
  10. 蓝桥杯试题c语言蛇形填数,2020十月份蓝桥杯B组省赛题解大全(害!附题面文件和部分代码~)...
  11. 抖音短视频如何去水印?
  12. RISC-V MCU 智能语音物联网家居控制系统
  13. 索尼ps4 linux,索尼PS4
  14. OBS更改标题?标题一改,安能辨我是雌雄?
  15. 【024】Vue+Springboot+mysql员工考勤管理系统(多角色登录、请假、打卡)(含源码、数据库、运行教程、实验报告)
  16. GPDB中gp_vmem_protect_limit参数的意义
  17. java毕业设计芮城县十全十美火锅店点餐系统源码+lw文档+mybatis+系统+mysql数据库+调试
  18. 用Python找回微信撤回信息,就算撤回了我也看的到~
  19. 程序员带你一步步分析AI如何玩Flappy Bird
  20. 第一章 winds 安装区块链私链 geth并进行节点同步

热门文章

  1. Windows 用 CMD 打开 WAMP5 的MySQL数据库
  2. 老庙黄金2016春晚抢红包活动技术架构详解
  3. 美女联系网站作者删除之前的写真照
  4. 坑爹的360漏洞修补造成win7黑屏
  5. Emscripten 单词_真正的英语大神绝不死背单词! 他们用这种方法一周突破3500词
  6. BoxSup: Exploiting Bounding Boxes to Supervise Convolutional Networks for Semantic Segmentation
  7. Unity 调用 JAR
  8. 一,EAIDK-310开箱
  9. XXL分布式任务调度平台
  10. monkey命令——压力测试——个人总结