本文对康奈尔大学数据库团队Immanuel Trummer教授编写的2024 VLDB论文《Can Large Language Models Predict Data Correlations from Column Names?》进行解读,全文共9007字,预计阅读需要20至30分钟。
近期的研究提出利用对数据库模式元素的自然语言分析来指导调优和数据剖析工作。这一研究的潜在假设是,当前最先进的语言模型能够从模式文本中提取数据属性信息。本文在数据相关性分析的背景下检验这一假设:是否可以通过语言模型分析列名来找出数据相关的列对?本文主要工作如下:
首先,本文通过分析数千个Kaggle数据集创建了一个全新的数据相关性分析基准。
其次,利用这些数据研究语言模型基于列名预测相关性的能力。分析涵盖了不同的语言模型、各种相关性度量以及多种准确性指标,并找出了有助于成功预测的元素。
最后,研究分析了列类型对预测性能的影响。结果表明,模式文本可以成为有用的信息来源,为未来旨在利用NLP增强数据库调优和数据剖析的研究提供了参考。
1.1 数据相关性检测对预测模型的重要性
本文关注以下问题:自动化调优工具是否能够利用自然语言分析(NLP)领域的最新创新成果,也就是预训练语言模型,来进行列相关的推理方式。近期的工作提出在数据库模式元素上使用NLP技术来指导数据库调优,特别是帮助确定数据剖析操作的优先级。但是,语言模型是否能够以足够高的可靠性推断出相关信息,尚未得到详细研究。
在数据库研究领域,检测数据中的相关性一直备受关注。数据相关性在许多场景中都非常有用。例如,查询优化器通常依赖于对中间结果大小的准确预测。然而,传统的预测模型通常假设数据是不相关的,这在实际应用中可能会产生误导。此外,知悉可能存在的数据相关性有助于从搜索空间中剔除与相关性相关的不确定选项。
1.2 数据库模式对相关性检测的作用?
检测数据相关性需要比较不同列中的数据,这通常使得相关性检测比单独处理不同列的操作成本更高。先前的算法通常不会利用通过语言模型对数据库模式进行分析所获得的信息。但是,这种分析可能有助于更好地分配和确定数据剖析工作的优先级。在有限的数据剖析预算下,可以根据NLP的结果将分析范围限制在更可能相关的列子集上。在这些列子集中,可以使用现有的任何相关性检测算法。但是,NLP是否确实有助于从数据库模式中提取相关信息,仍有待考证。
Transformer和利用大量未标记训练数据的训练方法让人看到了仅从数据库模式名称中提取有用信息的希望。本研究评估了经过预训练的Transformer模型,这些模型使用了适量的特定于相关性检测任务的训练数据进行微调。值得注意的是,本文关注的是规模小得多的模型,其可以在普通机器上以适度的开销运行。
1.3 数据相关性检测新基准的产生
以前的相关性检测算法基准通常使用少量数据集,性能取决于数据属性而非数据语义。然而,当通过语言模型分析列名时,数据领域可能会对预测性能产生重大影响。本研究基于一个新生成的数据相关性检测基准,使用了从Kaggle平台下载的约4000个表格数据集生成的基准。对于这些数据集,该基准根据多种常用的相关性度量来分析列对之间的相关性。这些数据不仅有助于检验是否可以通过语言模型从模式元素中提取相关信息的假设,还可用于测试基于NLP增强的数据剖析方法。
本文的贡献如下:
本文引入一个新的基准,可用于测试基于列名的相关性预测,并评估NLP增强的数据库调优方法。
本文测试语言模型从列名推断数据相关性信息的能力,考虑不同的相关性度量、场景和模型。
评本文估一种简单的基线算法,该算法利用自然语言分析获得的信息进行高效的相关性预测。
2.1 基准数据
本文的基准使用来自Kaggle网站的数据集,该平台上的数据集数量众多且种类多样,并且经常被研究者进行数据分析。但是,由于Kaggle数据很流行,用于预训练语言模型的数据可能包含对Kaggle数据的引用。然而,确定数据相关性需要进行额外的数据分析,而不仅仅是访问数据。目前,在用于实验的模型进行预训练之前,尚未有研究对Kaggle数据进行过类似相关性度量的大规模相关性分析。因此,预训练数据中包含有关Kaggle数据相关性的相关信息的可能性较小。
本文通过使用以下筛选条件查询KaggleAPI来获取数据集:
首先,根据数据集的格式进行筛选,检索“.csv”格式(即表格数据)的数据集。
其次,为了能够检索和分析大量涵盖不同领域的数据集,设置了一兆字节的大小限制。
此基准整合了从检索查询结果中获取的数千个数据集。对于这些数据集,基准包含了同一表中列对的各种相关性度量。通过考虑列对之间的相关性,可以消除大多数由相关性引起的选择性估计误差。对于每个表,分析100个列对:对于列数超过10的表,选择前10列用于基准测试(从而形成100个列对)。基准中每个列对仅包含一次。
该基准根据不同的度量来衡量相关性:
1. 皮尔逊相关系数:该系数用于衡量两个数据集之间的线性相关性,系数R的值在[-1,1]区间内,并带有一个p值,用于表示偶然获得特定R值的概率。以下实验通过对|R|设置不同的阈值来定义相关性,通常将p值的阈值设为5%。
2. 斯皮尔曼相关系数:该系数通常表示为ρ,用于衡量两个数据集之间的关系能用单调(但不一定是线性)函数描述的程度。同样,该系数的值在[-1,1]区间内,并带有一个p值,用于表示在不相关数据中观察到给定相关性的概率。以下实验考虑对p值设置不同的阈值,通常要求p值小于或等于5%。
3. 熵系数(也称为泰尔U系数):该系数衡量分类列(以及数值列)相关性。该系数是两个变量之间互信息的归一化版本。它衡量在已知另一列的值的情况下,可以对某一列进行多少位的预测。以下实验会改变泰尔U系数的阈值,以此确定从什么阈值开始认为两列相关。
对于所有系数,该基准将相关性预测建模为一个二分类问题(根据列名将列对分类为相关或不相关)。通过上述数据准备,得到了一个基准,其中包含列对名称、元数据(如列数据类型)以及根据不同相关性度量得出的相关性结果。
2.2 基准指标
以下实验使用基准数据进行两类实验:
第一类实验评估语言模型从列名预测数据相关性的能力。
第二类实验评估一种简单的基于NLP增强的数据剖析算法,该算法利用数据相关性预测来确定数据剖析步骤的优先级。
为了衡量语言模型预测数据相关性的能力,实验根据多个指标来衡量预测质量,考虑了五个预测质量指标:
召回率:是指被准确识别的相关列对的百分比。
精确率:是指预测为相关的列对中实际相关的比例。
F1分数:定义为
(其中
和
分别是精确率和召回率)马修斯相关系数(MCC):是一种用于评估二元分类模型性能的指标,特别适用于处理不平衡数据集。
简单预测准确率:考虑每个列对的“相关”和“不相关”两个类别。
上述所有质量指标的值都在[0,1]区间内,值越高表示质量越好。以下图表报告了所有五个指标。
对于NLP增强的数据剖析工具的性能,通过在计算开销预算内验证的相关列对数量来评估。这个预算可以通过分析的列对数量来衡量。
基准数据的一个示例(并且体现了皮尔逊相关系数)
介绍完上述基准后,表格展示了该数据集的一个摘录。表的上半部分展示了通过皮尔逊系数衡量的五个高度相关的列对,下半部分展示了五个相关性较低的列对。表中还展示了列名和相关数据集的名称。
对于表中的示例,凭借常识往往能够识别出可能相关的列对。比如,在一个包含体育统计数据的表中,球队的得分通常与获胜次数相关(得分越多通常获胜次数越多)。对于一些表格,相应的列对显示出相对较高的相关性。对于有一些表格,“Williamsburg Bridge”和“Unnamed: 0”这两列之间没有明显的相关性迹象,相应的列对显示出的相关性很弱。本文研究语言模型是否能够模拟这种推理。

