数据的高维度分析和低维度描述记录-能谱分析和Eigen使用记录
实例-能谱
放射源
放射源使用,这是一种同位素,不稳定,容易发生衰变,例如有95%的概率发生衰变,产生。是一个所谓的“亚稳态”核,它不稳定,会以85%的概率向自身的基态跃迁。这是一个退激发过程,一个具有动能0.662MeV的光子将会伴随着退激发过程从核中释放出来,我们一般会将这种光子称为射线。
探测器
探测器使用HPGe探测器,它由两个重要部件组成——HPGe晶体和闪烁光转换部件。
HPGE是一种闪烁晶体,由Ge(锗)晶体制作,其中的Ge纯度很高,因此被称作"High-Purity Germanium Detector"(“高纯锗探测器”),简称"HPGe"。锗晶体用来吸收射线的能量,以激发态的形式短暂地存储能量,最终退激发,并将能量以荧光的形式释放。这个转换过程就像晶体在发光一样,由于射线是间断进入锗晶体的,导致晶体是间断着发射荧光的,感觉上像是晶体在“闪烁”。当然,如果射线的强度非常大,在锗晶体完成荧光发射之前,又有新的光子进入了其中,那么锗晶体会继续荧光的发射,整体上就没有了“闪烁”的效果。
闪烁光转换部件,名字叫起来很高大上,其实就是个利用了光电效应的电压表,当年爱因斯坦他们可能就是拿这玩意做的实验。这个东西的主要功能就是把荧光的能量转换为电流的电荷量,中间用了用电子倍增、电磁感应之类的东西,总的来说,就是个光电转换加上一个电压表/电流表。这个东西在测量荧光能量时,会产生误差,而且不小,这也是为啥能谱看上去很圆润的原因。
样本、数据和维度
在本节的实例下,一个样本,表示一个HPGE探测器进行一次测量,测量的时间人为设定好。一个数据,就是一个HPGE进行一次测量的能谱。这里探测器的电子学使用1024道,也就说明一个数据中,包含了1024个数,有1024个维度。
模拟和能谱获取
使用模拟的方法获取能谱。模拟以蒙特卡洛方法为基础,使用建立在这种方法之上的软件Geant4来构建放射源、探测器,并且用它来模拟微观反应的全过程。最后,我来收集射线传递给的能量,并根据这些能量制作能谱。能量的转换过程可以分为两个步骤,第一个步骤是从射线进入锗晶体到锗晶体释放荧光,第二个步骤是荧光进入闪烁光转换部件,转换为电荷量,并以数据形式保存在电脑中。
第一个步骤是光子将自己的动能传递给锗晶体,锗晶体将这些动能以荧光的形式放出,导致锗晶体“闪烁”,这个过程使用Geant4模拟,统计探测器内的总能量沉积即可。
第二个步骤是考虑闪烁光转换部件的测量误差。认为每一次因光子入射而引发的“电压表”记录是一次事件,这次事件的结果是获得一个电荷量,也就是探测器认为的光子传递给它自己的能量。实际上,这个能量是有误差的,一般我们会认为这个误差是以高斯型分布引入的,准确的说,是测量得到的电荷量符合高斯分布,高斯分布的期望是真实的射线传递的能量,标准差是探测器的固有属性,是一个固定的数值。因此,在数学上,这一步的操作就是以上一步得到的能谱为函数,增加一个高斯分布,这种操作属于卷积。
卷积和能谱解释
根据前文的介绍,能谱通过两个步骤制作而成,第一个步骤是统计射线在闪烁体内沉积的能量,以能量沉积谱表征,虽然这里提到了能量沉积谱,但是这个谱并不能在实验中获取,因为它并不是数字信息,不能以数字信息的形式传输到电脑中,更不能被记录在硬盘等数字存储媒介中。为了保存这个能谱,才设计了第二个步骤,简言之就是将第一个步骤中的能量沉积谱转换为数字形式,并且保存在硬盘等数字存储媒介中。第二个步骤是沉积的能量被转换成荧光,荧光接着被转换成电子,电子接着被电场加速,用来影响电极之间的电压,最后电压被电压表测量并以数字信息保存。
虽然步骤二的目标是将能量沉积谱保存在电脑硬盘中,但是步骤二的这一套过程引入了大量的误差,使最终保存的能量不是真实的沉积能量。为了还原真实的能量,需要了解步骤二引入误差的方式。
高斯随机分布,是用来描述步骤二的分布之一,也是最简单的方法。这个方法认为,步骤二得到的能量是一个随机数,这个随机数符合一个高斯分布,这个高斯分布的期望是步骤一的沉积能量,方差与探测器系统有关。因此,步骤一的能量沉积谱中,每一道内的所有计数,也称为“事件”,都符合同一个高斯分布,在步骤二中,它们的能量会按照这个分布被分散到对应的能量区间上。在分散完所有能量道后,就得到了步骤二的结果,这个过程就称为“卷积”。
考察第i个光子入射探测器,也就是第i个事件。该事件中,令光子在闪烁体内沉积的能量为,电子学测量到的能量为。那么,是一个符合高斯分布的随机数,这个高斯分布的期望为,标准差与探测器系统有关,并且受到沉积能量的影响。整体上,标准差与探测器系统的关系更大,在探测器系统固定的前提下,不同的能量沉积会造成不同的标准差。在误差允许的前提下,可以认为标准差与能量沉积无关,其实一般都是这么做的。
考察步骤一结束时得到的能谱,这是真正意义上的能量沉积所统计出来的直方图,这些能量是没有被探测器系统“污染”的,没有误差的,不是上文所说的随机数。这个能谱是直方图,就是一系列的区间和计数。设定区间总数量为N,某一个区间使用n表示,注意这个n与上文中的维度编号无关。在本文背景下,我们使用教学常用的1024道电子学系统,那么N为1024。
统计上,认为第个区间内的所有事件,都造成了相同的能量沉积,该能量沉积以表示,其数值可以以该区间的最小值、最大值、中间值等来代表,本文选择中间值。令表示能量沉积直方图中最低道所对应的能量,也就是最小能量沉积所对应的区间;表示能量沉积直方图中最高道所对应的能量,也就是最大能量沉积所对应的区间。令表示一个区间的宽度,根据直方图定义,同一个直方图下,所有区间的宽度相同。
对于相同区间的事件,也就是能量沉积属于区间编号为的事件,它们在步骤一结束时造成的能量沉积在统计上认为相同,我们这里也就认为相同。原因是,由于每一个事件在步骤一的能量沉积数值太多,在模拟中虽然可以全部独立保存,但这样全部独立保存的话,会占用大量的硬盘,而且数据处理起来会消耗大量时间,不实际,因此选择将这些能量沉积数值进行统计,并且以直方图形式保存,也就是上文所谓的“步骤一的能谱”。在这个设定下,一个事件自身的能量沉积数值已经被主动舍弃了,保存下来的只有代表一个区间的能量。也就是说,其实每一个事件的能量沉积数值都可以被保存下来,但是我主动放弃了它们。
考察步骤一的能谱,第个区间内的事件,其能量为。由于步骤二的测量误差,将会被施加随机误差,从统计上分析,经过了步骤二的测量,能量值将符合一个高斯分布,这个高斯分布的期望为,而标准差同样与探测器系统有关,对于同一次测量,认为探测器系统没有改变,由此可认为所有区间的能量所符合的高斯分布的标准差相同。因为第个区间内存在不止一个事件,经过了步骤二的误差引入,这些事件的能量将有可能偏离第个区间所代表的能量区域。
从统计上分析,步骤一的第个区间内的事件,经过步骤二的误差引入后,仍然属于第个区间内的概率,可以使用高斯分布进行计算。为了更加明确地表示计算,将高斯分布的具体形式引入。
为了更加明确地表示计算,将高斯分布的具体形式引入。
那么,在真实使用环境下的表达式如下。
现在考虑步骤一的第个区间内的事件,经过步骤二的误差引入后,属于第个区间内的概率,其推演与上文相同。
上文已经从步骤一的能谱视角出发,介绍了步骤二的误差如何引入。现在从步骤二的能谱视角出发,考虑如何从数学上获得误差干扰后的能谱。
在本文背景下,探测器的电子学获得的能谱是一个离散的数据,对于步骤二能谱的第道,其计数,或者说事件,由步骤一的能谱中的所有道贡献而来。由于高斯分布的形状,主要是由第道以及附近的若干道贡献。若以高斯分布的原则为标准,可以有效的去除无用的区间,提升计算效率。
这里就以原则为标准,则步骤二能谱的第道由步骤一能谱的第道主要构成,同时,其中的部分,由第道、第道至第道贡献;其中的部分,由第道、第道至第道贡献。其中,t表示所占有的区间数量,或者是所占有的区间数量,这两种情况所占有的区间数量是一样的,因此统一用t表示。
根据上述分析,步骤二能谱的第道计数,可以通过上述步骤一的区间来计算。
以矩阵形式表达更加简明。
能谱数据处理
中心化
中心化是针对样本矩阵而言的,针对每一个维度,将数据剪去期望。
在本文背景下,样本数据的每一列代表一个维度,每一行代表一个样本。在求取期望时,需要知道行数和列数,在Eigen3下,获取行数和列数的方法如下。
int numRows = SampleMatrix_.rows();
int numCols = SampleMatrix_.cols();
协方差矩阵
协方差矩阵由中心化的样本矩阵计算得到。
协方差矩阵的图形显示可以通过“热力图”来完成。“热力图”实际上就是一个二维直方图,使用色彩来表征每一个区间(bin)的计数值。Python下的Seaborn库中有热力图的支持,使用起来非常简单,可参考[Jianshu Matplotlib, 2017],[Seanborn, Heatmap, 2019]。Seaborn是以Matplotlib为基础的可视化库,比Matplotlib使用更加简洁方便。
相关系数矩阵
相关系数矩阵是用来描述两个维度之间的关联程度的,虽然协方差矩阵的意义相同,但是比其更加好用。因为相关系数忽略了维度自身的单位问题,避免因为同一个维度使用不同单位而导致的数值量级上的差异。
编程方面,使用Eigen进行矩阵计算,经常会使用到矩阵初始化,比如制作一个全零矩阵,用作最初始的相关系数矩阵,表示任意两个维度之间均没有关联。
int numRows = CovarianceMatrix_.rows();
int numCols = CovarianceMatrix_.cols();
MatrixXd ones = MatrixXd::Zero(numRows,numCols);
特征值和特征向量
Eigen库中的类SelfAdjointEigenSolver专门负责特征值和特征向量求解,具体参考[Eigen-EigenDeconposition, 2019]。
并不是任何矩阵都可以进行特征分解的,在本文应用背景下,由样本数据组成的矩阵只有很小概率可以进行特征分解,而且,无论是在PCA还是因子分析中,样本矩阵都不是用来进行特征分解的对象。
在PCA中,进行特征分解的矩阵是样本矩阵的协方差矩阵。协方差矩阵是一个对称阵,而且所有元素都是实数,一般称为实对称矩阵,这种矩阵的特点之一就是可以进行特征分解。
MatrixXd ones = MatrixXd::Ones(3,3);
SelfAdjointEigenSolver es(ones);
cout << "The first eigenvector of the 3x3 matrix of ones is:"
<< endl << es.eigenvectors().col(1) << endl;
参考文献
网站
[Eigen-EigenDeconposition, 2019] Eigen官方说明文档,特征分解类介绍 http://eigen.tuxfamily.org/dox/classEigen_1_1SelfAdjointEigenSolver.html#title17
[Jianshu Matplotlib, 2017] 用python-pandas作图矩阵 https://www.jianshu.com/p/47b54eb35eed
[Seanborn, Heatmap, 2019] Seaborn API for heatmap, http://seaborn.pydata.org/generated/seaborn.heatmap.html#seaborn.heatmap
论文
[Miller, E. A., 2015]: Miller, E. A. , Robinson, S. M. , Anderson, K. K. , Mccall, J. D. , Prinke, A. M. , & Webster, J. B. , et al. (2015). Adaptively reevaluated bayesian localization (arbl): a novel technique for radiological source localization. Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, 784, 332-338.
[Penny, R. D., 2015]: Penny, R. D. , Crowley, T. M. , Gardner, B. M. , Mandell, M. J. , Guo, Y. , & Haas, E. B. , et al. (2015). Improved radiological/nuclear source localization in variable norm background: an mlem approach with segmentation data. Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, 784, 319-325.
[Jianshu Matplotlib, 2017]: