http://blog.csdn.net/pipisorry/article/details/52098864 非负矩阵分解(NMF,Non-negative matrix factorization) NMF的发展及原理 著名的科学杂志<Nature>于1999年刊登了两位科学家D.D.Lee和H.S.Seung对数学中非负矩阵研究的突出成果.该文提出了一种新的矩阵分解思想--非负矩阵分解(Non-negative Matrix Factorization,NMF)算法,即NMF是在矩阵中所…
在文本主题模型之潜在语义索引(LSI)中,我们讲到LSI主题模型使用了奇异值分解,面临着高维度计算量太大的问题.这里我们就介绍另一种基于矩阵分解的主题模型:非负矩阵分解(NMF),它同样使用了矩阵分解,但是计算量和处理速度则比LSI快,它是怎么做到的呢? 1. 非负矩阵分解(NMF)概述 非负矩阵分解(non-negative matrix factorization,以下简称NMF)是一种非常常用的矩阵分解方法,它可以适用于很多领域,比如图像特征识别,语音识别等,这里我们会主要关注于它在文本主…
1. 起因 之前的代码(单细胞分析实录(17): 非负矩阵分解(NMF)代码演示)没有涉及到python语法,只有4个python命令行,就跟Linux下面的ls grep一样的.然鹅,有几个小伙伴不会命令行,所以我决定再改写一下,把命令行都放到R下面运行. 2. 尝试 2.1 一开始,我的想法是教大家在R里面调用python,需要提前下载好anaconda和一些python包 然而想了想在Windows上安装python包可能对大家不是很友好,有些包很难装,我之前也弄了很久.考虑到这次更新是针…
一.矩阵分解回想 在博文推荐算法--基于矩阵分解的推荐算法中,提到了将用户-商品矩阵进行分解.从而实现对未打分项进行打分. 矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品矩阵(评分矩阵),记为Vm×n.能够将其分解成两个或者多个矩阵的乘积,如果分解成两个矩阵Wm×k和Hk×n.我们要使得矩阵Wm×k和Hk×n的乘积能够还原原始的矩阵Vm×n: Vm×n≈Wm×k×Hk×n=V^m×n 当中,矩阵Wm×k表示的是m个用户与k个主题之间的关系,而矩阵Hk×n表示的是k个主题…
本文从基础介绍隐语义模型和NMF. 隐语义模型 ”隐语义模型“常常在推荐系统和文本分类中遇到,最初来源于IR领域的LSA(Latent Semantic Analysis),举两个case加快理解. 向用户推荐物品 在推荐系统中,可以通过隐含语义模型将用户(user)和物品(item)自动分类,这些类别是自动生成的.这些类别也可以叫做“隐含的分类”,也许看不懂.每个用户或者物品会被分到多个类别中,属于某个类别的权重会被计算出来. 假设现在有一个大小为m×n的评分矩阵V,包含了m个用户对n个物品的…
本次演示使用的数据来自2017年发表于Cell的头颈鳞癌单细胞文章:Single-Cell Transcriptomic Analysis of Primary and Metastatic Tumor Ecosystems in Head and Neck Cancer.本次演示提供处理好的测试数据,以及所有代码,一共6个脚本(我目前写得最详细的教程,也是全网少有的). 数据的预处理就不演示了,预处理的代码存放在0.pre.R文件中. 以下是肿瘤细胞tsne图和原图的对比,和原文一致,说明前面…
1.什么是非负矩阵分解? NMF的基本思想可以简单描述为:对于任意给定的一个非负矩阵V,NMF算法能够寻找到一个非负矩阵W和一个非负矩阵H,使得满足 ,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积.如下图所示,其中要求分解后的矩阵H和W都必须是非负矩阵. 分解前后可理解为:原始矩阵的列向量是对左矩阵中所有列向量的加权和,而权重系数就是右矩阵对应列向量的元素,故称为基矩阵,为系数矩阵.一般情况下的选择要比小,即满足,这时用系数矩阵代替原始矩阵,就可以实现对原始矩阵进行降维,得到数据特征的降维矩…
非负矩阵分解(NMF)是一种无监督学习算法,目的在于提取有用的特征(可以识别出组合成数据的原始分量),也可以用于降维,通常不用于对数据进行重建或者编码. NMF将每个数据点写成一些分量的加权求和(与PCA相同),并且分量和系数都大于0, 只能适用于每个特征都是非负的数据(正负号实际上是任意的). 1.将NMF应用于模拟数据 应用NMF时,我们必须保证数据是正的 如图 两个分量的NMF:分量指向边界,所有的数据点都可以写成这两个分量的正数组合. 一个分量的NMF:分量指向平均值,指向这里可以对数据…
1.交叉验证 交叉验证(Cross validation),交叉验证用于防止模型过于复杂而引起的过拟合.有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法. 于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证. 一开始的子集被称为训练集.而其它的子集则被称为验证集或测试集. 交叉验证是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize).交叉验证一般要尽量满足: 1)训练集的比例要足够多,一般大于一半2)训练集和测试集…
一.矩阵分解回想 矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品(评分矩阵),记为能够将其分解为两个或者多个矩阵的乘积,如果分解成两个矩阵和 .我们要使得矩阵和 的乘积能够还原原始的矩阵 当中,矩阵表示的是m个用户于k个主题之间的关系,而矩阵表示的是k个主题与n个商品之间的关系 通常在用户对商品进行打分的过程中,打分是非负的,这就要求: 这便是非负矩阵分解(NMF)的来源. 二.非负矩阵分解 2.1.非负矩阵分解的形式化定义 上面介绍了非负矩阵分解的基本含义.简单来讲,…