1 NMF介绍

NMF(Non-negative matrix factorization),即对于任意给定的一个非负矩阵V,其能够寻找到一个非负矩阵W和一个非负矩阵H,满足条件V=W*H,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。

其中,V矩阵中每一列代表一个观测点的信息(observation),每一行代表一个特征(feature);W矩阵称为基矩阵,H矩阵称为系数矩阵或权重矩阵。此时V矩阵的每一列,都相当于基矩阵W的每一列对于H矩阵每一列的加权和。

这时用系数矩阵H代替原始矩阵,就可以实现对原始矩阵进行降维,得到数据特征的降维矩阵,从而减少存储空间。(H的每一个列向量可以看成矩阵V对应的列向量,投影到基矩阵W的每一个列向量得到的坐标)

NMF本质上说是一种矩阵分解的方法,它的特点是可以将一个大的非负矩阵分解为两个小的非负矩阵,又因为分解后的矩阵也是非负的,所以也可以继续分解。

非负矩阵分解的关键是“非负”,即原数据和新基底都必须是非负数,或者说位于“第一象限”,这样原数据投影在新基底上的数值才自然也是非负数。

2 用数学语言定义NMF

将矩阵分解问题转换成两个矩阵之间误差最小化的问题

3 W和H的迭代公式

采用的是迭代法,一步步逼近最终的结果,当计算得到的两个矩阵W和H收敛时,就说明分解成功。

需要注意的是,原矩阵和分解之后两个矩阵的乘积并不要求完全相等,可以存在一定程度上的误差。

4 NMF的损失函数

4.0 naive form

用 矩阵表示,则是:

4.1 squared frobenius norm

4.2 KL散度

X,Y分别是原矩阵和WH的乘积结果

4.3  Itakura-Saito (IS)

5 NMF应用举例

5.1:文本主题模型

假设我们输入有m个词,n个文本。Aij对应的是第i个词在第j个文本的特征值。

经过NMF分解后,Wik对应的是第i个词和第k个“主题”的概率相关度;Hkj对应的是第j个文本和第k个“主题”的概率相关度

5.2 图像处理

6 NMF的不足

NMF作为一个漂亮的矩阵分解方法,它可以很好的用于主题模型,并且使主题的结果有基于概率分布的解释性。

但是NMF只能对训练样本中的文本进行主题识别,而对不在样本中的文本识别不一定很准确。

文本主题模型之非负矩阵分解(NMF) - 刘建平Pinard - 博客园 (cnblogs.com)

7 NMF的实现(sklearn)

#导入库
from sklearn.decomposition import NMF
import numpy as npX = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])#定义NMF模型
model = NMF(n_components=2, #分解的稠密矩阵中k的大小beta_loss='frobenius',  # {'frobenius', 'kullback-leibler', 'itakura-saito'}#对应的是前面说的1~3三种损失函数# 一般来说,默认使用naive的损失函数('frobenius',同时alpha默认为0)tol=1e-4,  # 停止迭代的极限条件init='random',# W H 的初始化方法max_iter=200,  # 最大迭代次数l1_ratio=0.,  # L1正则化比例alpha=0.,  # 正则化参数random_state=0)#打印model 构造函数各参数
print(model.get_params())
'''
{'alpha': 0.0, 'beta_loss': 'frobenius', 'init': 'random', 'l1_ratio': 0.0, 'max_iter': 200, 'n_components': 2, 'random_state': 0, 'shuffle': False, 'solver': 'cd', 'tol': 0.0001, 'verbose': 0}
'''W = model.fit_transform(X)
#相当于model.fit(X) 和 W=model.transform(X) 两步
H = model.components_print(W,'\n',H,'\n',model.n_iter_,'\n',model.reconstruction_err_)
'''
[[0.         0.46880684][0.55699523 0.3894146 ][1.00331638 0.41925352][1.6733999  0.22926926][2.34349311 0.03927954][2.78981512 0.06911798]][[2.09783018 0.30560234][2.13443044 2.13171694]]30 0.0011599349216014024
'''

机器学习笔记:非负矩阵分解问题 NMF相关推荐

  1. 机器学习:非负矩阵分解(NMF)

  2. Non-Negative Matrix Factorization 非负矩阵分解(NMF)

    Non-Negative Matrix Factorization 非负矩阵分解(NMF) 简介及基本思想 1999年由D.D.Lee和H.S.Seung提出的新的矩阵分解思想,在矩阵中所有元素均为非 ...

  3. 机器学习笔记 - 特征分解

    一.特征分解概述 在数学上,本征分解是线性代数的一部分,我们用它来将矩阵分解为其规范形式.在使用特征分解进行因式分解后,我们根据其特征向量和特征值来表示矩阵.需要说明的是,只能使用特征分解来分解方阵. ...

  4. nmf算法 python_非负矩阵分解(NMF)及一个小实例

    最近在做一道题,题目的要求如下图,其中如2-digits这张图,图中每两个数字构成一个子图(横着看,比如第一行为41,43,42,14,12,14,23,41),对应的右图为左图的一个主成分元素,即2 ...

  5. 非负矩阵分解(NMF)的Matlab实例与说明

    原理啥的到处都有,就直接跳过了.这里主要是NMF的基础实验.下一篇是NMF的高光谱实验总结. 1. matlab示例解说 这一节的图片来自官方文档. 这里第一和第三变量在第一行的值0.6945和0.6 ...

  6. NMF 非负矩阵分解 -- 原理与应用

    1.原理 发现写关于非负矩阵的博文还是蛮多的,还是以自己的角度总结一下自己的最近看的若干东西以及对非负矩阵分解有用的一些资料链接.NMF,全称为non-negative matrix factoriz ...

  7. SVD(奇异值分解)+NMF(非负矩阵分解)

    SVD(奇异值分解)+NMF(非负矩阵分解) NMF==>变为两个矩阵相乘 SVD==>变为三个矩阵相乘

  8. NMF非负矩阵分解初探

    NMF非负矩阵分解初探 NMF非负矩阵分解初探 简介 NMF信号分解 最优化问题NMF 简介 数据可以表示为一个矩阵 VVV,列 vn" role="presentation&qu ...

  9. sklearn基础篇(十)-- 非负矩阵分解与t-SNE

    1 非负矩阵分解(NFM) NMF(Non-negative matrix factorization),即对于任意给定的一个非负矩阵V\pmb{V}VVV,其能够寻找到一个非负矩阵W\pmb{W}W ...

最新文章

  1. 3种设计模式java小程序_Java设计模式之单例模式(3种实现方式)
  2. 关于项目管理的一些想法
  3. PAT乙类1009 说反话 (20 分)
  4. 射线和三角形的相交检测(ray triangle intersection test)
  5. python爬虫bs4_Python爬虫系列-Xpath自如和bs4链家
  6. JS If...Else
  7. 开源cms系统We7插件开发准备工作全面就绪
  8. ECharts x坐标轴(xAxis)使用详解
  9. hosts文件为空,仍然显示ERR_CONNECTION_RESET的解决方法(hosts.ics)
  10. 华为网络---静态路由
  11. 猿辅导、掌门教育悄然转身,发力素质教育
  12. 微信小程序getday方法_日期getDay()方法和JavaScript中的示例
  13. 基于大数据分析技术在会计方面的研究
  14. springboot+nodejs+vue教师备课系统网站
  15. 单臂路由之2,多网口软路由实现单臂路由功能,且其剩余网口及光猫剩余网口均实现上网功能
  16. 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API
  17. 嵌入式系统测试工具——ETest
  18. android 从顶部弹出的SnackBar
  19. 【Spark GraphX】社交网图分析
  20. NB-IoT通信模组/模块

热门文章

  1. Linux-shell-完全详解
  2. innobackupex --rsync 报错 Error: can't create file (null)/xtrabackup_rsyncfiles_pass1
  3. IEEE802.11e EDCA 中TXOP机制的分析与改进
  4. 看完这篇文章之后,终于明白了编译到底怎么回事
  5. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名
  6. 计算机科学与技术单片机55,关于计算机技术与科学专业的考研信息
  7. c语言调用shell命令一 popen使用以及获取命令返回值
  8. linux 删除o开头的文件,linux实现除了某个文件或某个文件夹以外的全部删除
  9. java web压缩过滤器_Java Web过滤器Filter(五)
  10. vue 生命周期_Vue 生命周期