数学基础:

线性代数的矩阵乘法运算。

非负矩阵分解是一种特征提取的算法,它尝试从数据集中寻找新的数据行,将这些新找到的数据行加以组合,就可以重新构造出数据集。

算法要求输入多个样本数据,每个样本数据都是一个m维数值向量,首先把我们的数据集用矩阵的形式写出来,每一列是一个数据,而每一行是这些数据对应维度的数值。于是我们就有了一个大小为m*n的输入矩阵。而算法的目标就是将这个矩阵分解为另外两个非负矩阵的积。

 $M_{m*n}=A_{m*r}B_{r*n}$

我们将分解矩阵后新得出的一个维度称为特征,那么在前一个m*r的矩阵中,第i行第j列的值就代表属性i对第j种特征的贡献值,而后一个矩阵的第i行第j列则代表第i种特征对第j个样本的贡献值。这样我们就找出了输入样本的r种特征。

r的大小应该依照需要进行选择,比如如果是希望找到某些共性特征,则就要选择较小的r。当我们确定了一个较为合适的r值后,就要想办法确定后面两个矩阵具体的值了。

书中给出的算法大致如下:

  1. 定义一个函数计算用来两个矩阵的差异程度(每个对应元素相减后平方的和)
  2. 随机生成2个矩阵(m*r维和r*n维)记为A(权重矩阵),B(特征矩阵)
  3. 计算A*B与输入的m*n的数据矩阵的差异,足够小则停止,否则继续
  4. 按一定规则调整A,B的值后转3.

对于调整的方法,可以用模拟退火(下一篇文章中会提到)等多种算法,书里使用的是乘法更新法则,该法则我没有认真去看….感兴趣的可以去看论文….英文的…

http://hebb.mit.edu/people/seung/papers/nmfconverge.pdf.

算法如下:

hn 转置后的权重矩阵和数据矩阵相乘的结果

hd 转置后的权重矩阵和原权重矩阵相乘再乘特征矩阵的结果

wn数据矩阵与转置后的特征矩阵相乘的结果

wd权重矩阵与特征矩阵相乘,再与转置后的特诊矩阵相乘得到的矩阵

为了更新特征矩阵和权重矩阵,我们先把上面所有矩阵变为数组.然后把特征矩阵中每一个值与hn中对应值相乘,并除以hd中对应的值.类似的,我们再将权重矩阵中每一个值与wn中的对应值相乘,并除以wd中对应的值.

最近的算法都很好理解的样子…不过写起来还是挺麻烦的….还有最后一篇优化了,内容挺多,包括模拟退火和遗传算法….恩

转载于:https://www.cnblogs.com/luosha/archive/2009/09/25/2571544.html

算法总结8—非负矩阵因式分解相关推荐

  1. 机器学习与数据挖掘基本算法初步介绍

    随着互联网技术的发展,特别是web2.0时代的到来,互联网为我们提供了丰富的数据来源,如何充分的利用这些数据,挖掘用户信息,是下一代互联网急需解决的问题. 机器学习和数据挖掘主要是解决以下几个方面的问 ...

  2. NTL密码算法开源库--综述

    2021SC@SDUSC NTL密码算法开源库--综述 项目综述 NTL算法库是开放源码的自由软件,具有专业处理任意精度大整数.实数的计算数论与计算代数的高性能可移植c++库,提供了任意大整数.任意精 ...

  3. NTL密码算法开源库(数论库)代码分析项目--综述

    2021SC@SDUSC NTL密码算法开源库(数论库)代码分析项目--综述 项目综述 NTL开源代码库的安装和使用 NTL代码开源库主要解决的问题 项目分工以及核心代码的分配 项目综述 NTL算法库 ...

  4. Non-negative Matrix Factorization 非负矩阵分解

    Non-negative Matrix Factorization 非负矩阵分解 Introduction 定义 非负矩阵分解(non-negative matrix factorization),或 ...

  5. Nat. Mach. Intell.| 机器学习显著降低药物组合筛选成本

    今天给大家介绍2019年12月发表在Nature Machine Intelligence的论文"Prediction of drug combination effects with a ...

  6. 【Python学习系列二十三】Scikit_Learn库降维方法(矩阵分解)-PCAFA

    1主成分分析PCA 1.1 精确PCA和似然估计 PCA基于最大方差的正交变量分解多维数据集.在scikit-learn库中,PCA的实现是先通过fit方法计算n维的特征值和特征向量,然后通过tran ...

  7. 学习中碰到的一些优化工具包和库

    1.linear svm 这个工具包目前用的比较多.例如面部特征点的回归方法中,学习线性回归的权重,例如:Face Alignment at 3000 FPS中: minWt∑i=1N||△s^ti− ...

  8. 神经放射学诊断中的MRI数据分析

    文档使用说明: 蓝色色字:小编注解 红色字:小编重点强调的知识点 紫色注解:原文旁注解 核磁共振成像(MRI)是神经放射学诊断的一种非侵入性成像工具.最近提出的自动MRI分析的概念结合机器学习的使用, ...

  9. [论文阅读笔记17]A Survey on Knowledge Graph-Based Recommender Systems

    一,题目 TKDE 2020 A Survey on Knowledge Graph-Based Recommender Systems 综述:基于知识图谱的推荐系统 In IEEE Transact ...

最新文章

  1. android binder
  2. u-boot的mkconfig文件详解
  3. 适合小白的卷积神经网络图解
  4. android 模拟点击 不发出声音,【Android】代码实现模拟屏幕点击和键盘按键事件...
  5. 怎么让手机变成震动器_详解iPhone 手机标配的两种技术:线性马达和3Dtouch,有多好用?...
  6. python制作微信个人二维码_Python实现 | 微信带参数的二维码
  7. ssl2331OJ1373-鱼塘钓鱼 之3【dp】
  8. c语言不同类型变量用什么表示什么作用,C语言数据类型及变量整理
  9. Python爬虫提取神器,正则表达式(re模块),全程干货!
  10. c++从txt中读取数据,数据并不是一行路径(实用)
  11. 【论文】Awesome Relation Classification Paper(关系分类)(PART I)
  12. layui.use 在a标签内onclick调用
  13. 体验VMware View HTML Access
  14. python水仙花数判断程序
  15. [4G5G专题-106]:部署 - LTE无线网络规划与设计概览
  16. ubuntu linux 软件安装位置,ubuntu查看软件安装位置
  17. 微信刷票怎么查实_怎么检查“微信公众平台投票”是否有刷票?
  18. 【vivado使用】第3篇:BD文件(ip integrator)使用技巧
  19. llvm-IR基础知识
  20. [AC自动机+dp] whu oj 1572 I - Cyy and Fzz

热门文章

  1. Python3 SSH远程连接服务器
  2. C++ 标准文件的写入读出(ifstream,ofstream)
  3. java aop注解日志记录_spring aop通过注解实现日志记录
  4. java 获取视频信息_Java获取视频参数信息
  5. 数学rect什么意思_数学怎么审题?孩子必须知道的几个点!
  6. open wrt 跟换主题_换变速箱油的常见疑问解答
  7. 快速锁屏电脑快捷键_电脑小技巧
  8. python function terminated un_绕过 RestrictedUnpickler
  9. python绘制汉字_OpenCV Python 绘制中文字
  10. java实现远程系统控制_java实现电脑远程控制完整源代码