文章包括三大部分:
对于一个静态的数据库,本文将五种基于学习的基数估计方法与九中传统的基数估计方法在四个现实世界的数据集和统一的工作负载上进行了比较。结果说明基于学习的基数估计方法比传统方法更加准确,但也需要更多训练和推理的开销。
探索在动态的数据库中,基于学习的基数估计方法是否能够表现出色,结果证明基于学习的基数估计方法不能很好的实时的捕捉到数据的更新,经常会产生一些较大的误差,而在更新环境不高的环境下,它们虽然表现的更好,但也没有明显的胜出。
深入了解了基于学习的基数估计方法,并探索了它们什么时候会出错。结果显示,数据之间相关性、数据偏斜度、和数据域大小的变化会很大程度上影响基于学习的技术估计方法。更重要的是,它们的表现无法被很好的说明,是不可预测的
基于上述探索发现,文章给出了两个未来的研究方向:
简单论述了一下ML FOR DB,提出了三个问题:
文中本节介绍了一下基数估计问题的描述:
对于一个拥有\(n\)个属性的关系\(R\),我们现在有一个在\(R\)上的\(d\)个查询谓词构成的查询语句例如
SELECT COUNT(*) FROM R
WHERE \(\theta_1\) AND \(\cdots\) and \(\theta_d\),
其中 \(\theta_i\) 等价为一个查询谓词例如\(A = a\),基数估计的任务就是回答\(R\)中有多少元组满足这个查询。选择度问题是一个与之等价的问题,它返回的是满足元组占全部数据的占比。
该节将现有的基于学习的基数估计方法分成两类:
训练阶段
推理阶段
遇到数据库更新时,必须同时更新查询池和label,产生新的特征向量并重新训练模型。
训练阶段:
推理阶段:
对于数据库更新,需要更新或重新训练联合分布模型。
\[P(A_1,A_2,\cdots,A_N)=P(A_1)P(A_2|A_1)\cdots P(A_N|A_1,\cdots,A_{n-1})
\]
许多新提出的基于学习的基数估计方法没有直接的相互比较
没有一个标准的数据集,工作负载的实验表针
现有的实验都集中在静态的环境上
评估标准:Q-error
\[{error} = \frac{max({est(q)},act(q))}{min({est(q)},{act(q)})}
\]
code release:https://github.com/sfu-db/AreCELearnedYet
基于学习的方法比传统方法明显更加准确
Naru是更加准确并且稳定的方法
LW-XGB在大多数情况下可以实现最小的q-error,但在max q-error中无法击败MNSCN
在LW-XGB/NN中误差较大的查询均有如下特征
MSCN可以很好的避免上述类型的查询可能是因为在它的输入中使用了一些采样数据。
Naru将所有列建模为离散值,并学习它们的嵌入式表示,这使得改模型非常适合应用于一些数据域较小的数据集(离散值的数量较少)。
基于学习的模型得到更好的准确度的同时,花费了更大的开销。
小结
数据库更新流程;
然后就是基于上述流程做实验,分析数据,小结如下
传统方法的一个有点就是它们的透明度,当它们的一些假设条件被违反时,就会产生较大的误差。但基于学习的方法不透明,缺乏理解。这一节中,我们想知道基于学习的方法产生一些较大错误的原因。
做的一些实验,对数据的一些分析
小结
效率和精度的权衡
超参数调优方面优化
增强学习模型的可信度
手机扫一扫
移动阅读更方便
你可能感兴趣的文章