基准数据大小相关的统计信息
上述表格还总结了与基准数据大小相关的统计信息。该基准总共包含来自约4000个数据集的相关性信息。这些数据集来源广泛,涵盖各种主题。对于这些数据集,该基准包含约12万个列对的相关结果,其中大约一半是数值型(或整型)列对。
根据不同度量标准衡量的列名长度分布
从列名预测可能的相关性的能力可能取决于诸如列名长度等特征。直观地说,较长的列名应该包含更多信息,这可能会使相关性预测更容易。上图总结了根据不同度量标准衡量的列名长度分布。左图展示了字符长度的分布,右图展示了列对中词元(即由空格或下划线分隔的文本片段)数量的分布。

列对中的相关性分布
在接下来的实验中,由于会改变判断列是否相关的阈值,因此分析相关性在列对中的分布情况很有意义。相应分布如图所示,从左到右分别显示了根据皮尔逊系数、斯皮尔曼系数和泰尔U系数衡量的相关性。特别是对于皮尔逊系数和斯皮尔曼系数,较低的值比较高的值更常见。对于所有相关性度量,都有一种略微双峰的分布,在最大值和最小值处概率增加。
本节从训练时间和输出质量方面比较不同的预测方法。大多数方法使用基于最近提出的Transformer架构的预训练语言模型,这类模型在各种自然语言处理任务中都取得了最先进的性能。
4.1 方法描述
实验考虑了三个较小的预训练模型,是编码器模型,经过预训练将输入词元与高维向量相关联。对于分类问题,会添加一个薄的层,将向量映射到相关类别的分数。
1. Roberta:扩展了BERT。与BERT相比,Roberta使用了更多的数据进行更长时间的预训练,在各种基准测试中,所得模型的性能优于原始的BERT模型。
2. Albert:与BERT和Roberta相比,显著减少了参数数量。它使用了两种参数减少技术:将词汇嵌入矩阵分解为两个较小的矩阵;在不同层之间共享参数。该模型在不显著影响结果质量的情况下实现了显著的加速。
3. DistilBERT:是BERT的“蒸馏”版本,它使用知识蒸馏技术来减少参数数量和训练时间与BERT相比,它通过知识蒸馏来缩小网络规模。DistilBERT在训练时间和结果质量之间实现了平衡。
除了预训练模型,评估还考虑了一个简单的基线方法。
4. 基线方法:将比较的列名分解为词元,然后计算与所比较列相关联的两个词元集的杰卡德相似度。如果杰卡德相似度至少为0.5,它就预测存在相关性。该基线方法认为,如果列名足够相似,那么这些列就是相关的。
4.2 实验设置
本节及后续章节的实验使用p3.2xlarge类型的EC2实例,该实例推荐用于机器学习工作负载,配备了具有5120个CUDA核心的Tesla V100GPU、8个vCPU和488GB的RAM。预测方法使用simpletransformers Python库实现,该库内部基于Huggingface库,后者支持广泛的预训练语言模型。
4.3 比较结果
以下实验使用皮尔逊相关系数,如果|R|≥0.9且p值至多为5%,则认为两列相关。在训练时使用80%的数值列对,并报告其余20%列对的结果。
假设1:预训练语言模型在预测相关性方面比简单的基线方法表现更好。

