前言
当我们在做机器学习利用地球化学数据分析的时候,例如:分类任务,地球化学异常分析等。涉及地球化学不得不考虑的一个问题是,地球化学的封闭效应所带来的偏差。
什么是封闭效应
封闭效应 (Closure Effect) ,也称为常数和效应 (Constant Sum Effect) ,是地球化学数据分析中一个需要特别注意的统计现象。 它的产生是由于我们通常使用成分数据 (Compositional Data) 来表示样品的化学组成,例如:
- 百分比 (%)
- 百万分率 (ppm)
由于这些数据表示的是各组分占总体的比例 ,它们的总和必然是一个常数 (例如 100% 或 1,000,000 ppm)。这意味着每个元素的含量不是独立的,而是与其他元素的含量相互制约。改变其中一个元素的含量必然会影响其他元素的相对比例。
地球化学数据的封闭效应在数学角度来说,这些数据是存在于一个叫单纯形的空间。
闭合效应可能导致元素之间表现出“伪相关关系”,即表面上看起来元素之间有相关性,但实际上这种相关性是由“定和”约束造成的,而非真正的相互依赖。
由于传统统计方法是基于欧式空间,使得在处理这种成分数据时,往往没有考虑到其固有的“定和”约束,因此可能会产生虚假的相关性,导致分析结果具有误导性。
欧式空间,听起来非常的专业,实际上指我们通常所熟悉的几何空间,它通过距离和角度来描述数据点之间的关系。在欧氏空间中进行的分析通常假设数据是独立变化的且没有“定和”约束的。对应的成分数据所在的空间是 Aitchison 空间,其观测点的距离 Aitchison 距离而不是欧式距离。
如果上面的内容说的过于笼统,现在我们通过一个简化的例子来说明成分数据的“定和”约束如何导致虚假的负相关性。
假设我们有三个元素 X1, X2, 和 X3 组成的地球化学数据,并且它们的含量之和是一个恒定值(例如,100%)。为了简化,我们假设有以下三组观测数据:
观测 | X1 | X2 | X3 | 和 |
---|---|---|---|---|
样本1 | 20 | 30 | 50 | 100 |
样本2 | 25 | 25 | 50 | 100 |
样本3 | 30 | 20 | 50 | 100 |
在这个例子中,所有观测的三个元素含量之和都是100,符合成分数据的“定和”约束。 |
现在,我们来计算 X1 和 X2 之间的相关性。在通常的统计分析中,相关性由协方差来度量。然而,由于成分数据的特性,我们很快会发现问题。
- 当 X1 增加时(例如,从20增加到30),为了维持总和为100,X2 或 X3 必须减少,因为总量不能超过100。
- 类似地,当 X1 减少时,X2 或 X3 必须增加。
然而,这种负相关性并不是因为元素变量之间存在真实的物理或化学上的依赖关系,而是由于闭合效应 ,即它们的总量必须恒定为100。因此,这种负相关性是虚假的,是伪相关 。
在了解什么是闭合效应后,现在我们来进一步思考两个问题:
- 在什么情况下,我们需要考虑到地球化学的封闭效应?
- 似乎好像我们并没有经常见到传统地球化学在考虑或者提及封闭效应?
在什么情况下,我们需要考虑到地球化学的封闭效应?
这是一个很有趣的问题,一度在我做相关内容的时候让我坐立难安,如鲠在喉。仿佛在做数据处理的时候不得不考虑的心魔一样。现在我们从地球化学说起,地球化学元素可以分为:主量元素(wt%) 和 微量元素(ppm)。
- 主量元素的数据通常被归一化到100 wt% ,即所有主量元素的百分比总和为100%。这种归一化会导致闭合效应显著。
- 微量元素的数据通常不进行归一化处理 ,它们的总和远远小于100 wt%(通常远小于1 wt%)。由于没有强制归一化到100%,微量元素之间不会出现类似主量元素的闭合效应。因此,在分析微量元素时,闭合效应的影响可以忽略。
似乎好像我们并没有经常见到传统地球化学在考虑或者提及封闭效应?
关于第二个问题,其实也是一个到现在我可能并不能完全解答的问题,我的研究还不够深入,阅读的文献和研究角度限制了我的视角。还是很希望有老师学者来从多年的经验学识角度来讨论一下这个问题🌹。以我浅薄的认知来看:
在地球化学发展的早期阶段(20世纪中叶及之前),闭合效应的影响并未得到充分认识。尽管后来许多学者(如Reimann和Filzmoser,2000)意识到了这一问题,并提出了一些可能的解决方案,但这些问题并未得到根本解决。
另一方面,许多地球化学分析通过使用元素比值(如SiO₂/Al₂O₃)来避免闭合效应的影响,因为这些比值本身不受闭合效应的直接影响。此外,一些操作如对数变换虽然不能完全消除闭合效应,但在一定程度上改善了数据的分布。
此外,一些传统的地球化学研究往往侧重于描述成分的相对丰度或趋势,而非严格的统计推断。在这种情况下,闭合效应的影响可能不被视为一个关键问题。许多研究聚焦于微量元素(以ppm计) 和同位素比值(如 87 S r / 86 S r ^{87}Sr/^{86}Sr 87Sr/86Sr),这些数据通常不归一化到100%,因此闭合效应不明显,也无需特别考虑。
闭合效应的解决方案
既然在注意到地球化学数据的闭合效应的影响下,当务之急是寻求一种简单有效的解决方案。怎么能够了克服成分数据所带来的影响,能够让传统的统计学分析方法处理成分数据。
很快啊,有几个年轻人不讲武德,上来就是左刺拳,一个右鞭腿,同时一个左正蹬,我当时捂着眼,我当时大意了没有闪。 正是 Aitchison 和 Egozcue 等人,提出了如下三种解决方案:
- 加性对数比变换 (Additive Log-Ratio, ALR)
- 中心化对数比变换 (Centered Log-Ratio, CLR)
- 等距对数比变换 (Isometric Log-Ratio, ILR)
注:加性对数比变换,有点地方翻译为:加法对数比变换,是一个意思。
这些方法的目标是把闭合数据“打开”,变成普通数据,这样我们就可以用常规的统计方法(比如回归分析)来研究它,而不会被闭合效应干扰。现在我们来庖丁解牛来了解这三种方法的原理。
加性对数比变换(ALR)
ALR 变换的核心思路是:用对数比来重新表达数据 。具体来说,我们从数据中挑一个成分作为“参考”,然后计算其他成分和这个参考成分的比值,再取对数。
- 假设你有数据 :一个闭合数据有 D D D 个成分,比如 x = ( x 1 , x 2 , … , x D ) x=(x_1,x_2,…,x_D) x=(x1,x2,…,xD),它们的总和是 1(或100%)。
- 选一个参考成分 :通常选最后一个成分 x D x_D xD 作为参考(也可以选别的,但我们先用最后一个)。
- 计算对数比 :把其他成分 x 1 , x 2 , … , x D − 1 x_1,x_2,…,x_{D−1} x1,x2,…,xD−1 分别除以 x D x_D xD,然后取自然对数( l n ln ln)。
具体公式是:
alr ( x ) = ( ln x 1 x D , ln x 2 x D , … , ln x D − 1 x D ) \Large \operatorname{alr}(\mathbf{x})=\left(\ln\frac{x_1}{x_D},\ln\frac{x_2}{x_D},\ldots,\ln\frac{x_{D-1}}{x_D}\right) alr(x)=(lnxDx1,lnxDx2,…,lnxDxD−1)
变换后,你会得到 D − 1 D−1 D−1 个新数字,这些数字不再是百分比,也不再受总和为100%的限制,可以像普通数据一样分析。
ALR 变换的优点
- 简单 :只需要选一个参考成分,然后算对数比,很容易操作。
- 消除闭合效应 :通过对数比,数据的总和限制被打破,虚假的相关性消失。
- 实用 :变换后的数据可以用常见的统计工具(比如 Excel、R、Python)直接分析。
ALR 变换存在的问题
- 参考成分的选择 :如果你选不同的成分作为参考(比如选 x 1 x_1 x1 而不是 x 3 x_3 x3 ),结果会不一样。这可能会让人困惑,但只要你解释清楚选了哪个参考成分,结果仍然有效。
- 零值问题 :如果数据里有 0(比如某个成分是 0%),对数没法算(因为除以 0 或对 0 取对数没定义)。解决办法是用一个很小的数字(比如 0.0001)代替 0。
- 特征不一致:变换后的特征变量数量相较于输入 -1。
总结来看 ALR 是一个不对称变换,即变换后的结果少一个特征变量。另外参考成分的选择也存在主观性,不同的参考成分得到的结果也是不同。这些问题导致对 ALR 变换后的数据解释起来存在一定的问题。
中心化对数比变换 (CLR) 的出现解决了 ALR 存在的问题。
中心化对数比变换 (CLR)
CLR变换的基本思路是:把每个成分除以所有成分的几何平均数,然后取对数 。这样做会“中心化”数据,让变换后的值总和为0,从而消除闭合效应。具体步骤:
- 计算几何平均数:对样本的所有成分 x 1 , x 2 , … , x D x_1, x_2, \dots, x_D x1,x2,…,xD,先算它们的乘积,然后开 D D D次方,得到 g ( x ) g(\mathbf{x}) g(x)。
- 计算每个成分的对数比:对每个成分 x i x_i xi,计算 log ( x i g ( x ) ) \log\left(\frac{x_i}{g(\mathbf{x})}\right) log(g(x)xi),这就是CLR变换后的值。
- 得到结果:把所有变换后的值列出来,就是 clr ( x ) \text{clr}(\mathbf{x}) clr(x),可以直接拿去分析。
具体公式是:
c
l
r
(
x
)
=
(
log
(
x
1
g
(
x
)
)
,
log
(
x
2
g
(
x
)
)
,
…
,
log
(
x
D
g
(
x
)
)
)
\large \mathrm{clr}(\mathbf{x})=\left(\log\left(\frac{x_1}{g(\mathbf{x})}\right),\log\left(\frac{x_2}{g(\mathbf{x})}\right),\ldots,\log\left(\frac{x_D}{g(\mathbf{x})}\right)\right)
clr(x)=(log(g(x)x1),log(g(x)x2),…,log(g(x)xD))
g
(
x
)
=
(
x
1
×
x
2
×
⋯
×
x
D
)
1
D
\large g(\mathbf{x})=(x_1\times x_2\times\cdots\times x_D)^{\frac{1}{D}}
g(x)=(x1×x2×⋯×xD)D1
这样对于变换后的每个分量加和为 0,消除了闭合效应,让数据可以用于统计分析。即:
log ( x 1 g ( x ) ) + log ( x 2 g ( x ) ) + ⋯ + log ( x D g ( x ) ) = 0 \large \log\left(\frac{x_1}{g(\mathbf{x})}\right)+\log\left(\frac{x_2}{g(\mathbf{x})}\right)+\cdots+\log\left(\frac{x_D}{g(\mathbf{x})}\right)=0 log(g(x)x1)+log(g(x)x2)+⋯+log(g(x)xD)=0
当然,对于上述公式里面的 log \log log 你可以换成 ln \ln ln ,只需要确保统一
CLR 变换的优点
- 消除闭合效应 :让数据不再受百分比总和的限制。
- 简单易用 :只要会算乘法、开方和对数,就能做。
- 特征一致:不会和 ALR 消除一定数量的特征数量。
CLR 变换存在的问题
- 不直观 :变换后的数字(比如-0.015)不像百分比那么好理解。
- 零值问题 :如果数据里有0(比如某个成分是0%), log ( 0 ) \log(0) log(0) 没法算。
对于零值问题,可以通过把 0 值替换成一个很小的正数(或者远低于检测线以下的值),比如 0.01,然后再算。
等距对数比变换 (ILR)
ILR变换的核心是对数比 。它不直接用原始百分比,而是把成分之间的比例变成对数形式,再通过一些 ”巧妙的数学处理“,生成一组新数据。下面的公式就是生成”新数据“的公式:
z
i
=
i
i
+
1
ln
(
(
∏
j
=
1
i
x
j
)
1
/
i
x
i
+
1
)
\large z_i=\sqrt{\frac{i}{i+1}}\ln\left(\frac{\left(\prod_{j=1}^ix_j\right)^{1/i}}{x_{i+1}}\right)
zi=i+1iln
xi+1(∏j=1ixj)1/i
- i i i 是新变量的序号(从 1 1 1到 D − 1 D-1 D−1)。
- x j x_j xj 是原始数据。
-
∏
\prod
∏ 表示连乘,
l
n
ln
ln 是自然对数。
![[Pasted image 20250319172227.png|200]]
初次一看挺吓人的,再多看两眼,也挺吓人的。其实举个例子就很容易理解了:
首先假设,我们有三个特征变量,SiO2( x 1 x_1 x1) = 0.6, Al2O3( x 2 x_2 x2) = 0.3, Fe2O3( x 3 x_3 x3) = 0.1 (把百分数转换为小数)。
现在我们来使用上面吓人的公式来生成”新数据“。你只需要记住:对于 D 个特征变量,ILR 会生成 D−1 个新特征变量。我们是输入三个特征变量,所以他生成的数据是出来两个。
现在我们计算第一个 ILR 变量。当
i
=
1
i=1
i=1 时,公式是:
z
1
=
1
2
ln
(
x
1
x
2
)
\large z_1=\sqrt{\frac{1}{2}}\ln\left(\frac{x_1}{x_2}\right)
z1=21ln(x2x1)
然后计算当
i
=
2
i=2
i=2 时,公式是:
z
2
=
2
3
ln
(
(
x
1
x
2
)
1
/
2
x
3
)
\large z_2=\sqrt{\frac{2}{3}}\ln\left(\frac{(x_1x_2)^{1/2}}{x_3}\right)
z2=32ln(x3(x1x2)1/2)
因为我们的输入是 3 个特征变量,所以计算到
z
2
z_2
z2 就好了,最终变换后的结果是:(
z
1
z_1
z1,
z
2
z_2
z2)。对于更多的特征变量依次类推。
需要注意的是,alr 和 clr 变换是非等距变换,变换后的变量之间在欧式空间中的距离和角度都发生了变化。而 ILR 变换可以保证成分数据变换前后变量间的相对距离不变。但是 ILR 是非对称变换,变换前后变量间的对应关系被打乱,给后续的数据分析和解释带来了很多困难。
为了建立变换后数据与原数据的对应关系,需要将 ilr 变换的成分数据反变换到 clr 变换空间,这样就可以继续进一步分析处理了。
END
这个东西吧,当你做机器学习或者深度学习成矿预测或者对于地球化学数据相关预测的时候,对于数据的预处理往往是需要考虑的东西。当然你看上面的公式什么的很头疼是正常的,起码我是不喜欢看的。不过当你静下心看明白的话,会让你对数据的处理更有心得帮助。
尽管你在使用各种变换的时候,并不是你手动在处理,往往是通过 Python 或者 R 语言有对应的包直接批量处理,它们屏蔽了内部的数学逻辑,但是了解的更多,才会让你对数据的处理更有帮助。
更多内容,关注我的微信公众号:
参考文献
- 文中所有表情包,感谢小红书和知乎千万网络用户,此处不再一一赘述🌹。
- Aitchison, J., 1982. The statistical analysis of compositional data. Journal of the Royal Statistical Society: Series B (Methodological) 44, 139-160.
- Aitchison, J., 1984. The statistical analysis of geochemical compositions. Mathematical Geology 16, 531-564.
- Aitchison, J. Egozcue, J.J., 2005. Compositional data analysis; where are we and where should we be heading. Mathematical Geology 37, 829-850.
- Egozcue, J.J., Pawlowsky-Glahn, V., Mateu-Figueras, G., Barcelo-Vidal, C., 2003. Isometric logratio transformations for compositional data analysis. Mathematical geology 35, 279-300.
- Pearson, K., 1897. Mathematical contributions to the theory of evolution.—on a form of spurious correlation which may arise when indices are used in the measurement of organs. Proceedings of the royal society of london 60, 489-498.
- Reimann, C., Filzmoser, P., 2000. Normal and lognormal data distribution in geochemistry: death of a myth. Consequences for the statistical treatment of geochemical and environmental data. Environmental geology 39, 1001-1014.
- 《勘查地球化学-数据挖掘与异常识别》,左仁广等著。
- 张鑫,2024. 基于深度学习的成矿远景区预测研究. 五邑大学.
- 地球化学数据的居中对数比变换——clr: Centred Log-Ratio (clr) transformation