[toc]
随机森林
决策树
马尔可夫
隐马尔可夫(HMM)
三骰子问题
- 假设我手里有三个不同的骰子:
- 第一个骰子是我们平常见的骰子(称这个骰子为D6),6个面,每个面(1,2,3,4,5,6)出现的概率是1/6
- 第二个骰子是个四面体(称这个骰子为D4),每个面(1,2,3,4)出现的概率是1/4
- 第三个骰子有八个面(称这个骰子为D8),每个面(1,2,3,4,5,6,7,8)出现的概率是1/8
- 开始掷骰子10次,点数为 1 6 3 5 2 7 3 5 2 4,这串数字叫做==可见状态链==
- 其中隐含状态链就是你用的骰子的序列,比如,隐含状态链有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8,一般来说,HMM中说到的马尔可夫链其实是指==隐含状态链==
- ==转换概率==(transition probability):隐含状态直接的转换概率,如D6的下一个状态是D4,D6,D8的概率都是1/3,也可以定义,D6后面不能接D4,D6后面是D6的概率是0.9,是D8的概率是0.1
- ==输出概率==(emission probability):隐含状态和可见状态之间有一个概率,如六面骰(D6)产生1的输出概率是1/6,产生2,3,4,5,6的概率也都是1/6
五要素和三个基本问题
五要素
综上所述,我们可以得到隐马尔科夫的基本要素,即一个五元组{S,N,A,B,PI};
1 | S:隐藏状态集合; |
三个基本问题
- 似然度问题:参数(N,PI,A,B)已知的情况下,求(PI,A,B)下观测序列N出现的概率。(Forward-backward算法)
- 解码问题:参数(N,PI,A,B)已知的情况下,求解状态值序列S(最大概率)。(viterbi算法)
- 学习问题:参数(N)已知的情况下,求解(PI,A,B)。(Baum-Welch算法)
应用场景
学习问题
参数异常检测(以白找黑)
- 场景分析下面为正常用户请求
1
2
3
4
5
6/0_1/include/dialog/select_media.php?userid=admin123
/0_1/include/dialog/select_media.php?userid=root
/0_1/include/dialog/select_media.php?userid=maidou0806
/0_1/include/dialog/select_media.php?userid=52maidou
/0_1/include/dialog/select_media.php?userid=wjq_2014
/0_1/include/dialog/select_media.php?userid=mzc-cxy - 下面为异常用户请求
1
/0_1/include/dialog/select_media.php?userid=%3Cscript%3Ealert(1)%3C/script%3E
- 以userid为例,我们将uid的值作为观察序列N,隐藏序列的状态只有四个, A、
N、 C、 T:
1 | ·[a-zA-Z]范化为A; |
URL参数admin 123和root范化结果为:
1
2·admin123范化为AAAAANNN
·root范化为AAAA将url中以userid的参数值进行范化训练模型
1 | #-*- coding:utf-8 –*- |
用户访问习惯(以白找黑)
- 场景分析,下面为用户正常请求顺序
1 | /api/login.php |
- 下面为异常用户请求顺序
1 | /api/redpacket |