四种预测方法的预测质量结果
实验结果发现,基线方法在精确率和准确率方面表现相当不错,受益于其在大多数情况下预测不相关的策略。由于相关列对很少见,这种简单策略可以实现相对较高的准确率。然而,基线方法在召回率、F1分数和MCC指标上仅取得了较差的结果。相比而言,预训练模型在所有指标上都优于基线方法。总之,假设1得以证明。
假设2:更大的模型在预测相关性方面比更小的模型更可靠。
所有三个预训练模型的性能相当相似。在F1分数、精确率、MCC和召回率方面,Roberta表现最佳,因为Roberta是三个模型中最大的。在召回率方面,DistilBERT略有优势。总体而言,在实验中DistilBERT的表现略优于Albert。MCC是三个模型之间差距最大的指标,但总体这三个模型实现了相当的预测性能。总之,假设2得以证明。
假设3:改变模型大小可以在计算开销和准确性之间实现不同的权衡。

预训练模型解决相关性预测问题的时间
由于AlBERT和DistilBERT的设计目标是与Roberta等较大的模型相比减少开销,结果表明,这种方法在相关性预测任务中也有成效。DistilBERT的训练时间比Roberta少两倍以上。DistilBERT的性能略优于Albert,该模型似乎是减少训练开销的最佳选择。总之,假设3得以证明。
在接下来的实验中,由于Roberta的精确率略高,将其用作相关性预测的默认方法。
以下实验分析场景属性如何影响预测性能。本节考虑训练数据量的变化以及训练数据和测试数据之间的关系变化,同时还比较不同相关性定义下的性能。以下实验使用Roberta模型,并通过皮尔逊系数定义相关性,最大p值设为5%。R的绝对值阈值在以下实验中会有所变化,默认设置为|R|≥0.9。训练数据量也会变化,默认使用80%的数值列对作为训练数据,其余数据用于测试。
假设4:在更多列对上进行训练时,相关性预测会变得更加准确。

