Professional Documents
Culture Documents
面向数据治理的具有传播学习能力的异常识别方法及系统
技术领域
本发明属于数据治理领域,涉及异常数据识别技术,具体涉及一种面向数据治理的
具有传播学习能力的异常识别方法及系统。
背景技术
数据治理是发挥数据要素价值的关键抓手,异常数据的识别是数据治理领域的重要
环节。异常数据通常被称定义为离群值、噪声等(如具有明显差异的观测值)。异常数
据可能源自多个因素,包括机械故障、仪器错误、人为错误等,而这些数据的产生通常
是不可避免的,这些异常值的存在会降低数据质量,对数据分析的结果产生不利影响,
甚至可能导致严重后果。因此需要在数据治理过程中对异常数据进行识别与排除。
目前常用的异常检测技术有以下几种:
基于人工规则和统计的方法:人工规则方法主要根据专家经验设立规则对数据进行
核查,与规则不符即为异常。但是基于规则的检测方法只能检出规则之内的异常,检测
面有限。基于统计学的异常检测方法一般是建立数据分布模型、计算对象符合该模型的
概率并将低概率的对象标记为异常。一些常用的方法有箱线图、3σ准则和 Grubbs 检验
等,这些方法都假设数据服从某种分布,并利用数据进行参数估计。其他方法还有混合
高斯建模、基于马尔科夫的模型等。虽然基于统计学的方法具有较好的鲁棒性,适用于
低维度数据,但在处理高维数据时存在限制,同时也受数据分布和模型参数的影响。
基于有监督及无监督的机器学习方法:有监督的机器学习假设在给定的特征空间中
可以学习到能够区分正常和异常类的分类器,从一组标记数据中学习模型,然后使用学
习到的模型对待检测数据进行分类。常见的有监督方法有贝叶斯网络、支持向量机、随
机森林等。无监督的机器学习包含密度检测、特殊的分类方法以及其他方法。密度检测
方法估计每个数据实例的邻域密度,位于低密度邻域的观测值被认为是异常,经典的密
度方法有 DBSCAN 和局部异常因子 LOF。
基于深度学习的方法:深度学习技术能够自动学习数据的高级表示和特征,从而有
效地捕捉数据中的复杂模式和异常行为,常见的方法包括自编码器 AE、变分自编码器
VAE 和生成对抗网络 GAN 等。自编码器由编码器和解码器两部分组成,通过将输入数
据压缩到低维编码表示并重构原始数据来学习数据的潜在结构。生成对抗网络是由生成
器和判别器组成的对抗性模型。在异常检测中,可以使用生成器来生成正常数据分布,
并使用判别器来区分生成样本和真实样本。
有监督异常检测技术在性能上优于非监督异常检测技术,因为有监督方法使用标记
- 1 -
说 明 书
样本进行训练,但是获取有标记的数据耗费的人工成本极大,在工业上难以大规模应用。
无监督异常检测方法无需标签即可训练,但是由于缺乏标签信息,对数据的处理较为主
观,更多地依赖于数据的分布和统计特性,并且不同的算法和参数设置可能导致不同的
异常检测结果,这使得结果的解释和比较变得困难。
随着数据成为生产要素的数据时代的到来,数据价值的发挥对于数据质量提出了更
好的要求,数据治理成为提高数据质量的关键抓手,如何高效、准确的识别混合数据中
的异常数据成为结构化数据治理中的核心问题之一。然而现有的异常识别算法在处理混
合型数据方面存在诸多不足,检测的目标尺度也较为单一。混合型数据是指包含数值型
和分类型特征的数据。基于人工规则和统计的方法往往仅限定于分类型数据;传统的无
监督学习方法异常识别的准确率过低;经典的 IF 算法仅关注于数值型数据的异常检测,
对于混合型数据的检测效果不佳。深度学习等方法依靠数据重构识别异常往往需要实现
有纯净的训练数据;有监督方法则需要事先对训练集进行完备的正常/异常标注,这些前
提在实际工作中往往都无法满足,海量数据的标注需要极大的人力投入。 更为关键的
是:现有的各种方法都假设不同数据属性之间是独立的,这在现实中完全无法满足。现
实中的数据不同数据属性之间往往是有相关性的;此外,现有的方法往往只能够识别出
整条记录是否有异常,而无法识别出存在异常的具体字段。
发明内容
发明目的:为了克服现有技术对混合型数据中不同种类异常的识别能力不足的问题,
提供一种面向数据治理的具有传播学习能力的半监督异常识别方法及系统,首先依据集
成的无监督异常检测算法构建异常特征矩阵,然后依据采样算法抽取有代表性的数据,
通过系统中集成的用户交互模块对数据进行标注,通过标签传播扩展标签数量,大幅减
少所需标签数据的数量,通过训练有监督的异常检测模型并结合主动学习提升识别准确
性,不仅可以识别当前记录是否异常,而且可以识别具体异常的字段。
技术方案:为实现上述目的,本发明提供一种面向数据治理的具有传播学习能力的
异常识别方法,包括如下步骤:
S1:进行配置文件加载,从数据源读取待检测数据,且将待检测数据区分为数值型
字段和分类型字段;
S2:对待检测数据进行预处理,获取到采样区间和初始标签;
S3:根据采样区间进行数据采样,结合交互标记操作,训练字段级异常分类器与记
录级异常分类器;
S4:利用训练好的字段级异常分类器和记录级异常分类器分别对待检测数据进行字
段级异常识别和记录级异常识别,输出异常数据。
- 2 -
说 明 书
进一步地,所述步骤 S1 中配置文件加载具体为:从配置文件中获取参数设置和正
常数据信息等相关配置,参数设置包括待检测数据路径、采样数量、特征生成算法、标
签传播方式等,正常数据信息是指用户已知的该数据上的正常记录及分类型字段的正常
类别值,初始化记录集合 Lr 与字段集合 Lc,将正常数据信息保存在对应结构中,若无
则为空,如 Lr {x1 , x2 , } , Lc { j1 : (c1 , c2 , ), } ,其中 xi 是一条完整的记录,c1 代表
j1 列中的类别的值。
进一步地,所述步骤 S1 中数据读取为:从数据源读取待检测数据 D,区分数据中
数值型字段和分类型字段的列名称,将数据、列名称保存在对应的结构里。
进一步地,所述步骤 S2 中的预处理具体包括如下步骤:
A1:生成特征集合
A1-1:对于数值型字段,根据特征生成算法配置参数并生成特征;采用孤立森林
(Isolation Forests,IF)、经验累积分布检测(Empirical-Cumulative-distribution-based Outlier
Detection,ECOD)算法、直方图检测(Histogram-based Outlier Score,HBOS)算法其中的
某一种或多种生成特征,生成特征的方法是对每一列数值字段进行检测,将该算法的异
常得分作为字段的特征,共生成 m 维特征,并将特征使用 Min-Max 标准化处理,其中
m 是使用上述算法的数量;
A1-2:对于分类型字段,利用同频异化的频率转化方法为每个字段生成一维特征;
A1-3:将每个字段对应的特征保存在集合中;
A2:群体识别与编码,包括如下步骤:
A2-1:基于聚类方法将数值型字段的特征转换为聚类结果的编码表示;首先为每个
数值列训练一个聚类模型,采用 K-Means 算法进行聚类,在构建聚类模型后,将每个数
值都替换为对应的聚类标签结果,设第 j 列字段生成四个聚类簇 C j {c0 , c1 , c2 , c3 } ,将该
列的所有数据替换为其所属的聚类簇编号{0,1,2,3};
A2-2:将分类型字段特征转换为编码表示;对于任意一列分类型字段,将其按频率
特征大小进行排序,并转换为编码表示,如该列中频率最大的类别编码为 0,其次的为
1,以此类推,将所有列转换后生成编码数据表格 DC;
A3:获取采样区间和初始标签,包括如下步骤:
A3-1:使用增强孤立森林预评分:
为了减轻用户的交互压力,需要尽可能的减少用户待标注数据的数量,采用无监督
算法实现异常记录的预评估,确定较为明显正常和异常数据,将不确定性较大的一部分
数据进行采样后再由人工进行标注,提升采样的有效性。本发明提供的增强孤立森林算
法模型能够有效识别混合型数据异常,使用增强孤立森林算法计算每条数据的异常得分,
- 3 -
说 明 书
并对得分由高到低进行排序,分数越高表明该条数据越异常;
A3-2:切分数据并确定采样区间
基于设定阈值(一般设置为 1%~5%)按照增强孤立森林得分高低对数据进行切分,
在阈值附近的群体标签最难以判别,切分后获得异常数据集合 A 和正常数据集合 N;
对集合 A 和 N 去重,获得去重集合 A'和 N',再对集合 A'和 N'分别以 50%的比例进
一步划分,记为 AC、AI、NI、NC;认为集合 A'的后 50%与集合 N'的前 50%即 AI 和
NI 为不确定性集合,因为这一部分数据更接近异常阈值,将其划分为采样区间,而对
于采样区间外的样本即 AC 和 NC 认为是确定性样本;
A3-3:获取初始标签
依据增强孤立森林得分对采样区间外的数据进行标记,获取初始标签,总体标记方
式如下:
1 d i AC
li 0 d i NC
d i AI or d i NI
其中,di 是原始数据集 D 中的第 i 条数据,li 是 di 的初始标签。
进一步地,所述步骤 A1 中数据标准化是将不同量纲的数据统一到同一量纲范围内
的过程。其目的是消除不同变量之间的量纲影响,使得不同指标具有可比性。步骤 A1
中 Min-Max 标准化具体为:
将原始数据线性映射到[0,1]的范围内,其公式为:
x min( X )
x
max( X )
其中 min(X)和 max(X)分别是该列数据的最大值和最小值;
IF 算法具体为:IF 算法是一种无监督机器学习算法,主要用于检测数值型数据的异
常情况,通过构建一组隔离树的方法在数据中寻找孤立点,根据隔离树的路径长度计算
样本的异常分数;
ECOD 算法具体为:ECOD 算法也是一种无监督机器学习算法,首先通过计算数据
的经验累积分布函数 ECDF,以非参数方式估计数据的潜在分布,其次使用这些经验分
布来估计每个数据点的尾部概率,最后通过估计的尾部概率的聚合来计算每个数据点的
离群值,计算经验累积分布函数 ECDF 的方法为:
1 n
Fˆleft
( j)
( z ) { X i( j ) z}
n i 1
n
1
Fˆright
( j)
( z ) { X i( j ) z}
n i 1
- 4 -
说 明 书
其中,Fˆleft ( z ) 和 Fˆright
( j) ( j)
( z ) 分别为第 j 维度上的左尾 ECDF 和右尾 ECDF, 为指示函
数,当其参数为真时,该指示函数为 1,否则为 0;每个样本的离群分计算方式如下:
d
Oleft ( x) log( Fˆleft
( j)
( x ( j ) ))
j 1
d
Oright ( x ) log( Fˆright
( j)
( x ( j ) ))
j 1
d
Oauto ( x ) { j 0}log( Fˆleft
( j)
( x ( j ) ) { j 0}log( Fˆright
( j)
( x ( j ) ))
j 1
- 5 -
说 明 书
Gain Aci , Ac j H Ac j H ( Ac j | Aci )
H ( Ac j | Aci ) p vm * H ( Ac j | Aci vm )
其中, Aci 和 Ac 和分别表示两个不同的分类型字段, GainRatio 、 Gain 分别
j
- 6 -
说 明 书
Corr Aci , A
Gain Aci , Ac j
H Ac j * H Ac j
其中, Corr Aci , Ac j 表示分类型字段 Aci 与 Ac 之间的相关性; j
C3:特征处理
根据数据中各分类型字段之间的相关性分析结果,将显著相关的分类字段拼接在
一起,生成新的分类字段,并删除原始的分类字段,从而形成新的混合数据。对现有分
类字段提取特征,即利用同频异化的频率转化方法将分类型数据转换为数值型数据,使
其能够对混合数据进行识别;
C4:抽样
从数据中随机抽取一定数量的子样本;对于每棵孤立树,设置一个根结点,并将
根节点作为当前节点;
C5:属性分割
在当前节点上,随机选择若干个维度作为目标维度用于分割,并根据分割结果构
建该节点的左子树和右子树,分割策略如下:
x p * n 0
其中, x 表示由若干个目标维度组成的向量, p 表示截距向量,通过在每个目标
维度的最大与最小值间的均匀分布中取值得出, n 表示法向量,使用标准正态分布为每
个目标维度随机生成;
通过计算 x p * n 获取分割超平面,若小于 0,即位于分割超平面下方,则对应
的样本落入左子树,其余的落入右子树;
C6:构建增强孤立树
在子节点中重复执行步骤 C5,直到子节点中只有一个数据或子节点已达到设置的
树的最大深度,则停止步骤,完成孤立树的构建;
C7:构建增强孤立森林
根据上述步骤 C4 至步骤 C6,构建多颗增强孤立树,形成增强孤立森林;
C8:计算异常得分
将步骤 C3 处理后的数据集输入增强孤立森林中,对于每条数据,计算其在增强孤
立森林中的平均路径长度,计算公式为:
T
1
E h x h x t
T t 1
- 7 -
说 明 书
据点在树 t 上的路径长度;
将所有数据的平均路径长度进行归一化处理,可得出每条数据的异常评分,计算
公式为:
E h x
c n
score 2
c n 2 H n 1 2 n 1 / n
H k ln k
其中,n 表示构建树输入样本的数据量,c(n)是全局平均路径长度,用于做归一化
处理, 为欧拉常数, 0.5772156649 。
进一步地,所述步骤 S3 具体包括如下步骤:
D1:数据采样及结果获取,包括如下步骤:
D1-1:对采样区间内的数据进行采样
由于不同记录的每一列中可能包含相同的错误,在数据预处理模块中,每个数据列
都被分成若干个数据簇,并以编码表示,为了尽可能的减少需要标记的数量,理想情况
下,应保证采样的数据应覆盖每列中所有未标记的簇。因此,通过多次迭代的方式进行
采样,在每次迭代中,根据 Softmax 函数计算每条数据的采样概率:
N jc
e
pij k
dij { j , c}
N jk
e
t 1
m
pi pij
j 1
- 8 -
说 明 书
D1-3:使用用户交互模块获取标记结果
基于用户交互模块,将采样集合 S 和分类字段采样集合 Sl 传递给用户进行标注,并
解析标注结果,获取数据标签;
D2:通过交互式主动学习训练记录级分类器,包括如下步骤:
D2-1:训练初始分类模型
与传统的决策树模型相比,本发明选择的 LightGBM 模型具有的训练速度与准确性
更高,选取 LightGBM 作为分类器,结合已获取的数据标签,包括数据与配置加载模块
生成的记录集合 Lr、数据预处理模块中步骤 S2 的初始标签以及交互模块获取的数据标
签,将编码表 DC 中对应的数据作为输入,获得初次训练好的模型;
D2-2:依据预测概率选择待标记样本
使用模型对去重集合 A'和 N'进行预测,获取每个样本所属正常类及异常类的预测
概率,计算公式如下:
e scorek
P( y k | x)
escorei
i
p (k )
i 1
i
scorek
N
n (k )
pi ( k ) i
ni
其中,pi(k)表示样本在第 i 棵树中被分到叶子节点,并且该叶子节点上类别 k 的
样本概率,N 为决策树的数量,ni 是此叶子结点中点的总数量,ni(k)是叶子结点中属
于类别 k 的数量;
根据预测概率计算每个样本的不确定性概率,计算方式如下:
prop Abs( P( y 0 | x) 0.5) Abs( P( y 1| x) 0.5)
其中, P( y 0 | x) 和 P( y 1| x) 分别表示样本正常和异常的概率,Abs()代表取绝对
值操作;
将所有预测样本按不确定性概率排序,取不确定性最大的 10 条进行采样,并将其
更新到采样集合 S 中;
D2-3:标注样本
- 9 -
说 明 书
将上一步中采样获得的样本传入用户交互模块并获取标签,更新标签集合;
D2-4:更新模型
使用所有已有标签的数据训练一个新的模型;
D2-5:重复步骤 D2-2 至 D2-4,直到步骤 D2-2 的采样数量达到预先设置的值为止,
获得最终的记录级异常检测分类器 m0。
D3:字段标签传播
为了最大化的利用已知信息,减少所需标注的数量,本发明设计了基于编码结果的
字段标签传播方案,对于数值列字段,将已有标签根据聚类结果传播给同一簇的其他数
据,获得额外的带有标签的字段数据;对于分类型字段,将标签传播给同一属性值的其
他数据上;
由于一个集群可能有多个带有相互矛盾的正常或异常标签,本发明设计了两种传播
方式——同质传播与多数传播。同质传播只对不包含矛盾标签的集群进行传播,即聚类
中只包含一种标记结果,假设对于第 j 列字段包含 r 个聚类簇 C {c1 , c2 ,, cr } ,若 ci 中的
已标记的数据标签都为 1,则 ci 中的其他数据标签也被传播为 1;
多数传播会在具有混合标签的集群中传播用户标签,选择集群中数量更多的一种标
签进行传播。若 ci 中的已标记的数据标签 1 的占比更大,则 ci 中的其他数据标签也被传
播为 1,若占比相同则不传播;
依据配置文件设置选择一种传播方式,对每一列字段分别进行标签传播,得到传播
扩展后的字段级标签;
D4:训练字段级分类器
对每个数值型字段 j,筛选已有标签的数据,使用步骤 S2 中生成的特征训练一个
LightGBM 分类器 mj,得到 l 个字段级异常分类器 M {m1 , m2 ,, ml } ,l 代表数据包含
的数值型字段的列数。
进一步地,所述步骤 D2-1 中 LightGBM 是一种基于梯度提升决策树的算法模型,
可适用于分类及回归任务。其采用梯度提升方法,通过迭代的方式逐步提升模型的准确
性。LightGBM 模型的运行过程为:初始时,模型为一个简单的决策树,然后在每一轮
迭代中逐渐添加更多的决策树来纠正之前模型的预测误差;使用直方图算法来优化决策
树的训练过程,将连续特征的值进行离散化处理,将数据集划分成多个直方块;在每个
直方块中,计算该直方块内样本的梯度和样本数量,然后选择最佳划分点;梯度的计算
方式为:
dLoss( y, yˆ )
grad
dyˆ
- 10 -
说 明 书
- 11 -
说 明 书
为了提升混合型数据的检测效果,本发明在系统中对分类型字段和数值型字段分别
应用不同的特征处理方式与检测方式;为了识别数据中含有的多种异常类型,在系统中
设置了多种尺度的异常检测分类器,包括字段级分类器与记录级分类器,分别应对每个
字段内的离群异常与字段间的关联关系异常。
有益效果:本发明与现有技术相比,通过对数值型字段与分类型字段分别运用不同
预处理方式,使其能够处理混合型数据并检测异常;通过聚类与标签传播方法,能够在
少量用户标签的情况下即可训练分类器,在整体上形成半监督的检测模型,大幅减少了
人工标记的工作量,并结合主动学习进一步提高了检测的准确性。通过在方法中集成多
种组态的异常检测分类器,能够同时检测混合型数据中的多种类型异常,能发现数据集
中的潜在的异常模式,对于实际生产中的多项业务如电量核查、欺诈检测等都具有重要
意义。
附图说明
图 1 为本发明系统的设计图;
图 2 为本实施例中的部分数据图;
图 3 为本实施例中的部分配置图;
图 4 为本实施例中的特征集合展示图;
图 5 为本实施例中的编码转换表展示图;
图 6 为本实施例中增强孤立森林预评估排序结果图;
图 7 为本实施例中的标记过程图;
图 8 为本实施例中的主动学习结果变化展示图;
图 9 为本实施例中的标签传播过程展示图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本
发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各
种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图 1 所示,本发明提供本发明还提供一种面向数据治理的具有传播学习能力的异
常识别系统,包括数据与配置加载模块、算法库集成模块、数据预处理模块、用户交互
模块、模型训练模块、异常识别模块;
数据与配置加载模块用于加载配置文件和加载数据;
算法库集成模块用于存储其他模块所需的各项算法,以供随时调用;算法包括
Min-Max 标准化、IF、ECOD、HBOS、同频异化、增强孤立森林,其中同频异化和增
强孤立森林算法为本发明重点改进的算法。
- 12 -
说 明 书
数据预处理模块主要实现对数据的清洗转换、预评估等功能,以便于后续进行异常
模型训练与识别,包括生成特征集合、群体识别与编码、获取采样区间和初始标签三个
步骤;
用户交互模块用于接收系统其他模块的采样结果数据,将采样结果展示给用户并进
行标注操作,最后接收用户标记结果并保存在相应结构中;
在一次采样过程结束后,用户需要对每条记录数据分别标注字段异常和记录异常,
用户每次标注一条数据,标记形式如 {0,1,0,0,,1} ,其中最后一位为记录级异常标签,
前 d 个值代表每个字段的异常标签,d 是数据包含的总列数,0 代表正常,1 代表异常;
若传出数据为单个待标记字段值,则直接进行标记。通过解析用户输入,将记录标签和
字段标签分别保存在记录标签集合和字段标签集合中。在用户全部标注完成及解析结果
无误后,才会进入下一阶段,否则重新进入标注阶段。
模型训练模块与用户交互模块协同工作,获取采样数据及与标记结果,并训练字段
级异常分类器与记录级异常分类器;
异常识别模块基于训练好的记录级异常分类器和字段级分类器识别记录异常与字
段异常,最终输出异常数据。
异常识别模块的识别流程为:首先,对未标记的记录数据进行检测,将编码表 DC
输入训练好的记录级分类器中,识别记录级异常;其次将数值列特征输入对应列的字段
级分类器中,检测数值列字段异常;最后依据配置加载模块中生成的字段集合 Lc 及用
户的标注结果,结合标签传播可确定分类列大部分数据的异常情况,剩余数据的频率特
征均处于计算的四分位界限内,认为其属于正常类别。
基于上述系统,本发明提供一种面向数据治理的具有传播学习能力的异常识别方法,
包括如下步骤:
1、通过数据与配置加载模块执行步骤 S1
S1:进行配置文件加载,从数据源读取待检测数据,且将待检测数据区分为数值型
字段和分类型字段;
2、通过数据预处理模块执行步骤 S2
S2:对待检测数据进行预处理,获取到采样区间和初始标签;
3、通过模型训练模块与用户交互模块协同工作执行步骤 S3
S3:根据采样区间进行数据采样,结合交互标记操作,对训练字段级异常分类器与
记录级异常分类器;
4、通过异常识别模块执行步骤 S4
S4:利用训练好的字段级异常分类器和记录级异常分类器分别对待检测数据进行字
- 13 -
说 明 书
段级异常识别和记录级异常识别,输出异常数据。
步骤 S1 中配置文件加载具体为:从配置文件中获取参数设置和正常数据信息等相
关配置,参数设置包括待检测数据路径、采样数量、特征生成算法、标签传播方式等,
正常数据信息是指用户已知的该数据上的正常记录及分类型字段的正常类别值,初始化
记录集合 Lr 与字段集合 Lc,将正常数据信息保存在对应结构中,若无则为空,如
Lr {x1 , x2 , } , Lc { j1 : (c1 , c2 , ), } ,其中 xi 是一条完整的记录,c1 代表 j1 列中的类
别的值。
步骤 S1 中数据读取为:从数据源读取待检测数据 D,区分数据中数值型字段和分
类型字段的列名称,将数据、列名称保存在对应的结构里。
步骤 S2 中的预处理具体包括如下步骤:
A1:生成特征集合,包括如下步骤:
A1-1:对于数值型字段,根据特征生成算法配置参数并生成特征;采用 IF、ECOD、
HBOS 算法其中的某一种或多种生成特征,生成特征的方法是对每一列数值字段进行检
测,将该算法的异常得分作为字段的特征,共生成 m 维特征,并将特征使用 Min-Max
标准化处理,其中 m 是上述使用算法的数量;
A1-2:对于分类型字段,利用同频异化的频率转化方法为每个字段生成一维特征;
A1-3:将每个字段对应的特征保存在集合中;数据标准化是将不同量纲的数据统一
到同一量纲范围内的过程,其目的是消除不同变量之间的量纲影响,使得不同指标具有
可比性。Min-Max 标准化具体为:
将原始数据线性映射到[0,1]的范围内,其公式为:
x min( X )
x
max( X )
其中 min(X)和 max(X)分别是该列数据的最大值和最小值;
IF 算法具体为:IF 算法是一种无监督机器学习算法,主要用于检测数值型数据的异
常情况,通过构建一组隔离树的方法在数据中寻找孤立点,根据隔离树的路径长度计算
样本的异常分数;
ECOD 算法具体为:ECOD 算法也是一种无监督机器学习算法,首先通过计算数据
的经验累积分布函数 ECDF,以非参数方式估计数据的潜在分布,其次使用这些经验分
布来估计每个数据点的尾部概率,最后通过估计的尾部概率的聚合来计算每个数据点的
离群值,计算经验累积分布函数 ECDF 的方法为:
- 14 -
说 明 书
1 n
Fˆleft
( j)
( z ) { X i( j ) z}
n i 1
n
1
Fˆright
( j)
( z ) { X i( j ) z}
n i 1
其中,Fˆleft ( z ) 和 Fˆright
( j) ( j)
( z ) 分别为第 j 维度上的左尾 ECDF 和右尾 ECDF, 为指示函
数,当其参数为真时,该指示函数为 1,否则为 0;每个样本的离群分计算方式如下:
d
Oleft ( x) log( Fˆleft
( j)
( x ( j ) ))
j 1
d
Oright ( x ) log( Fˆright
( j)
( x ( j ) ))
j 1
d
Oauto ( x ) { j 0}log( Fˆleft
( j)
( x ( j ) ) { j 0}log( Fˆright
( j)
( x ( j ) ))
j 1
- 15 -
说 明 书
- 16 -
说 明 书
C1:计算分类型字段的信息增益率
信息增益用于衡量字段对分类结果影响程度,信息增益率是信息增益除以划分后
的数据集的熵,这样可以对取值数目较多的特征进行惩罚,计算方式如下:
Gain Aci , Ac j
GainRatio Aci Ac j H A
cj
Gain Aci , Ac j H Ac j H ( Ac j | Aci )
H ( Ac j | Aci ) p vm * H ( Ac j | Aci vm )
其中, Aci 和 Ac 和分别表示两个不同的分类型字段, GainRatio 、 Gain 分别
j
Corr Aci , A
Gain Aci , Ac j
H Ac j * H Ac j
其中, Corr Aci , Ac j 表示分类型字段 Aci 与 Ac 之间的相关性,值越大表明越相关; j
C3:特征处理
根据数据中各分类型字段之间的相关性分析结果,将显著相关的分类字段拼接在
一起,生成新的分类字段,并删除原始的分类字段,从而形成新的混合数据。对现有分
类字段提取特征,即利用同频异化的频率转化方法将分类型数据转换为数值型数据,使
其能够对混合数据进行识别;
C4:抽样
从数据中随机抽取一定数量的子样本;对于每棵孤立树,设置一个根结点,并将
根节点作为当前节点;
C5:属性分割
在当前节点上,随机选择若干个维度作为目标维度用于分割,并根据分割结果构
建该节点的左子树和右子树,分割策略如下:
x p * n 0
- 17 -
说 明 书
其中, x 表示由若干个目标维度组成的向量, p 表示截距向量,通过在每个目标
维度的最大与最小值间的均匀分布中取值得出, n 表示法向量,使用标准正态分布为每
个目标维度随机生成;
通过计算 x p * n 获取分割超平面,若小于 0,即位于分割超平面下方,则对应
的样本落入左子树,其余的落入右子树;
C6:构建增强孤立树
在子节点中重复执行步骤 C5,直到子节点中只有一个数据或子节点已达到设置的
树的最大深度,则停止步骤,完成孤立树的构建;
C7:构建增强孤立森林
根据上述步骤 C4 至步骤 C6,构建多颗增强孤立树,形成增强孤立森林;
C8:计算异常得分
将步骤 C3 处理后的数据集输入增强孤立森林中,对于每条数据,计算其在孤立森
林中的平均路径长度,计算公式为:
T
1
E h x h x
t
T t 1
H k ln k
其中,n 表示构建树输入样本的数据量,c(n)是全局平均路径长度,用于做归一化
处理, 为欧拉常数, 0.5772156649 。
A3-2:切分数据并确定采样区间
基于设定阈值(一般设置为 1%~5%)按照增强孤立森林得分高低对数据进行切分,
在阈值附近的群体标签最难以判别,切分后获得异常数据集合 A 和正常数据集合 N;
对集合 A 和 N 去重,获得去重集合 A'和 N',再对集合 A'和 N'分别以 50%的比例进
一步划分,记为 AC、AI、NI、NC;认为集合 A'的后 50%与集合 N'的前 50%即 AI 和
NI 为不确定性集合,因为这一部分数据更接近异常阈值,将其划分为采样区间,而对
- 18 -
说 明 书
于采样区间外的样本即 AC 和 NC 认为是确定性样本;
A3-3:获取初始标签
依据增强孤立森林得分对采样区间外的数据进行标记,获取初始标签,总体标记方
式如下:
1 d i AC
li 0 d i NC
d i AI or d i NI
其中,di 是原始数据集 D 中的第 i 条数据,li 是 di 的初始标签。
步骤 S3 具体包括如下步骤:
D1:数据采样及结果获取,包括如下步骤:
D1-1:对采样区间内的数据进行采样
由于不同记录的每一列中可能包含相同的错误,在数据预处理模块中,每个数据列
都被分成若干个数据簇,并以编码表示,为了尽可能的减少需要标记的数量,理想情况
下,应保证采样的数据应覆盖每列中所有未标记的簇。因此,通过多次迭代的方式进行
采样,在每次迭代中,根据 Softmax 函数计算每条数据的采样概率:
N jc
e
pij k
dij { j , c}
N jk
e
t 1
m
pi pij
j 1
- 19 -
说 明 书
D2:通过交互式主动学习训练记录级分类器,包括如下步骤:
D2-1:训练初始分类模型
与传统的决策树模型相比,本发明选择的 LightGBM 模型具有的训练速度与准确性
更高,选取 LightGBM 作为分类器,结合已获取的数据标签,包括数据与配置加载模块
生成的记录集合 Lr、数据预处理模块中步骤 S2 的初始标签以及交互模块获取的数据标
签,将编码表 DC 中对应的数据作为输入,获得初次训练好的模型;
LightGBM 是一种基于梯度提升决策树的算法模型,可适用于分类及回归任务。其
采用梯度提升方法,通过迭代的方式逐步提升模型的准确性。LightGBM 模型的运行过
程为:初始时,模型为一个简单的决策树,然后在每一轮迭代中逐渐添加更多的决策树
来纠正之前模型的预测误差;使用直方图算法来优化决策树的训练过程,将连续特征的
值进行离散化处理,将数据集划分成多个直方块;在每个直方块中,计算该直方块内样
本的梯度和样本数量,然后选择最佳划分点;梯度的计算方式为:
dLoss( y, yˆ )
grad
dyˆ
其中 Loss ( y, yˆ ) 是损失函数,y 是真实值, ŷ 是模型预测值。
D2-2:依据预测概率选择待标记样本
使用模型对去重集合 A’和 N’进行预测,获取每个样本所属正常类及异常类的预
测概率,计算公式如下:
e scorek
P( y k | x)
escorei
i
p (k )
i 1
i
scorek
N
n (k )
pi ( k ) i
ni
其中,pi(k)表示样本在第 i 棵树中被分到叶子节点,并且该叶子节点上类别 k 的
样本概率,N 为决策树的数量,ni 是此叶子结点中点的总数量,ni(k)是叶子结点中属
于类别 k 的数量;
根据预测概率计算每个样本的不确定性概率,计算方式如下:
prop Abs( P( y 0 | x) 0.5) Abs( P( y 1| x) 0.5)
- 20 -
说 明 书
其中, P( y 0 | x) 和 P( y 1| x) 分别表示样本正常和异常的概率,Abs()代表取绝对
值操作;
将所有预测样本按不确定性概率排序,取不确定性最大的 10 条进行采样,并将其
更新到采样集合 S 中;
D2-3:标注样本
将上一步中采样获得的样本传入用户交互模块并获取标签,更新标签集合;
D2-4:更新模型
使用所有已有标签的数据训练一个新的模型;
D2-5:重复步骤 D2-2 至 D2-4,直到步骤 D2-2 的采样数量达到预先设置的值为止,
获得最终的记录级异常检测分类器 m0。
D3:字段标签传播
为了最大化的利用已知信息,减少所需标注的数量,本发明设计了基于编码结果的
字段标签传播方案,对于数值列字段,将已有标签根据聚类结果传播给同一簇的其他数
据,获得额外的带有标签的字段数据;对于分类型字段,将标签传播给同一属性值的其
他数据上;
由于一个集群可能有多个带有相互矛盾的正常或异常标签,本发明设计了两种传播
方式——同质传播与多数传播。同质传播只对不包含矛盾标签的集群进行传播,即聚类
中只包含一种标记结果,假设对于第 j 列字段包含 r 个聚类簇 C {c1 , c2 ,, cr } ,若 ci 中的
已标记的数据标签都为 1,则 ci 中的其他数据标签也被传播为 1;
多数传播会在具有混合标签的集群中传播用户标签,选择集群中数量更多的一种标
签进行传播。若 ci 中的已标记的数据标签 1 的占比更大,则 ci 中的其他数据标签也被传
播为 1,若占比相同则不传播;
依据配置文件设置选择一种传播方式,对每一列字段分别进行标签传播,得到传播
扩展后的字段级标签;
D4:训练字段级分类器
对每个数值型字段 j,筛选已有标签的数据,使用步骤 S2 中生成的特征训练一个
LightGBM 分类器 mj,得到 l 个字段级异常分类器 M {m1 , m2 ,, ml } ,l 代表数据包含
的数值型字段的列数。
基于上述方案,为了验证本发明方案的有效性和实际效果,进行了实验验证,具体
如下:
实验 1:
本实施例中待检测数据中的一部分如图 2 所示,实验所用的部分配置如图 3 所示。
- 21 -
说 明 书
在实验的过程中:
获得的特征集合和编码转换表分别如图 4 和图 5 所示,其中特征集合由数值字段特
征和分类字段特征构成,数据共包含 4 个数值型字段和 12 个分类型字段,每个数值型
字段生成 3 维特征,每个分类型字段生成一维特征。编码表中的分类字段由频率特征大
小生成,如“农网低压居民”的编码为“1”,
“城网低压居民”的编码为“0”,代表“城
网低压居民”类别的数量最多;数值字段编码由特征聚类结果转换,如运行容量字段值
为“3”的编码为“0”,代表其聚类结果属于第 0 个簇。
图 6 为数据预处理模块中评分及排序后的结果,“score”列是增强孤立森林对每一
条记录给出的异常得分,得分区间为 0-1,依据“score”列排序后,异常概率最大的排
在前面,正常概率最大的排在最后,按异常比例切分数据集可获得采样区间。
图 7 是用户交互模块的接收的记录采样结果及用户标记过程,如图 7 所示,在日志
输出中可以看到模型训练模块中的分批次的采样数据序号,一共 40 个点被选择出来并
交给用户标记。序号为 176 的数据首先被抛出标记并展示其具体信息,用户需要对该记
录中的每一个字段进行标注,随后再对整条记录的异常情况进行标注,用户标记为 1,
代表该记录异常。
图 8 是模型训练模块中的记录级异常分类模型训练过程,图 8 中体现了主动学习的
具体过程,在每一次学习过程中,包含采样数据、反馈标记,更新模型等子步骤。通过
多次迭代的方式,逐步提升了记录级模型的检测效果。
图 9 是模型训练模块中步骤 D3 的字段标签传播过程,采用同质传播策略,在第 14
列中,有部分类已经存在一定数量的标记,如第 1 类标签为 1 的数量为 12、0 的数量为
4,第 2 类 1 标签为 1 的数量为 0、0 的数量为 83,使用同质传播,则第一类不进行传播,
第 2 类的标签传播为 0。所有列的标签经过传播后从 1600 个变为了约 60 万个。
最终检测识别的部分结果如表 1 所示:
表 1 部分检测结果表
编 用户分类 用电类别 城乡类 接线方 相线 … 运行容 合同容 综合倍 评分 labe
号 别 式 量 量 率 l
1 城网低压 城镇居民 城区 三相 三相 … 10 10 160 0.7485 1
非居民 生活用电
0 0 0 1 1 … 0 0 1
2 农网居民 乡村居民 农村 单项 单相 … 3 3 1 0.6863 1
生活用电
1 0 0 0 0 … 0 0 0
3 农网低压 农业生产 特殊边 三相四 三相四 … 6 6 1 0.6272 0
非居民 用电 远地区 线 线
- 22 -
说 明 书
0 0 0 0 0 … 0 0 0
4 农网低压 商业用电 特殊边 单相 三项四 … 6 6 1 0.6912 1
非居民 远地区 线
0 0 0 0 0 … 0 0 0
5 城网低压 城镇居民 城区 单相 单相 … 5 5 1 0.3441 0
居民 生活用电
0 0 0 0 0 … 0 0 0
6 城网低压 乡村居民 农村 单相 单相 … 3 3 1 0.5038 1
居民 生活用电
0 0 0 0 0 … 0 0 0
7 农网低压 商业用电 农村 三相四 三相四 … 10 10 120 0.5446 0
非居民 线 线
0 0 0 0 0 … 0 0 1
在表 1 中,“评分”列数据是使用增强孤立森林获得的初始得分,label 列是记录级
分类器的预测结果,在每一条数据结果中,第一行是数据展示及其对应的标签,第二行
是每个字段的检测结果,其中 1 是异常,0 是正常。
对于数据 1,其接线方式与相线字段都为“三相”,违反了图 3 中的配置设置,实际
应为“三相四线”,因此被判定为异常;综合倍率字段的值为“160”,在数据中整体偏
高,也被判定为异常;记录级异常标签为 1,是由于用户分类字段与用电类别字段不匹
配,其对应值分别为“城网低压非居民”和“城镇居民生活用电”,实际的用电类别值
应是“商业用电”或其他非居民户用电类型。对于数据 2,其用户分类字段不符合配置,
被判定为异常,并且用户分类字段与用电类别字段也无法匹配,该条记录也为异常。对
于数据 4,其各个字段均为正常,但是接线方式与相线字段之间存在模式异常,“单相”
对应“三相四线”不符,因此该记录被检测异常。
数据预处理模块中步骤 A3-1 生成的初始评分能够在一定程度上反应数据的异常情
况,如数据 1、数据 2 和数据 4 的评分都处于较高水平,代表异常的概率更大,最终的
识别结果也都为异常数据。然而初始评分是无监督算法,可能出现一定偏差,通过模型
训练模块中的半监督处理过程,对初始评分结果进行修正,可以获得更加准确的异常标
签,如数据 3 和数据 6。
实验 2:
表 1 记录级检测效果对比
初始评分 无主动学习的分类 有主动学习的分类
- 23 -
说 明 书
本实施例中通过初始评分、采样标记、主动学习等步骤训练记录级的异常检测分类
器,表 1 对比了去除某些步骤的实验结果,其中初始评分的实验结果是依据评分进行排
名,取前 1%的数据标记为异常;无主动学习的分类是在初始后进行标记采样,然后直
接训练分类器。从表 1 中可以看出,仅根据初始评分的效果最差,F1 值仅有 0.62,在
加入标记采样过程训练分类器后,F1 值提升了 0.1,再通过主动学习多次更新模型后,
F1 值提升了 0.12,达到了 0.84,说明了采用标记的方法结合了无监督方法与有监督方
法的优点,提升了检测的准确性,并且通过主动学习进一步纠正了结果。
表 2 字段级检测效果对比
无标签传播 有标签传播
Precision 0.73 0.95
F1 0.80 0.87
表 2 是字段级检测分类器的效果对比,无标签传播是基于采样标记结果直接训练字
段级分类器。可以看出,无标签传播的召回率较高,但是精度较低,说明检出许多假异
常数据,有标签传播的结果 F1 值更高,总体更加稳定,说明通过传播扩展标签数据量,
使分类器更加稳健。
依据表 1 和表 2,可见本发明在系统中集成多种类型的异常检测分类器,同时识别
混合型数据中含有的多种异常类型,能够有效应对不同的异常类型。
- 24 -