Skip to content

Latest commit

 

History

History
79 lines (39 loc) · 3.82 KB

16.md

File metadata and controls

79 lines (39 loc) · 3.82 KB

16-DC-discovery

Source: Fast Algorithms for Denial Constraint Discovery, VLDB 2022.

动机:手工设定 DCs 费时费力,且可能出错,因此有一些工作提出了自动发现 DCs 的算法。

问题:现有算法遵循两步骤(1)从 records 构建 intermediate 数据结构(2)从 intermediate 枚举(enumerate)DCs. 但是现有算法在计算 intermediates 时效率较低。

intro 里举了一个 DC 的例子: $\varphi_1: \forall t, t' \in \text{employee}, \neg (t.SID=t'.ID \and t.Salary > t'.Salary)$ 其中 SID 指的是 supervisor ID,其表达的规则是”员工的工资不能比其 supervisor 的工资更高“,这一规则不能够用 keys, functional dependencies, 和 order dependencies 来表达。

Overall, DCs are essential building blocks in quantifying database inconsistency [18], being at the core of several state-of-the-art data cleaning systems [6, 9, 24].

这个很有用,用于说明 DCs 的重要性和广泛应用。

The higher the expressive power of a constraint type, the higher the computational complexity of its discovery.

这个也特别有用,可以用来回答”为什么不选择比 DCs 更 general 的表示方法“,因为表达能力的提高,伴随着自动发现这些 rules 的复杂度的增大。具体地,

  • 对于 FD,复杂性在元组数方面是二次的,在列数方面是指数级的
  • 对于 DC,在元组数上仍然是二次的,但在谓词(predicate)数上是指数的,更加复杂
  • 对于 approximate DCs,其发现过程相较于 exact DCs 更加 expensive
    • approximate DC(又名 partial DC),在一定比例的数据上成立即可,无需在全部数据上成立

Sec.2.1

对于 approximate DC 而言,需要一个函数来度量“近似性”,本文采用了一个最常用的:

$$ g_1(r, \varphi)=\frac{|{t, t'} \in r | (t, t') \not\models \varphi|}{n(n-1)} $$

即发生 violations 占可能的 tuples paris 的比例。

Sec2.2 DC discovery

第一步:构建可能的 predicate space

  • 这一步里,需要用到 predicate restrictions 来减少无意义的 predicates;具体地,对于 categorical 的列,只考虑 $=, \neq$ 关系,对于 numeric 的列,考虑全部 $=, \neq, <\ \leq, >, \geq$​ 关系;跨两个不同列时,仅当两列类型相同,且列里的值重叠度高于阈值时才考虑。

对于下面这个 employee 的表:

image-20241217104908817

构建出的 predicate 空间如下:

image-20241217104921370

第二步:构建 evidence set

  • 给定一对 tuples $t,t'$ ,其 evidence 指的是在这对 tuples 上成立的 predicates 的子集,形式化而言:

    $e_{t, t'} = {p | p \in P, t, t' \models p}$

    • 例如:对于 $t_1, t_2$ 而言,其 evidence $e_{t_1, t_2}={p_2, p_4, p_6, p_9, p_{10}, p_{11}, p_{13}, p_{15}}$
  • evidence set $E_r$ 则是全部可能的 tuples pairs 的 evidences 的集合。现实中,不同的 tuples pairs 可能产生相同的 evidence,因此 evidence set 一般比全部可能的 tuples pairs 数小很多。

第三步:DC 枚举(enumeration)

  • DC discovery 与枚举超图(hypergraph)中的命中集(hitting sets)有关:谓词空间作为顶点集,而每个 evidence 作为一个超图的 edge
    • 思路是,如果一个 DC $\varphi$ 是 valid,那么就不存在 tuples pair $t, t'$ 满足 $\varphi$ 的全部 predicates
    • 而由于 evidence set 包含全部可能的 tuples pairs 的 evidence(满足的 predicates 集合)
    • 因此,可以验证 evidence set 中的任意元素 $e$ 不包含 $\varphi$​ 的全部 predicates
  • 可见,枚举 DC 对于列数的复杂度是呈指数的

结论

  • DC 能够从数据中自动化地发现,且有效率优化方法