OPTICS算法是从DBSCAN算法演化而来的基于层次密度的聚类算法,它可以解决DBSCAN算法中的参数敏感问题和不能很好处理数据中带有非均匀密度簇的问题,且OPTICS对参数不是十分敏感
由于OPTICS算法基于DBSCAN算法,所以以下定义是共用的,这里不再给出具体描述(详见:【数据聚类】第四章第一节1:基于密度算法概述、DBSCAN算法相关概念、定义和算法流程)
在OPTICS算法中需要额外引入以下两个定义
c
o
r
e
_
d
i
s
t
a
n
c
e
(
x
p
)
=
{
未
定
义
(
如
果
x
p
不
是
核
心
对
象
)
使
得
x
p
为
核
心
对
象
的
最
小
半
径
(
其
他
)
core\_distance(x_p{})=
r
e
a
c
h
a
b
i
l
i
t
y
_
d
i
s
t
a
n
c
e
(
x
q
,
x
p
)
=
{
未
定
义
(
如
果
x
p
不
是
核
心
对
象
)
m
a
x
(
c
o
r
e
_
d
i
s
t
a
n
c
e
(
x
p
)
,
d
i
s
t
a
n
c
e
(
x
p
,
x
q
)
)
)
(
其
他
)
reachability\_distance(x_q{},x_p{})=
如下图,MinPts设置为5

基于上述定义,OPTICS算法在执行过程中可以生成一个以可达距离为纵轴,以数据点输出次序为横轴的坐标图,从中可以清晰观察到各个数据点基于密度的聚簇结构
如下图所示,可以通过寻找每个陡峭下降区域和陡峭上升区域所构成的凹陷来发现各个簇的对应结果
×形簇对应右图第一个陡峭下降区域和陡峭上升区域所构成的凹陷处
OTTICS算法和DBSCAN算法一样,仍然需要用户输入Eps和MinPts,但是它们仅仅起到辅助作用,其变化并不会对最终结果造成大的影响。算法流程如下
如下,OPTICS算法首先会进行初始化,然后进入主循环,在循环过程中
order中,清空当前的种子序列seeds,确定
x
p
x_{p}
xp的
ξ
\xi
ξ邻域
Update函数是OPTICS中用来更新种子序列和各个数据点可达距离的函数,对于任意一个未访问数据点 x j ∈ N ξ ( x i ) x_{j} \in N_{\xi}(x_{i}) xj∈Nξ(xi),首先计算 x j x_{j} xj到 x i x_{i} xi的可达距离
