摘自

推荐系统

https://www.cnblogs.com/lzllovesyl/p/5243370.html

一、SVD奇异值分解

1、SVD简介

SVD(singular value decomposition)。其作用就是将一个复杂的矩阵分解成3个小的矩阵。

用一张图片表示SVD的结构

2、SVD计算

(1)特征值和特征向量

  如果A为方阵则

  一般我们会把W的这nn个特征向量标准化,此时W的nn个特征向量为标准正交基

这样我们的特征分解表达式可以写成

(2)当A是一般矩阵的时候

这样V和U就都求出来了。然后差奇异矩阵sigma。

3、SVD计算例子

(1)定义矩阵A

(2)

ATA的特征值和特征向量

AAT的特征值和特征向量

可得

二、LSI(隐式语义索引,Latent semantic indexing)

摘自:

https://www.cnblogs.com/pinard/p/6805861.html

在文本挖掘中,主题模型是比较特殊的一块,它的思想不同于我们常用的机器学习算法,因此这里我们需要专门来总结文本主题模型的算法。本文关注于潜在语义索引算法(LSI)的原理。

1、文本主题模型的特点

  在数据分析中,我们经常会进行非监督学习的聚类算法。它可以对我们的特征数据进行非监督的聚类。而主题模型也是非监督的算法,目的是得到文本按照主题的概率分布。从这个方面来说,主题模型和普通的聚类算法非常的类似。但是两者还是有区别的。

  聚类算法关注样本特征。而主题模型,就是对文字中隐含主题的一种建模方法。比如从“人民的名义”和“大康书记”这两个词我们很容易发现对应的文本有很大的主题相关度。但是通过词特征来聚类的话则很难找出,因为聚类方法不能考虑到隐含的主题这一块。

  如何找隐含的主题?常用的方法一般是基于统计学的生成方法。即假设以一定的概率选择了一个主题,然后以一定的概率选择当前主题的词。最后这些词组成了我们当前的文本。所有词的统计概率分布可以从语料库获得,具体如何以“一定的概率选择”,这就是各种具体的主题模型算法的任务了。

  还有一些不是基于统计的算法,比如LSI

2、LSI

  LSI有的文章也叫做LSA。LSI是基于SVD得到的文本主题的。

  SVD公式, 有时候sigma的纬度会降低为k

  SVD可以这样解释:我们输入的有m个文本,每个文本有n个词。Aij对应第i个词的第j个文本的特征值,这里最常用的是基于预处理后的标准化TF-IDF值。k是我们假设的主题数,一般要比文本数少。SVD分解后,Uil对应第i个词和第l个词义的相关度。Vjm对应第j个文本和第m个主题的相关度。Σlm对应第l个词和第m个主题的相关度。

  也可以反过来解释。矩阵的各种表示方式和上面反过来。

3、LSI的举例

假设有11个词三个文本的词频TF对应矩阵如下

假设对应的主题数为2,则通过SVD降维后得到的三维矩阵为:

从矩阵Uk我们可以看到词和词义(个人理解就是和主题)之间的相关性。而从V可以看到3个文本和两个主题的相关性。可以看到里面有负数,这个比较难解释。

4、LSI用于文本相似度计算

LSI得到的文本主题矩阵可以用于文本相似度的计算。而计算方法一般是通过余弦相似度计算。比如对于矩阵V我们可以计算第一个文本和第二个文本的余弦相似度

5、LSI主题模型总结

LSI可以通过一次分解就可以得到主题模型。同时解决词义的问题。但是LSI有很多不足,导致它在当前实际的主题模型中已经不再使用。

  • SVD计算很耗时,当词和文本数都很大时,对高纬度的矩阵进行SVD非常难。
  • 主题值的选取对结果的影响很大,很难选择合适的k值
  • LSI得到的不是一个概率模型,缺乏统计基础,结果难以解释。

当需要主题模型时候,如果文本数和词很少时,使用LSI可以。其它情况可以使用LDA和HDP。