训练数据数量的影响
上图比较了不同训练(和测试)比例下的预测性能。比较了两种场景下的性能:第一种场景使用80%的列对作为训练数据,其余用于测试;第二种场景使用20%的列对作为训练数据,其余用于测试;第三种场景不使用任何训练数据(即零样本设置)。实验表明,对于所有五个预测质量指标,更多的训练数据都有助于提高性能。
但是,考虑到训练数据量的显著差异,预测性能的差异似乎较为适度。所有五个性能指标的最大差异为6%,也表明预训练语言模型在使用少量训练数据时就已经可以取得合理的性能。总之,假设4得以证明。
假设5:在观察了同一数据集中其他列对的相关性后,预测新列对的相关性会变得更容易。
为了关注训练数据和测试数据之间的关系对预测性能的影响,考虑两种场景:
场景1:在列对的粒度上分离训练数据和测试数据,这意味着训练数据和测试数据可能包含来自同一数据集的列对,当然,每个列对仅被考虑一次。
场景2:确保训练数据和测试数据来自不同的数据集,即将用于相关性分析的数据集分离为训练数据集和测试数据集,然后仅从相应的数据集中导出用于训练和测试的列对。通过这种方法,训练样本和测试样本来自完全不同的数据集。该场景具有很高的实际相关性。它们展示了在代表性的数据集集合上训练预测器,然后将其应用于新数据集时的性能。

训练数据质量的影响
上图展示了相应的结果。它改变了训练数据的质量,但没有改变数量。对于所有五个质量指标,在训练和测试中允许来自同一数据集的列对可以提高性能。根据不同的指标,这种提高幅度可能适中,有可能更为显著。总之,假设5得以证明。
假设6:预测强相关性比预测弱相关性更容易。

相关性强弱的影响
上述假设将定义相关性的标准与预测性能联系起来。以下实验使用5%的p值阈值,但将|R|的阈值在0.8到0.99之间变化。实验结果没有显示出明显的趋势。随着相关性要求变得更严格,召回率通常会增加,而精确率和F1分数会下降。准确率和MCC没有显示出明显的趋势。总之,实验结果没有为假设6提供有力的证据。
本节探讨哪些测试用例属性会使相关性预测变得更难或更容易,根据列名的属性对结果进行细分。以下实验使用Roberta模型和皮尔逊相关系数。考虑绝对R值至少为0.9且p值至多为5%的相关列。
假设7:更长的列名会产生更多信息,使预测更准确。
实验考虑两种衡量列名长度的指标:字符数量和词元数量(即由空格和下划线分隔的文本片段数量)。以下长度范围与分位数有关(例如, “Q50-100%”包括长度大于或等于平均长度的列对)。

字符数量的影响

词元数量的影响
实验表明,差异非常显著。对于两种列名度量标准和所有五个预测质量指标,较长的列名都能提高性能。当以字符数量衡量长度时,这种差异更为明显(与以单词数量衡量相比)。较短的列名可能表明“占位符”名称的比例较高(例如,基于列编号的名称),或者与列语义的详细解释较少相关,导致性能较差。这些结果为假设7提供了实验证据。
假设8:英文单词比例较高(相对于缩写或其他符号)的列名更容易解释,从而使预测更准确。

