基于CART的AIOPS智能化告警分析系统

2 篇文章 0 订阅
1 篇文章 0 订阅
目的

生成一颗决策树,输入X(各种特征条件)输出Y(该样本分类结果)。

如何分类?

那么要按照哪种特征分类呢?

  • CART树根据基尼指数选择特征。
  • 基尼指数可以通过如下公式计算:
    G i n i ( p ) = ∑ i = 1 K p i ( 1 − p i ) = 1 − ∑ i = 1 K p i 2 Gini(p)=\sum_{i=1}^Kp_i(1-p_i)=1-\sum_{i=1}^K{p_i}^2 Gini(p)=i=1Kpi(1pi)=1i=1Kpi2
  • 在选择节点属性时,计算每一种属性分类后的基尼指数 G i n i Gini Gini,选择 G i n i Gini Gini最小的那种属性作为该节点的分类依据。
选取数据:
alert_msg0.0.2.0.0.0.0.20.0.2.0.0.0.0.10.0.2.0.0.0.00.0.7.0.0.0.0.20.0.7.0.0.0.0.10.0.7.0.0.0.0result
Slow_queries770863854530141951965
Slow_queries204235210111801775
Slow_queries1901951852339718115
Slow_queries1391211571717145
Slow_queries1851971911617185
Threads_connected14216315310101009101025
Threads_connected186196189101009100925
Threads_connected212194186161165729
Slow_queries1861921121165710185
时序数据图编码结果:
alert_msg0.0.2.0.0.0.0(soket_timewait)0.0.7.0.0.0.0(soket_estab)result
Slow_queriesccbaaa5
Slow_queriesaaaaaa5
Slow_queriesaaaacc5
Slow_queriesaaaaaa5
Slow_queriesaaaaaa5
Threads_connectedaaaccc25
Threads_connectedaaaacc25
Threads_connectedaaaaab29
Slow_queriesaaaabd5

result类别比例:5:25:29 = 6:2:1(分别表示慢sql引发1:dbproxy未释放引发:慢sql引发2)

第一个节点分类有如下情况:
1.按照alert_msg==Threads_connected?
ture
false
alert_msg==Threads_connected?
5:25:29 = 0:2:1
5:25:29 = 6:0:0

G t u r e = 1 − ( 2 3 ) 2 − ( 1 3 ) 2 = 0.444 G_{ture}=1-(\frac{2}{3}){^2} - (\frac{1}{3}){^2} = 0.444 Gture=1(32)2(31)2=0.444
G f a l s e = 0 G_{false}=0 Gfalse=0
G 1 = 3 9 ∗ G t u r e + 6 9 ∗ G f a l s e = 0.148 G_1 = \frac{3}{9}*G_{ture}+ \frac{6}{9}*G_{false}= 0.148 G1=93Gture+96Gfalse=0.148
(左右两边的加权值)

2.按照soket_timewait==ccb?
ture
false
soket_timewait==ccb?
5:25:29 = 1:0:0
5:25:29 = 5:2:1

G t u r e = 0 G_{ture}=0 Gture=0
G f a l s e = 1 − ( 5 8 ) 2 − ( 2 8 ) 2 − ( 1 8 ) 2 = 0.531 G_{false}=1-(\frac{5}{8}){^2} - (\frac{2}{8}){^2} - (\frac{1}{8}){^2} = 0.531 Gfalse=1(85)2(82)2(81)2=0.531
G 2 = 1 9 ∗ G t u r e + 8 9 ∗ G f a l s e = 0.472 G_2 = \frac{1}{9}*G_{ture}+ \frac{8}{9}*G_{false}= 0.472 G2=91Gture+98Gfalse=0.472
(左右两边的加权值)

3.按照soket_estab==aaa?
ture
false
soket_estab==aaa?
5:25:29 = 4:0:0
5:25:29 = 2:2:1

G t u r e = 0 G_{ture}=0 Gture=0
G f a l s e = 1 − ( 2 5 ) 2 − ( 2 5 ) 2 − ( 1 5 ) 2 = 0.640 G_{false}=1-(\frac{2}{5}){^2} - (\frac{2}{5}){^2} - (\frac{1}{5}){^2} = 0.640 Gfalse=1(52)2(52)2(51)2=0.640
G 3 = 4 9 ∗ G t u r e + 5 9 ∗ G f a l s e = 0.356 G_3 = \frac{4}{9}*G_{ture}+ \frac{5}{9}*G_{false}= 0.356 G3=94Gture+95Gfalse=0.356
(左右两边的加权值)

4.按照soket_estab==acc?
ture
false
soket_estab==acc?
5:25:29 = 1:1:0
5:25:29 = 5:1:1

G t u r e = 1 − ( 1 2 ) 2 − ( 1 2 ) 2 = 0.5 G_{ture}=1-(\frac{1}{2}){^2}-(\frac{1}{2}){^2}=0.5 Gture=1(21)2(21)2=0.5
G f a l s e = 1 − ( 5 7 ) 2 − ( 1 7 ) 2 − ( 1 7 ) 2 = 0.449 G_{false}=1-(\frac{5}{7}){^2} - (\frac{1}{7}){^2} - (\frac{1}{7}){^2} = 0.449 Gfalse=1(75)2(71)2(71)2=0.449
G 4 = 2 9 ∗ G t u r e + 7 9 ∗ G f a l s e = 0.349 G_4 = \frac{2}{9}*G_{ture}+ \frac{7}{9}*G_{false}= 0.349 G4=92Gture+97Gfalse=0.349
(左右两边的加权值)

5.按照soket_estab==ccc,aab,abd

计算机会都计算,但由于ture分支都是一个样本,划分性不好,这里就不赘述了。

6.选择基尼指数最小的分类

所以这个节点选择 G 1 = 0.148 G_1 = 0.148 G1=0.148
即按照alert_msg==Threads_connected?分类

ture
false
alert_msg==Threads_connected?
5:25:29 = 0:2:1
5:25:29 = 6:0:0

false分支不需要分类了,现在对true分支分类,样本如下:

alert_msg0.0.2.0.0.0.0(soket_timewait)0.0.7.0.0.0.0(soket_estab)result
Threads_connectedaaaccc25
Threads_connectedaaaacc25
Threads_connectedaaaaab29
第二个节点分类

计算机会重复上面步骤,这里不再赘述,从表格可以看出
选择soket_estab==aab?
可以直接分类完成

ture
false
true
false
alert_msg==Threads_connected?
soket_estab==aab?
5:25:29 = 6:0:0
5:25:29 = 0:0:1
5:25:29 = 0:2:0

以上,对样本分类完成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值