对评分矩阵进行分解,SVD与LSI的更多相关文章

  1. 多维数组分解----SVD在推荐系统中的应用-

    http://www.janscon.com/multiarray/rs_used_svd.html [声明]本文主要参考自论文<A SINGULAR VALUE DECOMPOSITION A ...

  2. 用 GSL 求解超定方程组及矩阵的奇异值分解(SVD)

    用 GSL 求解超定方程组及矩阵的奇异值分解(SVD) 最近在学习高动态图像(HDR)合成的算法,其中需要求解一个超定方程组,因此花了点时间研究了一下如何用 GSL 来解决这个问题. GSL 里是有最 ...

  3. 矩阵LU分解的MATLAB与C++实现

    一:矩阵LU分解 矩阵的LU分解目的是将一个非奇异矩阵\(A\)分解成\(A=LU\)的形式,其中\(L\)是一个主对角线为\(1\)的下三角矩阵:\(U\)是一个上三角矩阵. 比如\(A= \beg ...

  4. 使用矩阵分解(SVD)实现推荐系统

    http://ling0322.info/2013/05/07/recommander-system.html 这个学期Web智能与社会计算的大作业就是完成一个推荐系统参加百度电影推荐算法大赛,成绩按 ...

  5. Matlab梯度下降解决评分矩阵分解

    for iter = 1:num_iters %梯度下降 用户向量 for i = 1:m %返回有0有1 是逻辑值 ratedIndex1 = R_training(i,:)~=0 ; %U(i,: ...

  6. 讲一下numpy的矩阵特征值分解与奇异值分解

    1.特征值分解 主要还是调包: from numpy.linalg import eig 特征值分解:  A = P*B*PT  当然也可以写成 A = QT*B*Q  其中B为对角元为A的特征值的对 ...

  7. R 操作矩阵和计算SVD的基本操作记录

    在R中可以用函数matrix()来创建一个矩阵,应用该函数时需要输入必要的参数值. > args(matrix) function (data = NA, nrow = 1, ncol = 1, ...

  8. 用 GSL 求解超定方程组及矩阵的奇异值分解(SVD) 2

    接上一篇... 下面我们将 SVD 相关的功能封装成一个类,以方便我们提取 S 和 V 的值. 另外,当我们一个 A 有多组 x 需要求解时,也只需要计算一次 SVD 分解,用下面的类能减少很多计算量 ...

  9. 矩阵LU分解分块算法实现

    本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...

随机推荐

  1. 【Teradata】安装SQL Assistant和Administrator 16.20(含查看.net版本)

    1.安装介质获取: 获取的路径:connections==>Gateways==>Customer Services==>TOOLS & APPLICATIONS(点击Mor ...

  2. day 12 装饰器

    nonlocal关键字 # 作用:将 L 与 E(E中的名字需要提前定义) 的名字统一​# 应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值​# 案例:​def outer():    n ...

  3. 跳跳棋[LCA+二分查找]-洛谷1852

    传送门 这真是一道神仙题 虽然我猜到了这是一道LCA的题 但是... 第一遍看题,我是怎么也没想到能和树形图扯上关系 并且用上LCA 但其实其实和上一道lightoj上的那道题很类似 只不过那时一道很 ...

  4. webservice调用和生成

    webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间 ...

  5. 在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合

    在开发项目的时候,往往碰到的不同的需求情况,兼容不同类型的数据库是我们项目以不变应万变的举措之一,在底层能够兼容多种数据库会使得我们开发不同类型的项目得心应手,如果配合快速的框架支持,那更是锦上添花的 ...

  6. day03(变量,常量,输入输出,注释,基本数据类型,运算符)

    一,复习 ''' 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别的字 ...

  7. 菜鸟学习计划浅谈之Linux系统

    人这一生都是在不断地学习,不断地进步中度过的,刚开始学习任何一门知识的时候,我们都习惯性的称自己为菜鸟,觉得自己对这方面的知识欠缺,水平很low,我也是如此.但我擅长总结,对于自己学习的新知识,总结学 ...

  8. 控制结构(2): 卫语句(guard clause)

    // 上一篇:分枝/叶子(branch/leaf) // 下一篇:状态机(state machine) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. 典型代码: 同步版本 f ...

  9. mybatis 使用resultMap实现表间关联

    AutoMapping auto mapping,直译过来就是自动映射,工作原理大概如下: 假设我们有一张表,表名为person,包含id,name,age,addr这4个字段 mysql> d ...

  10. Linux Redhat 7.6 操作系统 下载安装详解

    redhat 系统镜像分享 [百度网盘分享] (https://pan.baidu.com/s/1ALM6v1dAtPwmEt2tmyTghg ) 提取码:2i4o redhat 7.6版本安装详解 ...