% b3 r2 y8 Y( |$ V 网格中常用的参数: E: C, \% C1 c2 J2 C! G& D. p
- ]. S6 Z# B+ o+ s9 ]* F7 t
(1) count 网格中对象数目 7 i7 F7 o5 F, Z . ]0 {, b7 N/ Z& i- o (2) mean网格中所有值的平均值' J* b) N7 U4 Q3 r2 s+ j! w* M
1 U5 \8 g. n5 T4 C1 z7 P
(3) stdev网格中属性值的标准偏差 ' [: e% ]" `" u) a9 Y# X 6 z: e- a* F, }' e9 d# ^ (4) min 网格中属性值的最小值 ( `6 C, j- T$ e6 r( m( ^4 T# b, V' w5 {& J% J
(5) max 网格中属性值的最大值 ( g; o# w, C/ R$ i) z+ P/ c2 J% C+ R3 I4 {1 k7 l. G
(6) distribution 网格中属性值符合的分布类型。如正态分布,均匀分布 1 l( |$ P( j3 D3 J6 e Q( I1 }3 a5 z# z7 s: a' v STING聚类的层次结构:, D" p- B% }- }1 W/ v
- r2 j* j# c) i% M1 X4 ^3 q+ {0 E 通过上面两幅图,我们可以清晰的理解,STING的层次结构,上一层与下一层的关系。 ]: w4 H) A: Z& l9 S4 m. H
! O% z4 t& g% x* e
注意:当数据加载到数据库时。最底层的单元参数直接由数据计算,若分布类型知道,可以用户直接指定。而较高层的单元的分布类型可以基于它对应的低层单元多数的分布类型,用一个阈值过滤过程的合取来计算,若底层分布类型彼此不同,那么高层分布类型为none. `% T& A t& v
9 e( a7 p' M) c" Y- S
STING查询算法步骤:+ X7 S2 ]; D* H: k
2 F) N9 q+ L% M, p1 z (1) 从一个层次开始+ h: g. F8 Y/ Z0 N; P
" {, @: j: x& j, r+ Y Q
(2) 对于这一个层次的每个单元格,我们计算查询相关的属性值。 ! v0 L: d9 ]1 e; z. ], K6 [' q; L" O1 L7 i: _+ m0 t H' g
(3) 从计算的属性值以及约束条件下,我们将每一个单元格标记成相关或者不想关。(不相关的单元格不再考虑,下一个较低层的处理就只检查剩余的相关单元) / t& W! @; y% Y& W! H$ t7 \; \& h2 i5 ?# C( Q
(4) 如果这一层是底层,那么转(6),否则转(5) 0 ]; R) r b% b1 H1 ?" K& A& x: ^9 U2 b4 S
(5) 我们由层次结构转到下一层,依照步骤2进行 : o5 s& w$ a7 J2 f# g ( V. P5 I/ k+ [/ l# L/ } (6) 查询结果得到满足,转到步骤8,否则(7) , h* a) O7 T4 p5 l5 f/ g) q% c# z0 _+ k5 O& Y8 Q
(7) 恢复数据到相关的单元格进一步处理以得到满意的结果,转到步骤(8)8 M/ b) A0 @, ^& c
# W6 G9 g7 o% \! j: w (8) 停止 ) y* I' X M" K6 q0 c1 q/ M9 ?4 f, ]; ?0 K2 b1 D$ x1 N
到这儿,STING算法应该基本就差不多了,其核心思想就是:根据属性的相关统计信息进行划分网格,而且网格是分层次的,下一层是上一层的继续划分。在一个网格内的数据点即为一个簇。% C @5 H1 R3 l) A) I