离群点检测概述
离群点是观察的数据集中明显异常的数据点,或者说,离群点的数据分布与数据集的整体分布不同。离群点检测的目的是检测出那些与正常数据差别较大的数据点,然后根据具体的问题作进一步处理。针对故障诊断问题,该方法可识别偏离正常状态的对象。
说明:
1)离群点不同于噪声,非噪声点也可能离群,噪声应该在离群点检测前完成去除。2)离群点检测算法的评价指标同二分类,可使用正确率(Accuracy)、查准率(Precision)、查全率(Recall)、F值(F1-scores)等指标进行评估,或者用ROC图。
以上转自https://blog.csdn.net/Albert201605/article/details/118341478
LOF算法原理
局部离群因子LOF是用于表征被检测点的离群程度,即LOF越大,离群越明显。
假设点集X,
∀
p
∈
X
\forall p\in X
∀p∈X,点p的LOF记为
L
O
F
m
(
p
)
=
1
∣
N
m
(
p
)
∣
∑
o
ε
N
m
(
p
)
l
r
d
m
(
o
)
l
r
d
m
(
p
)
LOF_{m}\left( p\right)=\dfrac{1}{\left| N_{m}\left( p\right) \right| }\sum _{o{\varepsilon }N_{m}\left( p\right) }\dfrac{lrd_m(o)}{lrd_m(p)}
LOFm(p)=∣Nm(p)∣1oεNm(p)∑lrdm(p)lrdm(o)
其中,
N
m
(
p
)
N_m(p)
Nm(p)是点p的m个最近邻所组成的点集(注:当距离升序第m个点和m+1,m+2,…相等时,
N
m
(
p
)
N_m(p)
Nm(p)将包含这些点,即该邻域点集中点个数
∣
N
m
(
p
)
∣
≥
m
|N_m(p)|\geq m
∣Nm(p)∣≥m)。
l
r
d
m
(
p
)
lrd_m(p)
lrdm(p)是p点的局部可达密度(local reachable density):
l
r
d
m
(
p
)
=
1
/
(
∑
o
ε
N
m
(
p
)
r
d
m
(
p
,
o
)
∣
N
m
(
p
)
∣
)
lrd_m(p)=1/(\dfrac{\sum _{o{\varepsilon }N_{m}\left( p\right) }rd_m(p,o)}{|N_m(p)|})
lrdm(p)=1/(∣Nm(p)∣∑oεNm(p)rdm(p,o))
r
d
m
(
p
,
o
)
rd_m(p,o)
rdm(p,o)为p点相对于o点的可达距离:
r
d
m
(
p
,
o
)
=
m
a
x
{
d
m
(
o
)
,
d
(
p
,
o
)
}
rd_m(p,o)=max\{d_m(o),d(p,o)\}
rdm(p,o)=max{dm(o),d(p,o)}
其中,
d
m
(
o
)
d_m(o)
dm(o)是o点的m-距离,即o点和其第m个最近邻的距离,
d
(
p
,
o
)
d(p,o)
d(p,o)是p点和o点的距离。此处,对距离的定义通常采用欧式距离。
下图,以m=5为例,点p的邻域包含6个点。因为第5最近邻和第6最近邻点距离相等。
下图表述
p
p
p点相对于
o
1
o_1
o1和
o
2
o_2
o2的可达距离。
p
p
p到
o
1
o_1
o1的距离大于
o
1
o_1
o1的第5-距离,
r
d
5
(
p
,
o
1
)
=
d
(
p
,
o
1
)
rd_5(p,o_1)=d(p,o_1)
rd5(p,o1)=d(p,o1)。同理,
r
d
5
(
p
,
o
2
)
=
d
5
(
o
2
)
rd_5(p,o_2)=d_5(o_2)
rd5(p,o2)=d5(o2)。
LOF算法流程
节选自论文Chen Z, Xu K, Wei J, et al. Voltage fault detection for lithium-ion battery pack using local outlier factor[J]. Measurement, 2019, 146: 544-556.
编号对应前面公式。