Template : GitHub Link.


TCLR structure

Please refer to the literature link for the structure of the TCLR model 🔗 TCLR Link.


Intro / 说明


Cao 等人 (Paper Link) 的文章内容为例:

论文提出一个氧化的Arrhenius方程,描述铁素体-马氏体钢的氧化行为,并预测不同合金的氧化结果。这里省略热力学项后,采用以下动力学公式描述Cao 等人 所提出的泛化氧化热动力学方程:

formula 1 : ln(W) = n x ln(t) + ln(K)

其中 :

W 为氧化增重 (mg/dm^2) | K 为动力学常数 | n 为时间指数 | t 为腐蚀时间 (h)

formula 1 为动力学方程 formula 2 的对数形式

formula 2 : W = K x t ^n

formula 2 用以形容某特定合金的氧化过程 : 氧化增重随着时间的变化情况

Screenshot (图1 : 图片来源)

时间指数 n 受到合金组成元素(Cr、Fe、Mn、...(wt.%))、测试条件(i.e., 温度T(K) 等)的影响

Cao 等人 (Paper Link) 的工作中, 他们通过寻找时间指数n和合金组成元素、测试条件的可视化映射, 建立描述合金氧化/腐蚀的统一表达形式, 即寻找公式 f, 使得 :

formula 3 : n = f(Cr、Fe、Mn、...、T、...)

但是, n作为氧化数据集合中的隐藏特征,是难于被捕捉的。在腐蚀试验中, 需要通过控制单一变量的一组合金氧化样本, 得到一个时间指数样本。 如 Table E0 所示:

Num fixed single variable tests n
1 Fe、Mn、...、T、... Cr = Cr0 n1 n1
2 Fe、Mn、...、T、... Cr = Cr1 n1 n2
... ... ... ... ...
10 Fe、Mn、...、T、... Cr = Cr10 n1 n10
11 Cr、Mn、...、T、... Fe = Fe0 n1 n11
12 Cr、Mn、...、T、... Fe = Fe1 n1 n12
... ... ... ... ...
20 Cr、Mn、...、T、... Fe = Fe10 n1 n20
... ... ... ... ...

Table E0 中每一组数据,均是在控制单一变量下给定的一组氧化实验的结果。想要研究变量 Cr、Fe、Mn、...、T、... 与时间指数n的关系, 需要测试不同给定条件下(fixed)每一个变量(single variable)在不同水平下的多组氧化增重测量(test)。实验上几乎不可能提供如此巨大的实验样本。

故TCLR被提出, 解决这一问题


Table E1 中 w(mg/dm^2) 氧化增重是直接可测变量,通过实验积累可以得到如 Table E1 所示的氧化数据集合(假设集合大小为200)

Num Cr (wt.%) Fe (wt.%) Mn (wt.%) ... T (K) t (h) w(mg/dm^2)
1 . . . . . . w1
2 . . . . . . w2
... ... ... ... ... ... ... ...
200 . . . . . . w200

按照 formula 1 对原始变量取对数处理得到Table E2

Num Cr (wt.%) Fe (wt.%) Mn (wt.%) ... T (K) ln(t) (h) ln(w)(mg/dm^2)
1 . . . . . . ln(w1)
2 . . . . . . ln(w2)
... ... ... ... ... ... ... ...
200 . . . . . . ln(w200)

根据 formula 1 的结果可知, ln(W) 和 ln(t) 的斜率即为时间指数 n

TCLR 将Table E2中所有数据根据其特征的不同划分为不同的子集, 称为一个叶子, 在每个叶子上, 数据均符合同一个时间指数n的描述,即满足同一个动力学方程。

n1 (图2 :图片来源)

图中的数据点具有不同的特征 Cr、Fe、Mn、...、T、..., 且都满足同一个动力学方程指数n。故可以轻易的得到两者之间的映射关系。 这种关系可以被公式化或者模型化(通过代理模型描述), 最终得到 formula 3。基于此, Cao 等人 建立了用于描述多种合金在多种测试条件下氧化行为的统一方程。


Template/ 调用模版

#coding=utf-8
from TCLR import TCLRalgorithm as model

dataSet = "testdata.csv"
correlation = 'PearsonR(+)'
minsize = 3
threshold = 0.9
split_tol = 0.8

model.start(filePath = dataSet, correlation = correlation, minsize = minsize, threshold = threshold,
            mininc = mininc ,split_tol = split_tol,)

Output 运行结果:

  • classification structure tree in pdf format (Result of TCLR.pdf) 图形结果

  • a folder called 'Segmented' for saving the subdataset of each leaf (passed test) 数据文件

Result classification structure folder
Screenshot 2023-04-09 at 12 10 05 Screenshot 2023-04-09 at 12 08 55

TCLR 的必要参数包括 : dataSetcorrelationminsizethreshold

  • dataSet - 所研究的数据集合「Table E2」.
  • correlation - TCLR特征和TCLR变量的关联.
  • minsize - TCLR结构树叶子上最小数据量
  • threshold - 准停阈值

dataSet :

传入数据集合Table E2Table E2需要将具有隐藏关系的特征放置于最后两列。例如在上述问题中, 对数的时间 ln(t) 和对数的增重 ln(W) 包含隐变量 : ln(W) = n x ln(t) + ln(K), 故 变量ln(t)放置在倒数第二列, 响应ln(W)放置在倒数第一列。


correlation :

定义变量之间的关联, 在本例中, ln(W) vs. ln(t) --> n 是线性的, 且 n>0, 故定义correlation = 'PearsonR(+)' 捕捉正相关线性关系。

TCLR 中定义 correlation : {'PearsonR(+)','PearsonR(-)',''MIC','R2'} :

  • 'PearsonR(+)' : 捕捉正相关线性关系
  • 'PearsonR(-)' : 捕捉负相关线性关系
  • 'MIC' : 捕捉非线性关系
  • 'R2' : 捕捉非线性关系

minsize :

每个叶子上最小的数据量。因为TCLR通过变量ln(W) vs. ln(t)得到斜率 n, minsize 通过限制直线上数据点的个数来得到准确的斜率 n。 默认minsize=3, 即图2中一条直线上最少有三个不同取值的时间ln(t)。


threshold :

每个叶子上数据通过同一个时间指数n描述的一致性。threshold = 1, 则叶子上所有数据均严格地落在一条直线上。默认threshold = 0.9, 因为数据均是有噪声的, 很难理想的通过一条直线完美拟合。如果 threshold 太大,如(0.99,0.98), 会导致大量的数据难以满足此苛刻的条件,而无法在TCLR中被合理地分开。