2015SIGKDD-(时序数据的Benchmark)Query

2021-08-17  本文已影响0人  Caucher

标题:时间序列数据索引的查询负载
本文和2018年VLDB期刊Generating data series query workloads属于同一篇文章,按照惯例,本文还是融合了二者的内容。
是做时间序列benchmark的一篇文章。

编者的思考

  1. 本文生成benchmark主要是靠改变原始数据集,这一点其实有些反直觉,也不够通用,希望能够给定数据集,算法生成一组query做benchmark,不改变原始数据集就好了。
  2. 本文只对归纳技术的TLB做比较考虑。可是效率和效果一般是有trade-off的,只考虑效果有失偏颇。对于一般意义上的benchmark,我们希望既能合理检验索引的剪枝效果,也对整体查询效率给出客观考量。换句话说,索引技术的TLB,不能完全决定该索引的性质。

编者的总结

  1. 论文设计的思路是去比较不同归纳技术的TLB,即下界的紧密程度,尤其是要比较那些下界都很紧的归纳技术。对于这些归纳技术,过于“简单”的query,大家都可以轻松剪枝掉大部分,计算一小部分数据集的真实距离。但为了能够比较优劣,本文构造出一些比较难的query,使得在这些query的1NN序列周围,均匀地向外层分布着很多干扰序列。这样即使是TLB很大的一组归纳技术,也都可以根据真实距离计算次数,进行排名。
  2. 读者可能有疑惑,既然是比较不同归纳技术的TLB,搞一组query直接算TLB求均值不就好了,为什么要这么麻烦?因为随机生成的,或者是数据集里的,主要都是些简单的query,得不到一个准确的评判,尤其是对于那些下界已经很紧的归纳技术,更是无法比较,因此要构造更难的query。

ABSTRACT

时间序列的索引已经提出很多,目前无法公平评估这些索引的效果。
本文阐明随机选取序列的方法不可取,定义了如何度量query的特征,因此可以有效比较归纳方法和索引技术。

1. INTRODUCTION

之前用于实验的query主要都是简单Query,因此对索引的测试也只能局限于有限的部分测试。本文提供对query难度的度量方法,表示一个索引为了处理这个Query所要承担的工作量。这种难度的定义也是基于下界函数。

2. PRELIMINARIES

本文主要关注最近邻(1-NN),欧氏距离。

2.2 Data Series Indexing

索引技术主要包含以下三种:

3. CHARACTERIZING WORKLOADS

3.1 Requirements for meaningful and effective workloads

一个好的workload,其中的query要对summarization的质量有很好的度量;而每个query的难度应该精准地刻画这种summarization应答查询时需要的工作量。
因此我们要准确定义难度,还要筛选query,这种难度度量应该满足以下条件:

  1. 索引内部的准确性:对于给定一种summarization,不同的query在其上搜索有不同的工作量,这个工作量之比,应该就是难度之比。而且,应该在任意给定的summarization之上,都有这个性质。


    image.png
  2. 索引间的准确性:给定一个query,在不同的summarization上有不同的工作量,工作量之比,应该正好是偏差之比。工作量越大,证明索引的剪枝能力越弱,偏差也就会越大。


    image.png
    • 这一条是query的性质,与难度定义无关。

3.2 Index-dependent query answering effort

3.2.1 Lower bounds, ATLB, and TLB

首先给出下界紧密程度的定义:
ATLB是指一条query和一个数据序列的估计距离和真实距离的比值,由于有下界性质,所以这个比值总是大于0小于1的,越接近1性质越好。


image.png

TLB是ATLB在一个数据集和一组Query之间的均值。


image.png

3.2.2 Index-dependent measure of minimum effort

3.3 Intrinsic query hardness

3.3.1\epsilon-dependent Hardness

接下来给出一个和归纳方式无关的定义。

3.3.2 \epsilon-independent hardness

3.3 Discussion

4. EVALUATION OF PREVIOUS WORK

4.1 Datasets and Workloads

三个数据集,randomwalk, DNA, EEG,长度有三种,64,256,1024。
如何使用数据集,以前的研究有两种方式:

  1. 用一部分数据集做索引,另一部分做query workload
  2. 全用做索引,一部分拿出来加点噪声做query workload.

本文用第一种,用之前首先乱序数据集。

4.2 Hardness Evaluation

这三个数据集的query普遍比较简单。


image.png

5. QUERY WORKLOAD GENERATION

因为目前的query大多是简单的,为了更困难一些,我们在原有的query集上加一些\epsilon区域内的点。
整体的算法思路是,我们先随机生成一些简单的query,称为集合Q(数量大于n),然后定义一组n个困难度值,从低到高,总和不超过1(覆盖的总\epsilon区域不会超过数据集的范围)。然后我们要寻找n个query,使得它们的困难度分别为我们定义的这组困难度值。

5.1 Finding Non-intersecting Queries

5.2 Deciding the Number of Points to Densify

5.3 Densification Process

\epsilon区域致密不能随机生成一些点,因为z-norm之后这个点有可能跑出去,目前考虑到的致密方案有三种:

  1. 在目前的\epsilon区域中的点随机选择,然后加一点噪声;
    • 特征:对原有的\epsilon区域内的数据分布影响不大。
    • 缺点:对于那些非常紧的归纳技术,加了这些点可能根本不会影响到这个query的难度,因为对于这些归纳的技术,其ME范围可能只是\epsilon区域中很小一部分,新加的点在外环和没加其实不会影响查询时的工作量。
  2. 向1-NN加一些噪声;
    • 特征:大量生成的点都聚集在1NN周围,也就是\epsilon较小的区域,\epsilon较大的区域会非常稀疏。
    • 缺点:各种归纳技术的ME都趋于一致,难以进行比较。
  3. \epsilon区域加点使得其中的点更偏向于均匀分布。

哪一种更好呢,作者做了一组实验来说明。

5.3.1 Random densification

首先来看第一种方法。下图是将query用此方案致密后的实验结果,每一张图里分三个子图,上方的是随\epsilon增加数据点的分布情况,右边图是各种归纳技术的ME,中间的是各段\epsilon范围内的数据点对ME的贡献情况,是一个热力图。

5.3.2 1NN densification

image.png

5.3.3 Equi-densification

在3.3节中我们讨论到,在\epsilon区域内数据点分布更均匀的query是更好的benchmark,原因在于可以轻松通过计算真实距离的次数推断出\epsilon

6. EXPERIMENTS

实验对前述的三个数据集做实验。100000条序列,长度256。
给定一组query难度值,算法在原有数据集上补充一组点,然后找到一组query,满足给定的难度值。

6.1 Non-interfering Queries

就是贪婪算法去找\epsilon区域不想交query点时候,最多能找到多少个点。

6.2 Densification Mode

还是在比较三种致密方法,1NN的方法对所有方案都是差不多的,Random方法过度偏爱紧的下界技术(SAX),对于差一点的有过度惩罚。只有均匀分布的,最贴近真实TLB。


image.png

6.3 Case Study on Actual Indexes

EDQ是通过均匀分布找到的queries,Random是随机生成的。

上一篇下一篇

猜你喜欢

热点阅读