英文单词比例的影响
上图报告了根据列名中英文单词比例划分的列对子集的结果。它通过以下方式测量该比例:首先,使用常见的分隔符将两个列名拆分为词元,然后将每个词元与英语词典进行比较,词典中包含的单词数量与所有词元数量的比值即为单词比例。上图将列对分为三组,分别与该比例的不同范围相关联(“Q50-100%”包括英语单词比例等于或高于平均值的列对)。
实验表明,低单词比例和高单词比例之间的绝对差异相对较小。例如,MCC分数仅从低比例的60%增加到高比例的65%。总体而言,假设8的实验证据较弱。
上述所有实验结果还表明,可以根据列名的属性来评估相关性预测的置信度,这对于将相关性预测作为一个组件的系统可能很有用。
本节将实验范围从皮尔逊相关性扩展到其他相关性度量,从而验证先前的发现是否具有通用性。以下实验考虑斯皮尔曼系数和泰尔U系数:
根据斯皮尔曼系数,如果绝对系数值大于或等于0.9(|ρ|≥0.9)且p值至多为5%,则认为列是相关的。
对于泰尔U系数,也使用0.9的阈值。默认情况下,再次使用80%的列对作为训练数据,并在列对的粒度上分离训练数据和测试数据。

三种相关性定义的预测性能
试验结果表明,虽然皮尔逊系数和斯皮尔曼系数的预测性能相近,但根据所有质量指标,泰尔U系数的预测性能有所提高。由于实验中泰尔U系数训练的数据更多,所以对于假设1,更多的训练数据(所有类型的列,而不仅仅是数值列)有助于提高这种性能。

斯皮尔曼系数在第5节假设中的结果
实验还针对斯皮尔曼系数重新测试了第5节中的假设。显然,增加训练数据量也会提高预测性能(假设4),在训练和测试案例之间共享数据集也是如此(假设5),但对于p值阈值的趋势(假设6)则不太明显。

斯皮尔曼系数在第6节假设中的结果
上图验证了第6节中关于斯皮尔曼系数的假设。它考虑了不同的数据子集并比较了预测性能。同样,影响预测性能的最重要参数似乎是列名长度(假设7)。

泰尔U系数在第5节假设中的结果
同样的实验比较了泰尔U系数在第5节中的假设。实验结果的相对趋势与先前的实验相似,但绝对值明显更好。特别的,当使用20%的训练数据时,泰尔U系数的预测质量仍然比使用80%训练数据时其他系数的预测性能更好。这表明,除了训练数据量之外,其他因素也一定有助于提高性能。

泰尔U系数在第6节假设中的结果
通过研究了泰尔U系数在第6节中的假设可以看出,虽然列名长度仍然是最重要的因素,但列名中英语单词比例较高也与更好的预测准确率相关(除了精确率指标)。尽管如此,绝对差异仍然相对较小。总之,先前实验的主要结果适用于其他相关性定义。
本节重点关注列类型及其对预测质量的影响。
假设9:预测质量因列类型而异。

列类型对三种相关性预测影响
实验根据涉及的列的数据类型对预测结果进行了细分。考虑列类型类型有bool(B)、float64(F)、int64(I)和object(O)。每个表的第一列包含列对的类型(例如,“I-F”表示第一列为int64类型,第二列为float64类型的列对)。实验报告了三种相关性的结果:
显然,列类型对预测准确率有显著影响。对于皮尔逊相关性,不同列类型组合的MCC分数相差 30%。类型的顺序也很重要(例如F-I和I-F),列的位置与相关性的可能性相关。例如,主键列往往首先出现在表中,并且通常是整数类型。因此,整数列后面跟着浮点数列的相关性概率,与相反顺序的相关性概率是不同的。这会影响预测的准确率和其他性能指标。同时,这也说明了除了列名之外,还可以利用列的位置信息。总体而言,这些结果支持假设9。
通过假设9,可以根据列类型评估预测的置信度。同时,这也引发了一个问题:列类型是否可以作为语言模型的额外输入,从而提升其性能?
假设10:将列类型作为额外特征可以提高预测准确率
实验将列类型作为额外特征进行考虑。与之前不同,语言模型的输入现在包含列名,后面跟着列类型(用单个空格分隔):对于“car”和“maker”这两列,若它们的类型都是“object”,那么输入就是“car object”和“maker object”这一对。

