本文共 4987 字,大约阅读时间需要 16 分钟。
模式挖掘中设计的几个研究较多的点,构建结构如下图所示:
机器学习中的规则(rule)通常是指语义明确、能描述数据分布所隐含的客观规律或领域概念、可写成若(…)则(…)形式的逻辑规则。规则学习(Rule Learning)是从训练数据中学习出一组能用于对未见示例进行判别的规则。
显然,规则集合中的每条规则都可看作一个子模型,规则集合是这些子模型的一个集成。当同一个示例被判别结果不同的多条规则覆盖时,称发生了冲突(conflict),解决冲突的办法称为冲突消解(conflict resolution)。常用的冲突消解策略有投票法、排序法、元规则法等。投票法是将判别相同的规则数最多的结果作为最终结果。排序法是在规则结合上定义一个顺序,在发生冲突时使用排序最前的规则;相应的规则学习过程称为带序规则(ordered rule)学习或优先级规则(priority rule)学习。元规则法是根据领域知识事先设定一些元规则(meta-rule),即关于规则的规则,例如发生冲突时使用长度最小的规则,然后根据元规则的指导来使用规则集。
从语言形式来讲,规则可以分成如下形式:
命题规则(Propositional Rule)
一阶规则(First-Order Rule)
规则学习的目标是产生一个能覆盖尽可能多的样例的规则集。最直接的做法是序贯覆盖(sequential covering),即逐条归纳:在训练集上每学到一条规则,就将该规则覆盖的训练样例去除,然后以剩下的训练样例组成训练集重复上述过程。由于每次只处理一部分数据,因此也称为分治(separate-and-conquer)策略。
基本算法流程:
两种序列覆盖法策略
自顶向下
自低向上
集束搜索(Beam Search)
似然率统计量LRS(Likelihood ratio statistics)
$$ LRS = 2 * ( \hat{m}_{+} * log_{2}( \frac{\frac{\hat{m}_{+}}{\hat{m}_{+} + \hat{m}_{-}}}{\frac{m_{+}}{m_{+} + m_{-}}} ) + \hat{m}_{-} * log_{2}(\frac{\frac{\hat{m}_{-}}{\hat{m}_{+} + \hat{m}_{-}}}{\frac{m_{-}}{m_{+} + m_{-}}})) $$
衡量了规则覆盖样本比例的分布与训练样本集中经验分布的差异:
后剪枝策略REP(Reduced Error Pruning)
命题逻辑表达,很难处理对象之间的关系,而关系信息在很多任务中有很重要的位置,因此有比较介绍用一阶规则进行关系学习。
一阶规则学习能容易的引入领域知识,这是它相对于命题规则学习的另一大优势。在命题规则学习乃至一般的统计学习中,想要引入领域知识,通常需要两种做法:
$$ F_{Gain} = \hat{m}_{+} * ( log_{2}\frac{\hat{m}_{+}}{\hat{m}_{+} + \hat{m}_{-}} - log_{2}\frac{m_{-}}{ m_{+} + m_{-}}) $$
在关联分析中,频繁项集的挖掘最常用的方法是Apriori算法,该算法是一种先产生候选项集,之后在数据集中检验是否存在是频繁的模式,当数据集很大时,需要不断扫描数据集造成运行效率过低。而FP-Growth算法较好的解决了这个问题。它的思路是把数据集中的事物映射到一棵FP-Tree上,这过程中,只需要扫描两次数据集。
具体的算法原理和构建流程,已经有经典文章,在此引用先大佬的文章
问题描述
解决方法
通过指定的筛选条件,可以得到样本数据
问题解决
正负样本采样问题
连续型数值变量离散化
连续型变量离散化编码
$$ e_{i} = - \sum_{j=1}^{K} p_{ij} log_{2}(p_{ij}) $$
$$ e = \sum_{i=1}^{n}w_{i} e_{i} $$
# time range: 2018-09-29 11:40:00~2018-09-29 11:55:00* | select __time__, avg(Latency) as avgLatency from log GROUP BY __time__ order by __time__ limit 1000
设计针对延迟指标的分割阈值,分析Latency > 10ms的关键因素
* and Latency > 10000 | select COUNT(*)
* and not Latency > 10000 | select COUNT(*) as "Latency<=10ms"
针对上述结果编写SQL Query语句进行分析
1. 实际样本集合中的正负比例posSample / negSample: 6891 / 4927624 = 0.0013984427382. 设定的目标采样比例posSample : negSample = 1: 103. 设置正样本全部采样posSampleRate = 1.04. 估算负样本的采样率negSampleRate = 0.001398442738 * 10 = 0.01398442738 ~ 0.014
* | select pattern_diff(array[ Category, ClientIP, ProjectName, LogStore, Method, Source, UserAgent ], array[ 'Category', 'ClientIP', 'ProjectName', 'LogStore', 'Method', 'Source', 'UserAgent' ], array[ InFlow, OutFlow ], array[ 'InFlow', 'OutFlow' ], Latency > 10000, 0.1, 1.0, 0.014) limit 1000
分析结果部分如下
各字段说明
阿里云日志服务针对日志提供了完整的解决方案,以下相关功能是日志进阶的必备良药:
更多日志进阶内容可以参考:。
纠错或者帮助文档以及最佳实践贡献,请联系:悟冥
问题咨询请加钉钉群:转载地址:http://tejbx.baihongyu.com/