隐私保护下的数据流分类研究
1. 引言
在当今信息爆炸的时代,数据不仅存储量大,而且随时间快速增长,数据流就是典型例子,如互联网流量、股票交易和电话通话等。为挖掘数据流中的信息和知识,常需联合分析多个相关数据流,以发现跨数据流的趋势和模式。例如,股票交易与新闻、交通报告与车祸、不同类型的传感器读数等都存在关联。本文聚焦于从这些相关数据流构建分类模型,认为分类模式可能由多个相关数据流中某些条件的共同出现决定。
1.1 动机示例
以股票市场的“有利交易”为例,即卖在股票暴跌前或买在股票上涨前。为构建识别“有利交易”的分类模型,需考虑股票交易流及相关数据流,如交易员与上市公司人员的电话通话流。以下是相关数据:
- 交易流:T (τ, 交易员, 类型, 股票, 类别)
- 电话通话流:P (τ, 呼叫者, 被呼叫者)
- 公司表:C (公司, 股票)
- 人员表:S (姓名, 组织)
其中,τ 是时间戳,“类型”为“卖”或“买”,“类别”(“是”/“否”)表示是否为有利交易。可使用 SQL 查询提取信息:
SELECT *
FROM
P, S, T, C
WHERE S.Name = P.Caller AND P.Callee = T.Dealer
AND P.τ < T.τ AND T.Stock = C.Stock
此查询对相关数据进行连接操作,连接结果用于训练分类器。该示例表明,某些行为的分类依赖于多个相关数据流的信息,联合分析这些数据流可能产生比单独分析单个输入流更准确的分类器。
1.2 挑战与贡献
解决此问题面临两大挑战:
-
隐私保护
:交易和通话流涉及商业秘密和个人隐私,数据所有者不愿披露敏感数据,传统集中式分析方法会违反隐私约束。
-
连接流膨胀
:输入流到达速度快,多个输入流的连接操作成本高,且“多对多”连接关系会使连接流数据量远大于输入流,传统分类方法难以跟上数据到达速度。
本文提出采用朴素贝叶斯分类器(NBC)解决安全连接流分类(Secure - JSC)问题。NBC 的独立性假设为解决 Secure - JSC 提供了独特机会,即使该假设被违反,NBC 仍具有可靠性。通过计算“膨胀摘要”,可在不生成连接流和交换私有信息的情况下,获取 NBC 所需信息。
2. 相关工作
隐私保护数据挖掘和数据流挖掘以往多是分开研究。多数隐私保护数据挖掘技术针对静态数据,不适用于无界且持续更新的数据流;而多数数据流挖掘工作未考虑隐私问题。相关工作存在以下局限:
- 数据流管理中的滑动窗口连接技术主要关注在资源约束下计算连接统计信息,未考虑隐私问题,且不适用于 Secure - JSC 问题。
- 多数流挖掘算法处理单流或简单统计,未考虑隐私和多流连接关系。
- 安全决策树分类器构建方法多针对静态数据,不适用于数据流。
- 少数兼顾数据流和隐私保护的研究,如隐私搜索和添加随机噪声等方法,无法解决 Secure - JSC 问题。
3. 问题陈述
3.1 安全连接流分类
考虑分布在 n 个站点的 n 个数据流 S1, …, Sn,安全连接流分类问题要求构建分类器,满足:
- 训练实例由所有数据流的滑动窗口连接定义。
- 任何站点不了解其他数据流的私有信息。
滑动窗口连接由连接条件、窗口规范和窗口更新规范指定。连接条件为等式谓词的合取,连接图为无环且连通。窗口和更新规范可以是基于元组或时间的。目标流包含类别列,每次窗口更新时需重建分类器。
3.2 朴素贝叶斯分类器
对于单表 T (X1, …, Xn, 类别),NBC 根据最大后验假设将元组 x 分配到使条件类概率 P(Ci|x) 最大的类别 Ci:
[
\arg\max_{C_i \in 类别} P(C_i|x) = \arg\max_{C_i \in 类别} P(x|C_i)P(C_i)
]
其中,P(Ci) 是类概率,P(x|Ci) 是给定类别标签 Ci 时 x 的条件概率。在变量 X1, …, Xn 给定类别标签时独立的假设下,NBC 估计 P(x|Ci) 为:
[
P(x|Ci) = \prod_{j = 1}^{n} P(x_j|C_i)
]
要计算 P(xj|Ci) 和 P(Ci),只需计算每个不同值 xk 的类计数矩阵 (xk, < N1, …, Nm >),其中 Nj 是具有值 xk 和类别标签 Cj 的元组数量。
对于 Secure - JSC 问题,挑战在于不生成连接表 T 的情况下计算 P(xj|Ci) 和 P(Ci)。
4. 我们的方法
4.1 整体思路
假设每个输入流的当前窗口可放入本地内存,流之间的连接关系形成无环连接图,即根树,称为传播树。对于输入流 Si 的站点,不生成连接流,而是为当前窗口中的每个元组 t 维护 (Cls, Count) 条目。Cls 是类别向量 < N1, …, Nm >,记录 t 在未生成的连接流中与类别标签 Ci 关联的出现次数;Count 是 t 在连接流中的出现次数。通过传播“膨胀效应”计算 Cls,分为自底向上和自顶向下两个阶段。
4.2 初始化
- 目标流中的每个元组,若类别标签为 Ci,则 Cls 的第 i 个元素为 1,否则为 0,Count 初始化为 1。
- 其他流中的元组,Cls 初始化为全零 < 0, …, 0 >,Count 为 1。
4.3 自底向上传播
此阶段将 Cls 和 Count 从叶节点传播到根节点。对于父节点 SP 和子节点 SC,若 SP 中的元组 t 与 SC 中的 k 个元组连接,则 t 在连接中出现 k 次。定义从 SC 到 SP 的膨胀摘要为 (v, ClsAgg, CountAgg),其中 v 是 SC 中的不同连接值,ClsAgg 和 CountAgg 是包含值 v 的所有元组的 Cls 和 Count 的聚合。根据目标流是否在 SP 的子树中,有两种情况:
- 若目标流不在 SP 的子树中,仅膨胀 SP 的 Count。
- 若目标流在 SP 的子树中,膨胀 SP 的 Cls 和 Count。
相关计算如下:
假设父节点 SP 有 n 个子节点,对于 SP 中的元组 t,其连接值为 v1, …, vn,(vi, ClsAggi, CountAggi) 是第 i 个子节点的膨胀摘要,则:
[
t.Count = \sum_{j = 1}^{n} CountAgg_j
]
若某些 ClsAggi 非零,则:
[
t.Cls = ClsAggi \times \prod_{j = 1, j \neq i}^{n} CountAgg_j
]
4.4 自顶向下传播
自底向上传播结束后,根流中的 Cls 反映了所有流的连接,但其他流中的 Cls 未反映其祖先的连接。因此,需要自顶向下传播正确的连接信息。对于父节点 SP 和子节点 SC,若 SC 中的元组 t 与 SP 中具有连接值 v 的元组连接,则 SC 中具有该连接值 v 的所有元组也连接。定义从 SP 到 SC 的重新缩放摘要为 (v, ClsAgg),其中 v 是 SP 中的连接值,ClsAgg 是 SP [v] 中所有元组的聚合类别向量。SC 中元组 t 的 Cls 重新缩放为:
[
t.Cls = ClsAgg \times \frac{t.Count}{SC[v].CountAgg}
]
4.5 使用 NBC 进行分类
对于新实例 t =< t1, …, tn >,每个站点 j 计算 P(tj|Ci) 并发送给协调器,协调器计算 P(t|Ci),将使 P(t|Ci) 最大的类别标签 Ci 分配给 t。
4.6 算法分析
- 隐私性 :在自底向上和自顶向下传播中,仅在父子节点对之间传递摘要。非连接属性值不传输,连接属性值在满足半私有属性模型的情况下交换,确保不泄露私有信息。
- 可扩展性 :每个流(窗口)仅扫描一次,摘要大小与不同连接值数量成正比,与连接元组数量无关。整个传播过程与窗口大小线性相关,与连接大小无关。选择窗口最大的输入流作为根可最小化扫描成本。
5. 实验研究
5.1 真实数据集实验
使用英国道路事故数据进行实验,包含“事故”、“车辆”和“伤亡”三个表,“伤亡”为目标流,有“致命/严重”和“轻微”两个类别。比较了以下分类算法:
- NB Join:基于多个流连接的 NBC 分类器。
- NB Target:仅基于目标流的 NBC 分类器。
- DT Join:基于连接流的决策树分类器(C4.5)。
- DT Target:仅基于目标流的决策树分类器。
5.1.1 分类准确性
实验结果表明,基于多个流的分类器更准确,验证了联合分析相关数据流的优势。同时,在相同训练集下,朴素贝叶斯分类器与决策树分类器性能相当。
5.1.2 每个输入元组的时间
NB Join 每个输入元组的时间几乎恒定,而 DT Join 的连接时间随窗口大小增加迅速增加。因此,NB Join 比 DT Join 更高效。
5.2 合成数据集实验
为进一步验证,设计了自己的数据生成器,考虑 k 个流的链式连接,S1 为目标流。实验结果与真实数据集实验一致,表明多个流的相关性对分类有益,NB Join 能处理高数据到达率。
5.3 讨论
实验表明,当分类特征分布在多个相关数据流中时,提出的连接流分类方法比仅考虑目标流的传统方法具有显著的准确性优势。算法成本与输入流大小线性相关,与连接大小无关,适用于多相关数据流。但当窗口重叠较大时,每次窗口滑动重建分类器可能重复工作,可考虑增量更新 NBC,但由于重叠元组仍需与其他流中的新元组连接,增量更新的好处有限。
6. 结论
本文针对多个私有数据流的分类问题,提出基于朴素贝叶斯分类器的解决方案。通过快速获取关键连接统计信息,在不生成连接流和交换私有信息的情况下构建分类器。处理成本与输入流大小线性相关,与连接大小无关。实验结果支持联合分析相关数据流对分类质量有益,所提出的方法能处理更高的数据到达率和多对多连接关系。
5. 实验研究(续)
5.2 合成数据集实验(续)
-
数据生成器
:
我们设计的数据生成器考虑了 k 个流 (S_1, \cdots, S_k) 的链式连接,其中 (S_1) 是目标流。相邻的流 (S_i) 和 (S_{i + 1}) 有一个连接谓词,非相邻的流没有连接谓词。所有流的元组数量都为 (|S|),连接属性是分类属性,且具有相同的域大小 (D)。此外,所有流都有 (N) 个排序属性和 (N) 个分类属性(不包括连接属性和类别属性)。分类值从大小为 20 的域中随机抽取,所有排序属性的排序域为 1 到 10。-
构建数据集的步骤
:
- 连接值 :每个流 (S_i) 由 (D) 个组组成,从第 1 组到第 (D) 组。(S_i) 的第 (j) 组((1 \leq j \leq D))中的所有元组与 (S_{i + 1}) 的第 (j) 组中的所有元组连接,但不与其他元组连接。第 (j) 个连接组的大小 (Z_j) 对于所有流 (S_1, \cdots, S_k) 都相同,且遵循泊松分布,均值为 (\lambda = |S| / D)。第 (j) 个连接组的大小为 (Z_j^k),均值为 (\lambda^k)。连接的膨胀比定义为 (\lambda^k / \lambda = \lambda^{k - 1})。
- 排序值 :生成排序属性,使得第 (j) 个连接组中的所有连接元组具有相同的类别标签。具体来说,确保同一组中的所有连接元组在相同数量的排序属性上具有“高”值。一个排序值为“高”,如果它属于其排序域的上半部分。为了确保类别标签的期望属性,输入流 (S_1, \cdots, S_k) 按如下方式构建:将 (h_j) 随机分配到 (S_1, \cdots, S_k) 中,使得 (h_j = h_{j1} + \cdots + h_{jk}),并且 (S_i) 的第 (j) 组中的所有元组在 (h_{ji}) 个排序属性上为“高”。(h_j) 遵循 [0, (k \times N)] 范围内的均匀分布。
- 类别标签 :如果 (h_j \geq q \times k \times N),对于某个百分比参数 (q),则将“是”类别标签分配给 (S_1) 的第 (j) 组中的每个元组,否则分配“否”类别标签。
- 概念漂移 :为了模拟数据流中的“概念漂移”,每次生成 (W) 个元组后改变参数 (q)。具体来说,对于每 (W) 个元组,我们在 [0.25, 0.75) 范围内随机确定一个 (q) 值,遵循均匀分布。(W) 称为概念漂移间隔,通常 (W) 大于窗口大小,因为并非每个窗口都会导致分类变化。
-
构建数据集的步骤
:
| 参数 | 含义 |
|---|---|
| (N) | 每个流中的排序属性和分类属性的数量 |
| ( | S |
| (D) | 连接属性的域大小 |
| (\lambda) | 组大小的均值,(\lambda = |
| (W) | 概念漂移间隔 |
-
实验结果
:
-
准确性
:
- 我们生成了三个流 (S_1, S_2, S_3),参数设置为 (N = 10),(|S| = 1,000,000),(D = 200,000),(\lambda = 5),(W = 100,000)。图 20.9 显示了准确率与窗口大小的关系,窗口重叠率为 50%。(DT Join) 和 (NB Join) 比基于单流的对应方法更准确,且两者的准确率相似。
- 图 20.10 显示了另一个实验,我们将窗口大小 (w) 固定为 20,000,并将 (W) 从 100,000 减小到 20,000。由于之前的实验已经证实基于连接流的分类器具有更好的准确性,在这个实验中我们只显示了 (NB Join) 和 (DT Join) 的准确性。正如预期的那样,随着 (W) 的减小,准确率缓慢下降,因为类别标签的结构变化更频繁。
-
每个输入元组的时间
:
- 图 20.11 显示了与图 20.9 相同数据集上每个元组的时间。连接时间远大于 (NB Join) 的时间。随着窗口大小的增加,连接时间由于连接基数的增加而增加,而 (NB Join) 对于任何窗口大小每个元组花费的时间几乎恒定。
- 图 20.12 显示了每个元组的时间与连接膨胀比的关系。参数固定为 (N = 10),(|S| = 1,000,000),(D = 200,000),(W = 100,000)。对于三个流的连接,膨胀比为 (\lambda^2)。通过将 (\lambda) 从 2 变化到 7,膨胀比从 4 变化到 49。窗口大小固定为 20,000。再次,(NB Join) 表现出更好的性能,并且对于连接的膨胀是平稳的。这是因为它恰好扫描窗口两次,与连接的膨胀比无关。另一方面,连接随着膨胀比的增大每个元组花费更多的时间,因为生成了更多的元组。
- 图 20.13 显示了每个元组的时间与流数量的关系。所有参数仍然与图 20.11 相同。窗口大小固定为 20,000 个元组。我们将流的数量从 1 变化到 5。(k) 流连接的膨胀比由 (5^{k - 1}) 决定。结果的比较与图 20.12 相似。
-
准确性
:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(生成合成数据集):::process
B --> C{选择实验指标}:::decision
C -->|准确性| D(计算不同分类器的准确率):::process
C -->|时间| E(计算每个输入元组的时间):::process
D --> F(分析准确率结果):::process
E --> G(分析时间结果):::process
F --> H([结束]):::startend
G --> H
5.3 讨论
在真实数据集和合成数据集上的实验都表明,当分类特征分布在多个相关数据流中时,提出的连接流分类方法比仅考虑目标流的传统方法具有显著的准确性优势。主要挑战在于如何在高速输入流的情况下进行分类,因为连接流的数据到达率甚至比输入流更高。实验结果显示,提出的算法的成本与输入流的大小呈线性关系,与连接大小无关,这一特性使得该算法优于其他替代方法。
需要注意的是,每次任何输入流的窗口向前滑动时都必须重建分类器。当窗口之间没有重叠或只有小重叠时,这种策略是合理的。然而,当窗口有显著重叠时,这种策略倾向于在重叠数据上重复工作。在这种情况下,一种更有效的策略可能是仅对窗口滑动导致的差异进行增量更新 NBC。但由于重叠元组仍然需要与其他流中的新元组连接,这意味着无法避免对重叠元组的扫描。考虑到增量更新带来的开销,其好处是有限的。
6. 结论
受现实应用的启发,我们研究了训练数据为多个私有数据流的分类问题。直接连接所有流会违反隐私约束,并且会面临连接膨胀的问题。我们提出了一种基于朴素贝叶斯分类器的解决方案,主要思想是在不实际计算连接的情况下快速获取关键的连接统计信息。通过这种技术,我们可以在不交换私有信息的情况下构建与使用连接流相同的朴素贝叶斯分类器。
处理成本与输入流的大小呈线性关系,与连接大小无关。实证研究支持了我们的观点,即联合分析多个相关数据流确实有利于提高分类质量。所提出的方法每个输入元组的处理时间要低得多,能够处理更高的数据到达率,并处理数据流的一般多对多连接关系。
综上所述,我们的方法为隐私保护下的数据流分类提供了一种有效且高效的解决方案,具有广泛的应用前景。未来的研究可以进一步探索如何优化算法在窗口重叠情况下的性能,以及如何将该方法应用到更多复杂的实际场景中。
| 方法 | 准确性 | 处理时间 | 隐私保护 |
|---|---|---|---|
| NB Join | 高 | 低 | 满足 |
| NB Target | 低 | 低 | 满足 |
| DT Join | 高 | 高 | 不满足 |
| DT Target | 低 | 低 | 满足 |
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(提出隐私保护下的数据流分类问题):::process
B --> C(采用朴素贝叶斯分类器):::process
C --> D(计算膨胀摘要):::process
D --> E(构建分类器):::process
E --> F(进行实验验证):::process
F --> G{实验结果是否符合预期}:::decision
G -->|是| H(得出结论,方法有效):::process
G -->|否| I(分析原因,优化方法):::process
I --> C
H --> J([结束]):::startend
超级会员免费看

被折叠的 条评论
为什么被折叠?



