论文笔记[156]PARAFAC. tutorial and applications
原文下载:https://www.sciencedirect.com/science/article/abs/pii/S0169743997000324
摘要
本文介绍了PARAFAC的多维分解方法及其在化学计量学中的应用。PARAFAC是PCA对高阶数组的推广,但该方法的一些特性与普通的二维情况截然不同。例如,可以从多维光谱数据(multi-way spectral data)中恢复出纯光谱(pure spectra)。
1 介绍
以交叉方式测量变量,结果的集合为多维数据。
PARAFAC以及二路PCA等方法都是多线性或双线性分解方法,它们将数组分解成分数和负载[16](loadings)的集合,希望以比原始数据数组更精简的形式描述数据。
主成分分析模型可以被认为是最复杂和最灵活的模型,而PARAFAC是最简单和最受限制的模型。
结构越多,拟合越差,模型越简单。使用多维方法不是为了获得更好的拟合,而是为了获得更充分、更稳健和可解释的模型。
对于组分数为F的I×J×K数组,平行因子模型含有F(I+J+K)个参数。
PARAFAC的一个非常令人讨厌的特性是计算模型所需的时间很长。所使用的算法通常基于交替最小二乘法(ALS),ALS的初始化使用随机值或基于广义特征值问题的直接三线性(trilinear)分解。
在下文中,为了简单起见,讨论将仅限于三维(three-way)数据,但大多数结果对任何(更高)阶的数据和模型都有效。
2 术语
标量:小写斜体
矢量:粗体小写
二维矩阵:粗体大写
三维数组:带下划线的粗体大写字母
xijk:X的第ijk个元素
模式(mode)、way和顺序(order)这三个术语或多或少可以互换使用。
术语因子(factor)和组分(component)之间没有区别。
3 模型
数据被分解为三线性分量(三元组,triads),每个分量由一个分数向量和两个负载向量组成。在三维中,通常不区分分数和负载(,因为分数和负载在数学上是同等对待的)。
三维数组的平行因子模型由三个负载矩阵A、B、C组成(其中的元素分别表示为aif、bjf、ckf),建立三线性模型以最小化模型中的残差eijk。三维数组的元素可由负载矩阵的元素与残差计算得到,公式如下:
x i j k = ∑ f = 1 F a i f b j f c k f + e i j k ( 1 ) x_{ijk}=\sum_{f=1}^{F}a_{if}b_{jf}c_{kf}\;+e_{ijk} (1) xijk=f=1∑Faifbjfckf+eijk(1)
图1为公式(1)在二组分情况下的计算示意图。
该模型也可记为: X ‾ = ∑ f = 1 F a f ⨂ b f ⨂ c f \underline{X}=\sum_{f=1}^{F}a_f\bigotimes b_f\bigotimes c_f X=f=1∑Faf⨂bf⨂cf
其中af、bf、cf分别为矩阵A、B、C的第f列。
3.1 唯一性
PARAFAC模型的一个明显优点是解的唯一性。如果数据确实是三线性的,使用了正确数量的分量并且信噪比合适,就能得到真正的潜在光谱。
3.2 多维数组的秩(rank)
秩为1的矩阵可以写成2个向量(分数和负载向量)的外积。这样的组成部分被称为二元组。
三元组是二元组的三线性等价物,即三线性(PARAFAC)分量,是3个向量的积。
4 实现
4.1 交替最小二乘法(Alternating least squares)
PARAFAC模型的解可以通过该方法找到,方法是依次假设两种已知模式下的载荷,然后估计最后一种模式的未知参数集。这也是最初提出的对模型进行估计的方式。
PARAFAC ALS算法的流程:
(0)确定组分数F
(1)初始化B和C
(2)通过最小二乘回归,从X, B, C中估计A
(3)用同样的方法估计B
(4)用同样的方法估计C
(5)从步骤(2)开始往下执行,直到收敛。
ALS算法将在每次迭代中改善模型的拟合。如果算法收敛到全局最小值,则找到模型的最小二乘解。
ALS的优点:确保每次迭代都能优化解;ALS的主要缺点:模型估计时间长,当变量数量很多时,有时需要数百到数千次迭代才能收敛。
6 评估解
6.2 杠杆和残差
杠杆和残差可用于影响和残差分析。
6.3 组分数
提取太多的分量不仅意味着噪声被越来越多地建模,而且真实因素被更多(相关)的分量建模。
确定组分数的主要方法有三种:(1)分半实验,(2)判断残差,(3)与建模数据的外部知识进行比较。
[19]主张使用分半实验。其想法是将数据分为两半,然后在这两半上创建PARAFAC模型。通常情况下,应该以具有足够数量的自变量/样本(independent variables/samples)的模式来分割数据。
9 应用II:稀疏荧光数据的唯一分解
9.1 数据
这个问题是PARAFAC使用非负约束获得唯一分解的一个示例。
样品:含有不同量的酪氨酸、色氨酸和苯丙氨酸的2个样品。
因此,要分解的数组是2×51×201。
图10d中的估计负载(实线)与纯谱(虚线,注意区分)一起显示。估计的载荷量现在与纯光谱非常相似。
样本模式的负载是估计的分析物的浓度。
在多线性分解中应该避免瑞利散射,有三种方法可以做到这一点:(iii)测量空白,并从样品测量值中减去该测量值。在这个实验中,最初没有采取任何措施来消除瑞利散射。
9.2 结果与讨论
- 三组分PARAFAC溶液的发射负载如图10a所示。从中可以看出,与色氨酸相对应的光谱具有大的负区域。得出的结论是,由于变化性小(两个样品),分解很困难。由于我们知道荧光光谱和浓度应该是正的,所以很自然地将PARAFAC 负载限制在正值 。
- 在图10b中,使用非负性约束显示了估计的发射负荷。估计的光谱与分析物的纯光谱非常相似,但对于色氨酸,由于非多重线性瑞利散射,在300mn以下有一个小峰。
- 为了避免这种情况,试图将受瑞利散射影响的所有变量设置为缺失值,然后估计相应的PARAFAC模型,结果如图10c所示。
- 显然,仅凭这一点不足以确保色氨酸光谱具有良好的曲线分辨率。将缺失元素方法与非负约束相结合,有助于模型关注图中数据的正确方面。在图10d中,估计的发射负载与纯光谱一起显示。估计的载荷现在与纯光谱非常相似。估计的激发光谱如图11所示。
相关文章:
论文笔记[156]PARAFAC. tutorial and applications
原文下载:https://www.sciencedirect.com/science/article/abs/pii/S0169743997000324 摘要 本文介绍了PARAFAC的多维分解方法及其在化学计量学中的应用。PARAFAC是PCA对高阶数组的推广,但该方法的一些特性与普通的二维情况截然不同。例如,…...
AKKA.Net 的使用 来自CHATGPT
请用C# 语言实现一个自动化设备 流水线调度模型,流水线各个环节需要并行执行: 下面是一个使用C#语言实现自动化设备流水线调度模型的简单示例。该示例使用并发编程库System.Threading.Tasks来实现流水线各个环节的并行执行。 csharp using System; usi…...
网络安全—小白学习笔记
1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟入…...
OpenRemote: Java 开源 IoT 物联网开发平台,匹配智慧城市、智能家居、能源管理
OpenRemote 是一个直观、用户友好的基于Java语言的开源 IoT 物联网设备管理平台,它包括从连接设备到构建应用程序和特定领域的智能应用程序的所有功能和特性。通过OpenRemote物联网平台,用户可以收集和处理来自不同设备的传感器数据,适用于智…...
GO-unioffice实现word编辑
导包 import ("fmt""log""os""time""github.com/unidoc/unioffice/common/license""github.com/unidoc/unioffice/document" ) 创建word文件 func CreateFile(name string) {filename : name ".docx&quo…...
SpringMVC的拦截器(Interceptor)
拦截器简介 SpringMVC的拦截器Interceptor,主要是对Controller资源访问时进行拦截的基本操作的技术,当然拦截后可以进行权限控制,功能增强等都是可以的。拦截器类似于JavaWeb开发中的Filter,他们之间的区别如下图所示 Filter技术…...
【git】gitlab常用命令
gitlab官网 官网:官网 中文官网:中文官网 默认的gitlab安装目录 /opt/gitlab/bin 启动 gitlab-ctl start 查看状态 gitlab-ctl status 停止 gitlab-ctl stop 重启GitLab gitlab-ctl restart 查看gitlab的配置文件 配置的路径是:/…...
解读下SWD协议以及其应用
SWD协议原理 SWD(Serial Wire Debug)协议是一种用于ARM Cortex微控制器的调试接口协议。它定义了主机计算机与目标设备之间通过SWD线进行通信的格式和规范。 SWD协议使用两根线进行通信:SWDIO(Serial Wire Debug I/O)…...
基于单目的光流法测速
目录 1.简介 2.代码实现 1.简介 基于单目的光流法是一种常见的计算机视觉技术,用于估计图像序列中物体的运动速度。它通过分析连续帧之间的像素变化来推断物体在图像中的移动情况。 背景: 光流法是计算机视觉领域中最早的运动估计方法之一,…...
排序-算法
文章目录 一、排序的概念及引用1.1 排序概念1.2 排序运用1.3 常见排序算法 二、常见排序算法的实现2.1 插入排序2.1.1 基本思想2.1.2 直接插入排序2.1.3 希尔排序 2.2 选择排序2.2.1 基本思想2.2.2 直接选择排序2.2.3 堆排序 2.3 交换排序2.3.1 冒泡排序2.3.2 快速排序2.3.3 快…...
【特纳斯电子】基于单片机的火灾监测报警系统-实物设计
视频及资料链接:基于单片机的火灾监测报警系统-实物设计 - 电子校园网 (mcude.com) 编号: T0152203M-SW 设计简介: 本设计是基于单片机的火灾监测报警系统,主要实现以下功能: 1.通过OLED显示温度、烟雾、是否有火…...
网络安全就业形势怎么样?
泻药,以下都是我本人的肺腑之言,是答主深耕职场多年,转战数家公司总结周围朋友的从业经验才总结出来的行业真相,真心希望帮助到还没有步入职场的大家,尤其是24届的应届毕业生,多掌握些就业信息就能少走一些…...
【Golang】Go的并发和并行性解释。谁说Go不是并行语言?
偶然发现百度上有很多"师出同门"的"go是并发语言,而不是并行语言"的说法。让我顿感奇怪,"并行"说白了就是对CPU多核的利用,这年头不能利用多核的编译语言还有的混?而且还混的这么好?并且…...
k8s-16 k8s调度
调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群控制面的一部分如果你真的希望或者有这方面…...
【2023研电赛】全国技术竞赛一等奖:基于FPGA的超低时延激光多媒体终端
该作品参与极术社区组织的研电赛作品征集活动,欢迎同学们投稿,获取作品传播推广,并有丰富礼品哦~ 基于FPGA的超低时延激光多媒体终端 参赛单位:华东师范大学 指导老师:刁盛锡 参赛队员:王泽宇 谢祖炜 秦子淇…...
Annoy vs Milvus:哪个向量数据库更适合您的AI应用?知其然知其所以然
1. Annoy vs Milvus简介 Annoy 和 Milvus 都是用于向量索引和相似度搜索的开源库,它们可以高效地处理大规模的向量数据。 Annoy(Approximate Nearest Neighbors Oh Yeah): Annoy 是一种近似最近邻搜索算法,它通过构…...
android 13.0 SystemUI导航栏添加虚拟按键功能(一)
1.概述 在13.0的系统产品开发中,在系统SystemUI的原生系统中默认只有三键导航,想添加其他虚拟按键就需要先在构建导航栏的相关布局中分析结构,然后添加相关的图标xml就可以了,然后添加对应的点击事件,就可以了,接下来先分析第一步关于导航栏的相关布局情况 然后实现功能 …...
内存管理-分页、虚拟地址、虚拟内容、页面置换算法
文章目录 一、5W2H角度分析内存管理What是内存管理Why需要内存管理Who使用内存管理Where内存管理应用When需要内存管理How内存管理工作How much内存管理的成本 二、分页什么是分页分页的原理分页的优缺点分页的应用 三、虚拟地址什么是虚拟地址虚拟地址的作用虚拟地址的转换虚拟…...
【C++入门】命名空间详解(从零开始,冲击蓝桥杯)
C入门 命名空间 南喵小鸡汤程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。一 . 命名空间的介绍二.命名空间的实际应用1.为什么要有命名空间我们在使用变量时,通常会为他定义一个名字,在…...
通过代码MyBatis-plus实现对表中createTime和updateTime进行自动更新
通过代码MyBatis-plus实现对表中createTime和updateTime进行自动更新 实现这样的效果可以在数据库中设置,但是我们一般建议在代码里实现, 但是总不能每次insert和update的时候都手写new当前时间 因此推荐使用mybatis-plus 1导入依赖 <dependency&g…...
HTML 实时显示本地电脑时间(精确到毫秒)
<!DOCTYPE html> <html> <head><title>实时显示本地电脑时间(精确到毫秒)</title> </head> <body><h1>本地电脑时间(精确到毫秒):</h1><h1 id"clock&q…...
opencv跨平台arm交叉编译之ubuntu
目录 1. 安装交叉编译工具链2. 安装依赖3. 配置工具链3.1 新建build目录3.2 安装cmake-gui3.3 工具链配置界面进行配置3.3.1 终端输入以下命令3.3.2 点击Configure,弹出编译方式选择对话框:3.3.3 点击Next3.3.4 点击Finish3.3.5 点击Configure。3.3.6 Ge…...
Git命令全集
1、克隆代码 查看项目地址 git remote -v直接克隆 git clone url克隆指定分支 git clone -b 分支 git地址RPC failed错误:修改Git的传输字节限制 git config --global http.postBuffer 10485760002、查看分支 查看 git branch -a切换分支 git branch 分支名从指定分支…...
[BigData:Hadoop]:安装部署篇
文章目录 一:机器103设置密钥对免密登录二:机器102设置密钥对免密登录三:机器103安装Hadoop安装包3.1:wget拉取安装Hadoop包3.2:解压移到指定目录3.2.1:解压移动路径异常信息3.2.2:切换指定目录…...
ubuntu 上vscode使用cmake编译运行c++程序
参考:ubuntu 上vscode使用cmake编译运行c程序_vscode ubuntu运行c程序_SCH0的博客-CSDN博客 文章是对官方过程的翻译: Get started with CMake Tools on Linux...
Node.js 新特性 SEA/单文件可执行应用尝鲜
#1 关于 SEA 单文件可执行应用(SEA,Singe Executable Applications),是 Node.js 新版本的特性,最初在 v19.7.0、v18.16.0 加入,并在 v20.x 得到扩展。而上个月发布的全家桶 Bun.js,就自带了 SEA…...
137.只出现一次的数字II
137. 只出现一次的数字 II - 力扣(LeetCode) 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来…...
k8s-15 strogeclass
官网: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner StorageClass提供了一种描述存储类 (class)的方法,不同的cass可能会映射到不同的服务质量等级和备份策略或其他策略等 每个 StorageClass 都包含 provisioner、parameters 和…...
微信小程序开发实战:利用差异对比显示对象属性变化
前言 在小程序开发中,经常会遇到需要比较两个对象之间的差异并将这些差异可视化展示在界面上的情况。这一过程对于数据管理和用户反馈至关重要。本文将介绍一种实用的方法,可以帮助开发者高效地比较两个对象的属性差异,并将这些差异以直观的方…...
Redis的GEO结构
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息,包含:经度…...
为什么用dw做的网站打不开/独立站建站平台有哪些
【题目链接】:click here~~ 时间限制:20000ms单点时限:1000ms内存限制:256MB描写叙述 且说上一周的故事里,小Hi和小Ho费劲心思最终拿到了茫茫多的奖券!而如今,最终到了小Ho领取奖励的时刻了。 小Ho如今手上有M张奖券,而…...
新手学做网站 下载/网站seo优化运营
Openlayers中加载大数据量的vectors时 其渲染效果就会很差,解决这一问题的有效方法就是对这些vectors进行Cluster 在Openlayers的官方Examples中有相关的示例:http://openlayers.org/dev/examples/strategy-cluster-threshold.html 我对这个示例做了下修…...
怎么给网站设置搜索关键词 wordpress/seo工具包
C#的lock关键字用起来非常的爽。偶最近的winst库也想模拟一个. C#中的lock关键字实际上是用Monitor类来实现的,所有首先需要一个Monitor类 class Monitor{typedef Pair<int, CriticalRegion> Count;static Map<void*, Count> countMap;public:static v…...
做宣传 为什么要做网站那/百度最容易收录的网站
在Linux服务器环境中部署SSH2扩展以编译PHP文件中的SSH脚本命令,具体配置方法如下,如果是在正式环境中直接运行,建议做好备份。 1.安装支持的库文件 命令:yum install php-devel php-pearlibssh2 libssh2-devel 2.建立ssh2扩展...
新兴县城乡建设局网站登录/推广普通话的宣传内容
平时用Python做web开发,上传图片是难免的,但直接拿PIL的函数来处理,总感觉有点繁琐,能不能封装些功能函数,让web上传处理图片更简便些。看了壑塥峈的《使用PIL调整图片分辨率》,得到了启发,他写…...
wordpress wp_query 排序/seo技术培训广东
160160液晶屏MSP430F169程序和电路图。 以MSP430F169作为控制的核心芯片,控制LCD160160液晶屏显示。 可以成功显示图片,数字、字母和汉字。 LCD160160具有显示面积大,显示内容多,功耗低等优点。 部分电路图如下。 共同学习 q…...