非负矩阵分解 NMF 总结
好难啊,看的头疼。争取十一写出来。
1.非负矩阵分解
假定非负矩阵X∈Rd×nX\in R^{d\times n}X∈Rd×n,A∈Rd×kA\in R^{d\times k}A∈Rd×k,B∈Rn×kB\in R^{n\times k}B∈Rn×k为矩阵分解后的非负子矩阵,k远小于ddd和nnn.
X+≈A+B+TX_+\approx A_+B^T_+X+≈A+B+T
- 降维
A可以理解为降维后的特征与原始数据之间的关系,B为降维后的数据。 - 聚类
A为聚类后每一簇的样本中心点,B为每一个数据的指示矩阵,或者数据的簇划分。
求解AB的过程常采用最小化代价函数,代价函数常采用误差平方和。
minA⩾0,B⩾0∥X−ABT∥2\mathop {\min }\limits_{A \geqslant 0,B \geqslant 0} {\left\| {X - A{B^T}} \right\|^2}A⩾0,B⩾0min∥∥X−ABT∥∥2
2.非负矩阵的变形
2.1 Semi-NMF
2.2 Convex-NMF
2.3 Tri-NMF
2.4 Kernel-NMF
3.非负矩阵分解的算法
3.1梯度下降
3.2乘法算法
3.3交替最小二乘法
3.4拟牛顿法
3.5分层分解法
4.正交非负矩阵分解与K-means
目标函数以误差平方和计算:
minA⩾0,B⩾0∥X−ABT∥2\mathop {\min }\limits_{A \geqslant 0,B \geqslant 0} {\left\| {X - A{B^T}} \right\|^2}A⩾0,B⩾0min∥∥X−ABT∥∥2
约束为BTB=I{B^T}B=IBTB=I
目标函数可以转化为:
对上式中A求偏导
∂∂A(XTX−2XTABT+ATA)=2XB+2A=0\frac{\partial }{{\partial A}}({X^T}X - 2{X^T}A{B^T} + {A^T}A) = 2XB + 2A = 0∂A∂(XTX−2XTABT+ATA)=2XB+2A=0
可得:A=XBA = XBA=XB
代入:
minTr(XTX−BTXTXB)\min Tr({X^T}X - {B^T}{X^T}XB)minTr(XTX−BTXTXB)
s.tBTB=Is.t \; {B^TB=I}s.tBTB=I
K-means目标函数
minJk= min∑i=1C∑j=1ni∥xji−μi∥2= min∑i=1C(∑j=1nixjiTxji−1ni∑j=1nixji∑j=1nixji)\min {J_k}{\text{ = }}\min \sum\limits_{i = 1}^C {\sum\limits_{j = 1}^{{n_i}} {{{\left\| {x_j^i - {\mu ^i}} \right\|}^2}} } {\text{ = min}}\sum\limits_{i = 1}^C {\left( {\sum\limits_{j = 1}^{{n_i}} {x_j^{iT}x_j^i} - \frac{1}{{{n_i}}}\sum\limits_{j = 1}^{{n_i}} {x_j^i} \sum\limits_{j = 1}^{{n_i}} {x_j^i} } \right)} minJk = mini=1∑Cj=1∑ni∥∥xji−μi∥∥2 = mini=1∑C(j=1∑nixjiTxji−ni1j=1∑nixjij=1∑nixji)
令H={h1,h2⋯hC}H = \{ {h_1},{h_2} \cdots {h_C}\} H={h1,h2⋯hC}
其中,
则
这里需要注意的是K-means中对H的定义不仅是有非负性,还有具体的定义。
而正交非负矩阵分解中只有非负性定义。
5.对称正交非负矩阵分解与Spectral clustering
对称正交非负矩阵:
minFTF=I∥W−HHT∥2\mathop {\min} \limits_{F^TF=I} {\left\| {W - H{H^T}} \right\|^{\rm{2}}}FTF=Imin∥∥W−HHT∥∥2
上式转化为:
minHTH=I,H≥0Tr(WTW)−2Tr(HTWH)+Tr(HTH)\mathop {\min }\limits_{{H^T}H = I,H \ge 0} Tr({W^T}W) - 2Tr({H^T}WH) + Tr({H^T}H)HTH=I,H≥0minTr(WTW)−2Tr(HTWH)+Tr(HTH)
由于WTWW^TWWTW为常数,且HTH=IH^TH=IHTH=I,上式可以转化为:
maxHTH=ITr(HTWH)\mathop {\max} \limits_{H^TH=I}Tr(H^TWH)HTH=ImaxTr(HTWH)
谱聚类目标函数:
minFTDF=ITr(FTLF)=minFTDF=ITr[FT(D−W)F]=maxFTDF=ITr(FTWF)\mathop {\min }\limits_{{F^T}DF = I} Tr({F^T}LF) = \mathop {\min }\limits_{{F^T}DF = I} Tr\left[ {{F^T}(D - W)F} \right] = \mathop {\max }\limits_{{F^T}DF = I} Tr({F^T}WF)FTDF=IminTr(FTLF)=FTDF=IminTr[FT(D−W)F]=FTDF=ImaxTr(FTWF)
令H=D1/2FH=D^{1/2}FH=D1/2F,则上式可等价于:
maxFTDF=ITr(FTWF)=maxHTH=ITr(HTPH)\mathop {\max }\limits_{{F^T}DF = I} Tr({F^T}WF)=\mathop{\max}\limits_{{H^T}H=I}Tr(H^TPH) FTDF=ImaxTr(FTWF)=HTH=ImaxTr(HTPH)
其中,P=D−1/2WD−1/2P=D^{-1/2}WD^{-1/2}P=D−1/2WD−1/2
非负矩阵分解 NMF 总结相关推荐
- 文本主题模型之非负矩阵分解(NMF)
1. 非负矩阵分解(NMF)概述 非负矩阵分解(non-negative matrix factorization,以下简称NMF)是一种非常常用的矩阵分解方法,它可以适用于很多领域,比如图像特征识别 ...
- 【机器学习】(十七)非负矩阵分解NMF:人脸图像特征提取、用特征排序;还原混合信号
非负矩阵分解(NMF)是一种无监督学习算法,目的在于提取有用的特征(可以识别出组合成数据的原始分量),也可以用于降维,通常不用于对数据进行重建或者编码. 与PCA相同,NMF将每个数据点写成一些分量的 ...
- 非负矩阵分解NMF(1): 非调包python实现
文章目录 1. 矩阵分解(Matrix Factorization): 1.1 公式推导 1.2 代码实现 1.3 在图像数据下的效果 2. 非负矩阵分解(Non-negative Matrix Fa ...
- 详解非负矩阵分解(NMF)及其在脑科学中的应用
非负矩阵分解及其在脑科学中的应用 基本原理 确定最优因子数量 代码实现 非负矩阵分解与主成分分析的区别 非负矩阵分解在脑科学中的应用 应用一:神经发育模式:T2w/T1w比值映射的非负矩阵分解(NMF ...
- 推荐算法——非负矩阵分解(NMF)
1. 矩阵分解回顾 在博文推荐算法--基于矩阵分解的推荐算法中,提到了将用户-商品矩阵进行分解,从而实现对未打分项进行打分.矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品矩阵 ...
- 机器学习笔记:非负矩阵分解问题 NMF
1 NMF介绍 NMF(Non-negative matrix factorization),即对于任意给定的一个非负矩阵V,其能够寻找到一个非负矩阵W和一个非负矩阵H,满足条件V=W*H,从而将一个 ...
- Non-Negative Matrix Factorization 非负矩阵分解(NMF)
Non-Negative Matrix Factorization 非负矩阵分解(NMF) 简介及基本思想 1999年由D.D.Lee和H.S.Seung提出的新的矩阵分解思想,在矩阵中所有元素均为非 ...
- 推荐系统笔记:基于非负矩阵分解的协同过滤
1 非负矩阵分解 非负矩阵分解 (NMF) 可用于非负的评级矩阵. 这种方法的主要优势不一定是准确性,而是它在理解用户-项目交互方面提供的高度可解释性. 与其他形式的矩阵分解的主要区别在于因子 U 和 ...
- 大数据聚类分析用于预测_多模态数据中的非负矩阵分解用于分割和标签预测
引用 Akata Z, Thurau C, Bauckhage C. Non-negative matrix factorization in multimodality data for segme ...
- python-非负矩阵分解-NMF
非负矩阵分解 非负矩阵分解是矩阵中所有元素均为非负数约束条件下的矩阵分解,其基本思想:给定一个非负矩阵V,NMF能够找到一个非负矩阵W和一个非负矩阵H,使得矩阵W和矩阵H的乘积近似等于矩阵V中的值. ...
最新文章
- 一款java代码生成器(我受够了加班),走起!
- mongodb中分页显示数据集的学习
- java quartz timer_Java定时器Quartz和Timer
- InputStream中通过mark和reset方法重复利用缓存
- 前端学习(2640):懂代码之登录页login.vue存入用户信息
- error: numpy/arrayobject.h No such file or directory解决方法
- Vue3学习之第二节:ref函数、reactive函数
- sql 创建存储过程
- 张家口地区某一级公路设计--河北建筑工程学院
- 使用DevKit开发插件
- 妖怪,看法宝-看反射的“照妖镜”如何让类原形毕露
- 双11快速拉新促活,容联云智能客服助力商家提升GMV
- GDI+绘图轻松入门[5]-绘图坐标的理解和应用
- python 发送邮件
- Unity游戏存档-PlayerPrefs类
- linux更改patrol密码,Linux常用的文件管理命令及用户管理命令
- C++求1000以内的完数
- html页面自动关闭代码,Javascript 实现倒计时(10秒)自动关闭网页
- 【中国各省级行政单位编码及缩写】
- 检测计量与计算机技术,测试计量技术及仪器
热门文章
- 管道爬行机器人内部陀螺仪_管道爬行机器人组成部分
- 机器学习教程之4-正则化(Regularization)
- java pos58打印_POS58票据热敏打印机,怎么用ESC/POS命令控制打印
- 鼠标测试软件m,罗技M525鼠标使用测试_罗技 M525鼠标_键鼠评测-中关村在线
- Java实战之管家婆记账系统(19)——报告界面及功能实现
- linux服务器删除weblogic,linux weblogic安装和卸载
- Java音频格式转换,支持amr、aud、slk、silk转成mp3
- 产业互联网周报:中国移动:择时分拆业务上市;金山云CEO王育林辞职;谷歌负面缠身,数据中心爆炸又遭罚款...
- vbm 分析_vbm分析 | Forum of resting-state fMRI
- ftp常用命令使用方法