将列类型作为额外特征对于三种相关性预测的结果
实验表明,在大多数相关性度量和场景中,考虑列类型会带来一定程度的收益。在根据泰尔U系数预测相关性时,使用列类型信息可使精确率提高4%。另一方面,在根据斯皮尔曼相关系数预测相关性时,考虑列类型会导致略微的性能损失。总体而言,这些结果为假设10提供了较弱的证明。
9.1 数据剖析
数据剖析的目标是生成关于给定数据集的统计信息和元数据,企业和学术界已经开发了许多专门用于数据剖析的工具。通常,用户会指定要剖析的目标数据集以及要考虑的特定元数据类型。数据剖析成本较高,并且随着数据的变化可能需要定期重复进行。因此,剖析工具通常允许用户限制剖析开销,例如通过设置时间限制。
过去的研究已经提出了多种用于挖掘不同类型元数据的剖析方法,从单列表统计信息到更复杂的操作,比如唯一列组合发现、检测包含依赖关系、外键、顺序依赖关系或统计数据相关性(本文关注的重点)。
9.2 检测相关性
数据相关性的重要性促使研究者致力于在数据集中发现相关性。为了指导数据剖析工作,这些工具通常会分析数据样本。基于列名预测相关性的时间不依赖于数据大小。大量工作致力于解决考虑相关性的选择性估计问题,因为相关性在估计谓词组的聚合选择性方面起着重要作用。最近,机器学习被提议作为解决数据库中各种调优问题的方法。基于学习的模型的相关数据可以取代传统成本模型。本文以基于NLP对数据库模式元素进行分析的形式使用机器学习。
9.3 语言模型
基于Transformer架构的预训练语言模型最近在众多NLP任务中取得了显著进展。预训练语言模型基于“迁移学习”的理念。对于许多特定的NLP任务来说,通常使用预训练步骤,在有大量训练数据的NLP任务上训练Transformer模型。此外,任何书面文本都可以用作该任务的训练数据。预训练之后,得到的网络(及其相关权重)可以针对另一个任务进行微调。如今,预训练语言模型在广泛的NLP任务中都达到了最先进的性能。本文关注的是较小模型,使其能够以适度的开销指导数据剖析操作。
9.4 用于数据库的NLP
有许多研究已经做出了很多努力将NLP技术应用于数据库系统。在数据库研究中,一个长期目标是实现自然语言查询接口。在过去几年中,序列到序列模型已成功用于此任务。最近,基于Transformer架构的预训练语言模型在诸如Spider或WikiSQL等Text-to-SQL的基准测试中取得了优异的成绩。本文受之前工作的启发,研究在数据库模式元素上使用语言模型来支持数据库调优和数据剖析。
本文建议对与数据库模式元素相关的文本进行高级自然语言分析。这一建议基于假设预训练语言模型确实能够从模式文本中提取有用的信息。本研究首次详细评估了这一假设,重点关注相关性检测问题。相关性检测是一个成本较高的过程,由于其在数据库优化中的多种应用场景,在数据库领域受到了广泛关注。因此,获取额外信息来指导相应的数据剖析工作具有实际意义。本文通过实验得出了以下见解:
在许多情况下,预训练语言模型仅从列名就能推断出有关数据相关性的有用信息。对于相对较小的模型就已经能够实现这一点。
这些发现适用于多种流行的数据相关性度量,包括皮尔逊相关性、斯皮尔曼相关性和泰尔U系数。
在与测试数据相似的数据集上训练相关性预测模型可以提高性能,这为领域特定化提供了支持。
预测准确率仅略微受数据相关程度的影响。
另一方面,如果列名更长,预测会变得更加准确。
本文旨在为未来利用NLP增强数据库调优和数据剖析的研究提供了参考,为这一新兴研究方向的假设提供了证据支持。
论文解读联系人:
刘思源
13691032906(微信同号)
liusiyuan@caict.ac.cn









