天将雄师 雅典攻防战怎么排将

雅典帝国是如何建成的最新章节|雅典帝国是如何建成的全集|博看小说网
读者空间: 用户名:
雅典帝国是如何建成的最新全集
雅典帝国是如何建成的全集之作品相关
雅典帝国是如何建成的全集之崩溃的提洛同盟
雅典帝国是如何建成的全集之攸克幸海陆风云
雅典帝国是如何建成的全集之两个雅典共7页 到第页
你尚未登录或可能已退出账号:(请先或者您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
中国男篮与世界强队攻守能力的比较分析及对策研究.pdf54页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:220 &&
你可能关注的文档:
··········
山东师范大学
硕士学位论文
中国男篮与世界强队攻守能力的比较分析及对策研究
姓名:孙宝聪
申请学位级别:硕士
专业:体育教育训练学
指导教师:王嵊海
座机电话号码
出东薄葱走学磺士掌整论文
篮球运动自1891年起源予荚国,现已经成为世界人民喜爱的运动项目之一,
随麓簇球运动在馓界范围内的不断普及和发展,世界篮球运动水平得到了很大的
鬟凝,篮球琵赛麓翔精彩激熬。2l整纪,涎蕾篮球稳全球纯发展,鬣赛各国篮球
运动之间加强了交流,促进了世界篮球运动水平的提高,世界各国的簇球运动水
平邂濒接近,很多魄赛不到最厩一刻胜负缀滚预料,一球定胜负的场颟越来越多,
使簸球比赛更其餐悬念帮憨力。
新中国成立以后,中国篮球运动得到了快速的发展,经过几代人的努力取得
了长足豹进步,取褥了优异的成绩,形成了“快、准、灵”的技术特杰。20世纪
如馨代戳螽,隧黉我国篮球运霸员身高的不断增加,潇现了一批优秀豹高大队员,
如姚明、王治郅、巴特尔等,我国篮球实现了队伍的高大化发展,队伍的高大化
逐濒与世爨接轶。隧着中国男簸身高的不颧增燕,中国男篮兹进攻纛点逐濒出强
线转移到内线,缎是中国男盛随着身高静增加逐渐丢掉了自己原有的“快、准、
灵”的特点,在世界大赛中取得的成绩始终在前8名以外徘徊,甚至处于后退的
尴热壤器。通过擞赛大赛,特别是第14瘸擞赛锦蠡赛秘篱28属奥运会让我
正在加载中,请稍后...虽然是理工妹子,但仍是数学渣。症状之一就是每次学习算法都能把自己绕成鸡窝头。所以尝试写一篇数学渣眼中的HMM。我们先看一个让人头疼的HMM定义式(喜欢从公式下手是我多年来应付考试养成的不良习性)一、HMM五元素N:隐藏状态数 hidden statesM:观测状态数 observed statesA: 状态转移矩阵 transition matrixB:发射矩阵
emission matrixpi:初始隐状态向量 initial state vector好了,接下来我们用数学渣可以理解的语言来解释上面都是些什么鬼女主:小红
用食物丈量心情
心情状态有三种: 开心、正常、崩溃
上面三种状态的时候吃的食物也有三种:汉堡、西瓜、啤酒男主:小明 面部表情识别障碍因此对男主而言,隐藏状态:女主的心情状态观测状态:女主吃的食物隐藏状态数 :N=3观测状态数:
M=3初始隐状态向量pi:对照下表看:女主处于各种心情状态的概率,例如女主51%的概率是正常的,36%的概率是开心的,13%的概率是崩溃的 开心 正常 崩溃 0.36 0.51 0.13状态转移矩阵A:上一个隐状态到下一个隐状态的转化概率矩阵对照下表看:在女主上一个状态是开心的条件下,则此刻状态是开心的概率为36.5%,正常的概率为50%,崩溃的概率为13.5%
开心 0.365 0.500 0.135
正常 0.250 0.125 0.625 崩溃 0.365 0.265 0.370 发射矩阵B:隐状态对应的观测状态的概率对照下表看:在女主是开心的状态下,她吃汉堡的概率是10%,西瓜的概率是20%,啤酒的概率是70% 汉堡 西瓜 啤酒 开心 0.1 0.2 0.7 正常 0.5 0.25 0.25 崩溃 0.8 0.1 0.1 一个HMM模型就由上面描述的隐藏状态数N,观测状态数M,初始隐状态向量pi,状态转移矩阵A,混淆矩阵B五个要素组成。我们知道了什么是HMM,接下来看HMM是干嘛的,用mahout的HMM库来示例HMM解决哪三类问题,仍然用小红和小明的场景二、HMM解决的三类问题-mahout示例现在男主小明开始做任务了,我们用现成的工具mahout来示例安装指南(仅介绍local版)wget http://archive.apache.org/dist/mahout/0.9/mahout-distribution-0.9.tar.gz cd mahout-distribution-0.9/ vim bin/mahout修改MAHOUT_JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64 (修改为你自己的java所在地址) MAHOUT_LOCAL=true任务一:学习(本例中根据女主吃的食物序列,推断一个合适的HMM模型)输入:观测状态序列——女主吃的食物序列,我们用数字表示对应的食物与心情
2: 正常输出:生成一个合适的HMM模型算法:BaumWelchecho &0 1 2 2 2 1 1 0 0 2 1 2 1 1 1 1 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 0 2 1 2 0 2 1 2 1 1 0 0 0 1 0 1 0 2 1 2 1 2 1 2 1 1 0 0 2 2 0 2 1 1 0& & hmm-input 输入观测序列后,开始生成HMM模型bin/mahout baumwelch -i hmm-input(观测序列文件) -o hmm-model(hmm模型文件) -nh 3(隐状态数) -no 3(观测状态数) -e .0001 -m 10我们看结果Initial probabilities: 初始隐状态向量pi0 1 20..8Transition matrix:状态转移矩阵A:0 1 20 0.9 0.002921 0.8 0.245452 0.28 0.53694Emission matrix: 发射矩阵0 1 20 0.8 0.81681 0.2 0.86862 0.34 0.4969任务二:预测(根据上一个任务生成的HMM模型来预测女主后续会吃的东西)输入:HMM模型输出:预测后续的观测状态,或者计算给定规则状态序列的概率(这个我们在下一个场景中描述)算法: ForwardBackwardbin/mahout hmmpredict -m hmm-model(hmm模型文件) -o hmm-predictions (预测结果文件)-l 10(预测多少个后续观测状态)我们看结果more hmm-predictions 2 2 0 0 1 2 1 2 2 1预测女主后续会吃的东西依次为:啤酒,啤酒,汉堡,汉堡,西瓜,啤酒,西瓜,啤酒,啤酒、西瓜任务三:编码(根据女主吃的东西,判断女主当前的心情,这个也是男主最关心的任务,女孩的心思你别猜。。。)输入:HMM模型,观测状态序列输出:观测状态序列对应的隐藏状态序列算法:viterbi输入观测状态序列,本例中女主吃的食物echo &2 2 0 0 1 2 1 2 2 1& & hmm-viterbi-input判断观测状态序列对应的隐状态序列bin/mahout viterbi -i hmm-viterbi-input -o hmm-viterbi-output -m hmm-model -l我们看结果more hmm-viterbi-output 2 1 2 0 0 1 2 0 1 2可以看到女主吃的东西 :啤酒,啤酒,汉堡,汉堡,西瓜,啤酒,西瓜,啤酒,啤酒、西瓜对应的心情:正常,开心,正常,崩溃,崩溃,开心,正常,崩溃,开心,正常三、安全上的应用—— jahmm示例现在我们知道了什么是HMM以及HMM能做什么,最关键的时刻到了,现实场景的应用。我们先提出:需要解决的问题——HTTP异常请求的检测(弥补基于签名检测的不足)解决方案猜想——HTTP请求内容实际是一系列字符串,而正常字符串出现的概率远大于异常字符串。我们可以靠概率来划分正常请求与异常请求。有了这个前提,再结合HMM的学习功能与预测功能,学习功能能根据观测序列(HTTP请求内容)生成最适合的HMM模型,而预测功能能在HMM模型下能计算指定观测序列(HTTP请求内容)的概率 。我们得出下面这个解决方案——两个阶段解决问题:阶段一:训练; 使用正常日志生成HMM模型,并设置正常请求的概率范围阶段二:检测; 使用待检测的请求来计算该请求在上一步所生成的HMM模型中的概率,不在正常请求概率范围内的则判定为异常请求。原理:我们可以根据概率分布来区分正常与异常请求的原理是正常请求远远多于异常请求;正常请求是相似的,异常请求各异接下来是代码实现,我们先了解一下jahmm——java实现的hmm算法库。我们从命令行使用来了解其功能,接受能力强的,可以直接看第3部分——实现 HTTP协议异常检测的关键部分jahmm 命令行(1) 安装指南/p/jahmm/ git clone /tanjiti/jahmm (不能翻墙的)我们从命令行熟悉这款工具(2) 选项说明java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli -help -opdf [integer|gaussian|gaussian_mixture|multi_gaussian]
指定观测序列的分布特征
Determines the observation distribution type associated with the
states of the HMM.-r &range& 如果观测序列为整数,指定范围
The 'range' option is mandatory when using
distributions d &range& is a number such
that the distribution is related to numbers in the range
0, 1, ..., range-1.-ng &number& 如果观测序列的分布为多个高斯分布,指定高斯分布的个数
This option is mandatory when using gaussian mixture
distribution.
determines the number of gaussians. -d &dimension& 如果观测序列的分布为多维度向量的高斯分布,指定向量纬度
This option is mandatory when using multi-variate gaussian
distributions. It determines the dimension of the observation
vectors.-n &nb_states& 指定隐状态数
The number of states of the HMM. -i &input_file& 指定输入
An HMM input file.
Default is standard input. -o &output_file& 指定输出
An HMM output file.
Default is standard output. -os &output_file&
指定输出序列文件
A sequences output file.
Default is standard output. -is &input_file&
指定输入序列文件
A sequences input file. -ikl &input_file& 指定使用 Kullback-Leibler 算法计算HMM距离的另一个HMM模型
An HMM input file with respect to which a Kullback-Leibler distance can
be computed.-ni &nb& 指定BaumWelch算法迭代次数
The number of iterations performed by the Baum-Welch algorithm.
Default is 10.All input (resp. output) file names can be replaced by '-' to mean usingstandard input (resp. output).1)生成hmm模型java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli create -opdf integer -r 3 -n 3 -o initial.hmm 生成一个 隐藏状态数N=3 观测状态数M= 3
-opdf 参数:观测序列的类型
-opdf integer -r 10 观测状态序列为0,1,2,...,9表示
-opdf gaussian_mixture -ng 3 观测状态序列的分布为3个高斯分布
multi_gaussian -d 3 观测状态序列的元素为3*3矩阵2)打印这个hmm模型java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli print -i initial.hmm也可以直接打开文本看HMM with 3 state(s) State 0Pi: 0.333Aij: 0.333 0.333 0.333Opdf: Integer distribution --- 0.333 0.333 0.333 State 1Pi: 0.333Aij: 0.333 0.333 0.333Opdf: Integer distribution --- 0.333 0.333 0.333 State 2Pi: 0.333Aij: 0.333 0.333 0.333Opdf: Integer distribution --- 0.333 0.333 0.3333)使用k-means算法生成HMM模型输入:观测状态序列输出:HMM模型vim testInteger.seq 编辑 0; 1; 2; 2; 2; 1; 1; 0; 0; 2; 1; 2; 1; 1; 1; 1; 2; 2; 2; 0; 0; 0; 0; 0; 0; 2; 2; 2; 0; 0; 0; 0; 0; 0; 1; 1; 1; 1; 2; 2; 2; 2; 2; 0; 2; 1; 2; 0; 2; 1; 2; 1; 1; 0; 0; 0; 1; 0; 1; 0; 2; 1; 2; 1; 2; 1; 2; 1; 1; 0; 0; 2; 2; 0; 2; 1; 1; 0;使用k-means算法生成HMM模型, 隐状态数为3,观测状态数为3java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli learn-kmeans -opdf integer -r 3 -n 3 -is testInteger.seq -o test.hmm查看模型java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli print -i test.hmm HMM with 3 state(s) State 0Pi: 1.0Aij: 0.56 0.16 0.28Opdf: Integer distribution --- 1 0 0 State 1Pi: 0.0Aij: 0.24 0.4 0.36Opdf: Integer distribution --- 0 1 0 State 2Pi: 0.0Aij: 0.185 0.407 0.407Opdf: Integer distribution --- 0 0 14)使用BaumWelch算法生成HMM模型输入:观测状态序列输出:HMM模型使用BaumWelch算法生成HMM模型,隐状态数为3,观测状态数为3,算法迭代次数为10java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli learn-bw -opdf integer -r 3 -is testInteger.seq -ni 10 -i initial.hmm -o test_bw.hmm查看模型java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli print -i test_bw.hmm HMM with 3 state(s) State 0Pi: 0.333Aij: 0.333 0.333 0.333Opdf: Integer distribution --- 0.333 0.321 0.346 State 1Pi: 0.333Aij: 0.333 0.333 0.333Opdf: Integer distribution --- 0.333 0.321 0.346 State 2Pi: 0.333Aij: 0.333 0.333 0.333Opdf: Integer distribution --- 0.333 0.321 0.3465)按指定的HMM模型生成观测序列输入:HMM模型输出:观测序列java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli generate -opdf integer -r 3 -i test.hmm -os kmeans.seq6)计算两个HMM模型之间的距离 java -cp jahmm-0.6.1.jar be.ac.ulg.montefiore.run.jahmm.apps.cli.Cli distance-kl -opdf integer -r 3 -i test_bw.hmm -ikl initial.hmm 结果为8.134E-4(3) 文件格式说明1.jahmm定义了两种文件格式a. 观测序列文件obser1; obser2; obser3;观测序列之间用分号+空格隔开多个观测序列用换行符号隔开b. HMM模型文件Hmm v1.0 NbStates 3 StatePi 0.333A 0.333 0.333 0.333IntegerOPDF [0.76 0.8464 ] StatePi 0.333A 0.333 0.333 0.333IntegerOPDF [0.76 0.8464 ] StatePi 0.333A 0.333 0.333 0.333IntegerOPDF [0.76 0.8464 ]2. jahmm java 接口在使用命令行熟悉了jahmm的功能后,我们先熟悉一下我们会用到的jahmm 关键类(1)HMM类(最重要的类)属性初始变量pi
double pi[];隐状态转移矩阵A double a[][];发射矩阵B
ArrayList&Opdf&O&&构造函数
Hmm(int nbStates, OpdfFactory&? extends Opdf&O&& opdfFactory) 初始向量,状态转移函数,发射矩阵 皆取平均值Hmm(double[] pi, double[][] a, List&? extends Opdf&O&& opdfs) 用指定初始向量,状态转移函数,发射矩阵生成HMM对象Hmm(int nbStates) 初始向量,状态转移函数,发射矩阵 皆取空getter初始向量矩阵:double getPi(int stateNb)发散矩阵:Opdf&O& getOpdf(int stateNb)状态转移矩阵:double getAij(int i, int j)setter初始向量矩阵:setPi(int stateNb, double value)发散矩阵:setOpdf(int stateNb, Opdf&O& opdf)状态转移矩阵:setAij(int i, int j, double value)方法获得隐状态数:int nbStates()获得指定观测状态序列对应的最有可能的隐状态序列,使用viterbi算法 int[]mostLikelyStateSequence(List&? extends O& oseq)获得指定观测状态序列的概率,使用ForwardBackward算法
doubleprobability(List&? extends O& oseq)获得指定观测状态序列的概率(用自然对数来表示),使用ForwardBackward算法 double lnProbability(List&? extends O& oseq)获得指定观测状态序列的P[oseq,sseq|H]概率 double probability(List&?extends O& oseq, int[] sseq)获得HMM文本描述 toString()
获得HMM文本描述String toString(NumberFormat nf)(2)learn 训练算法类BaumWelchLearnersetter设置迭代次数 setNbIterations(int nb) 默认为9次getter获得迭代次数
getNbIterations()方法训练
learn(Hmm&O& initialHmm, List&? extends List&? extends O&&sequences)BaumWelchScaledLearned (继承BaumWelchLearner,避免underflows)(3)HMM代码示例接下来的代码用来示例生成HMM模型,完成HMM解决的三个问题,以及HMM模型可视化package helloHMM;import java.util.ArrayLimport java.io.IOEimport be.ac.ulg.montefiore.run.jahmm.Himport be.ac.ulg.montefiore.run.jahmm.ObservationIimport be.ac.ulg.montefiore.run.jahmm.OpdfIntegerFimport be.ac.ulg.montefiore.run.jahmm.OpdfIimport be.ac.ulg.montefiore.run.jahmm.learn.BaumWelchScaledLimport be.ac.ulg.montefiore.run.jahmm.draw.GenericHmmDrawerD public class test { public static void main(String[] args){///////////////////////////generate origin HMM model 生成初始的HMM模型,以小红与小明为例子/////////////////////////int nbHiddenStates = 3;int nbObservedStates = 3; Hmm&ObservationInteger& originHmm =new Hmm&ObservationInteger&(nbHiddenStates,new OpdfIntegerFactory(nbObservedStates)); //set initial state vector -Pi
originHmm.setPi(0, 0.36); originHmm.setPi(1, 0.51); originHmm.setPi(2, 0.31); //set transition matrix - Aij
originHmm.setAij(0, 0, 0.365); originHmm.setAij(0, 1, 0.500); originHmm.setAij(0, 2, 0.135); originHmm.setAij(1, 0, 0.250); originHmm.setAij(1, 1, 0.125); originHmm.setAij(1, 2, 0.625); originHmm.setAij(2, 0, 0.365); originHmm.setAij(2, 1, 0.265); originHmm.setAij(2, 2, 0.370); //set emission matrix - Opdf originHmm.setOpdf(0, new OpdfInteger(new double[] {0.1, 0.2, 0.7} )); originHmm.setOpdf(1, new OpdfInteger(new double[] {0.5, 0.25, 0.25})); originHmm.setOpdf(2, new OpdfInteger(new double[] {0.8, 0.1, 0.1})); String originHmmStr = originHmm.toString();System.out.print(&Origin HMM *************** \n&);System.out.print(originHmmStr); ///////////////////////////////////////////task One: learn use BaumWelch Algorithm 学习,生成合适的HMM模型/////////////////////////////////////////ArrayList&ArrayList&ObservationInteger&& observSequence =new ArrayList&ArrayList&ObservationInteger&&(); int [] array = {0,1,2,2,2,1,1,0,0,2,1,2,1,1,1,1,2,2,2,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,0,2,1,2,0,2,1,2,1,1,0,0,0,1,0,1,0,2,1,2,1,2,1,2,1,1,0,0,2,2,0,2,1,1,0}; ArrayList&ObservationInteger& OneSequence = new ArrayList&ObservationInteger&();for(int i = 0; i & array. i++)OneSequence.add(new ObservationInteger(array[i]));
observSequence.add(OneSequence); BaumWelchScaledLearner bw = new BaumWelchScaledLearner(); bw.setNbIterations(10);Hmm&ObservationInteger& learnedHmm_bw = bw.learn(originHmm, observSequence);String learnedHmmStr_bw = learnedHmm_bw.toString();System.out.print(&\nTask 1:Learned HMM use BaumWelch *************** \n&);System.out.print(learnedHmmStr_bw); //////////////////////////////////////////////task two: get the sequence the probability 评估,获得指定观测序列的概率////////////////////////////////////////////int [] array_seq = {1, 2, 0, 0, 0, 0, 1, 2, 0};ArrayList&ObservationInteger& Sequence_to = new ArrayList&ObservationInteger&();for(int i = 0; i & array_seq. i++)Sequence_to.add(new ObservationInteger(array_seq[i])); //HMM's Probability use ForwardBackward Algorithmdouble seq_prob = learnedHmm_bw.probability(Sequence_to);System.out.printf(&\nTask 2: %s 's probability is %f \n&, Sequence_to.toString(), seq_prob); //////////////////////////////////////////////task three: get the hidden states sequence of the observer states sequence解码,获得指定观测序列对应的最有可能的隐藏序列 ////////////////////////////// int [] array_seq_2 = {2, 2, 0, 0, 1, 2, 1, 2, 2, 1};ArrayList&ObservationInteger& Sequence_three = new ArrayList&ObservationInteger&();for(int i = 0; i & array_seq_2. i++)Sequence_three.add(new ObservationInteger(array_seq_2[i])); //use the Viterbi Algorithmint [] hidden_states_seq = learnedHmm_bw.mostLikelyStateSequence(Sequence_three); ArrayList&ObservationInteger& Sequence_hidden = new ArrayList&ObservationInteger&();for(int i=0; i&hidden_states_seq. i++)Sequence_hidden.add(new ObservationInteger(hidden_states_seq[i])); System.out.printf(&\nTask 3: observer hidden states sequence %s 's hidden states sequence is %s \n&,Sequence_three.toString(),Sequence_hidden.toString()); ////////////////////////////////////////////////////HmmDrawerDot Hmm模型可视化////////////////////////////////////////////////////you can install graphviz and use GVEdit to view the HMM modelGenericHmmDrawerDot hmmDrawer = new GenericHmmDrawerDot(); try{ hmmDrawer.write(originHmm, &hmm-origin.dot&);}catch(IOException e){System.err.print(&Writing file triggered an exception: & + e);} } }注意:jahmm BaumWelch的观测状态序列必须超过1个,否则就会抛出Observation sequence too short异常3. 实现 HTTP协议异常检测的关键部分整个过程由三部分组成(1)日志解析输入: 正常的访问日志(可以混有少量攻击日志)可以按以下条件来去重筛选响应码 2xx, 3xx动态页面参数名符合规范: 字符,数字,数组,排除参数名注入输出:参数名值对 (对url重写需要另行考虑)(2)参数值泛化处理输入:参数值输出:观测序列转换规则:序列 符号 参数值类型 0 U若字符串为URI格式,标记为U 1 N若字符为非ASCII码,标记为N,字符包括\x00-\x07以外2 W若字符为word类型,标记为W,字符包括数字\x30-\x39、字母\x41-\x5A \x61-\x7A、下划线\x5F
,一共63个字符3 S若字符为空格类型,标记为S,字符包括\x00NUL \x09\t \x0A\n \x0B\v \x0C\f \x0D\r \x20space ,一共7个字符 4 V 若字符为控制字符类型,标记为V,字符包括\x01-\x08、\x0E-\x1F、\x7F,一共27个字符 5 保留字符 ! ” # $ % & ‘ ( ) * + , – . / : ;& = & ? @ [ \ ] ^ ` { | } ~,一共31个字符(3) 训练阶段指定隐状态数hidden与观测状态数初始化一个HMM对象Hmm&ObservationInteger& hmm = new Hmm&ObservationInteger&(hidden,new OpdfIntegerFactory (observed));使用上一步生成的观测序列,调用BaumWelch算法进行学习,生成合适的HMM的对象BaumWelchScaledLearner bw = new BaumWelchScaledLearner();bw.setNbIterations(20000);Hmm&ObservationInteger& learnedHmm_bw = bw.learn(originHmm,observSequence);获得每个观测序列的概率,指定合法值的概率的范围或阈值double seq_i_prob = learnedHmm_bw.probability(Sequence_i);我们可以将训练结果以key:value对的方式存储在数据库中,例如redis。key为 /path?paramNamevalue为 val对应的HMM训练对象learnedHmm_bw、观测状态序列、概率阈值的序列化值(4)检测阶段将待检测日志,通过上面介绍的日志解析与参数值泛化处理生成观测序列,然后计算出该观测序列在第二步学习的HMM对象中的概率值double seq_to_prob = learnedHmm_bw.probability(Sequence_to);判断概率是否在合法范围内最简单的方法是将阈值设置为所有观测序列中的最小值,我们还可以按概率的统计分布特征(中位数,算术平均,方差)来选取范围当然这些都需要根据实际情况进行参数调优好了,关键步骤讲完了。在实际应用中,特别是日志量过大的情况下,我们需要做很多异常和优化处理,例如(1)异常处理测状态数不能超过36,否则抛出异常学习时间花费不能超过XXX,否则抛出异常(2)观测状态序列及序列集合的优化训练阶段:观测序列数量过大的情况下,会影响训练时间与结果,所以需要做reduce处理,例如观测序列包含的字符相同,则忽略顺序认为是同一个序列检测阶段:待检测观测序列的取样处理,例如相同观测状态的合并(3)隐状态数的选择最简单的是选取所有观测状态序列中去重后的观测状态数的平均值4. 大数据处理当日志量很大的情况下,我们需要引入数据的并行处理。于是hadoop上场了,我们将日志存储在HFDS里,采用Hadoop提供的MapReduce计算机制,来完成日志异常训练与检测,调用示例如下hadoop jar HMM_Abnormal.jar HmmAbnormal.train /data/in/ /data/out/model/hadoop jar HMM_Abnormal.jar HmmAbnormal.check /data/in/ /data/out/model/ /data/out/result/5. 总结HMM异常检测同朴素贝叶斯分类器也是白名单(异常)的思路,在第一学习阶段通过对正常的请求的学习,得出正常请求的模式,在第二检测阶段将不符合正常模式则判定为异常。实时的HMM可以用于WAF或IPS系统实时检测,离线的HMM可以用于WAF或IPS误报漏报运维。我们知道白名单(异常)最大的优点是弥补黑名单签名知识库更新滞后的漏报情况,但其在模型训练数据污染严重(攻击日志大量混入到学习日志中)、模型训练不充分和模型训练不到(有些有漏洞的攻击请求不会出现在正常请求中)的情况下会丧失这一优点。因此需要其他模型来弥补缺陷,使用数据分析来解决问题,就是要多个模型(算法)综合使用,这是个有挑战的路线,与君共勉。参考/hmm-learn-best-practices-one-introductionHMM-Web: a framework for the detection off attacks against Web Application【via@碳基体】(文章较长,但是能在风趣中学到高大上的知识哟,小编强烈建议戳原文链接,细细品味~)91RI我的安全攻防指南(sex_91ri) 
 文章为作者独立观点,不代表微头条立场
的最新文章
lxml是Python中与XML及HTML相关功能中最丰富和最容易使用的库。lxml并不是Python自带 查找恶意样本中的特定字符串是很有用的,比如你有可能寻找到那些针对不同目标的却具有相似代码的恶意样本。本文会 注:本文出发点系分享一个好玩的题目,为避免一些不愉快的事情发生,91ri对文章略做修改,希望看文的朋友不要本PPT来源91ri团队的内部分享,从现在起,我们将不定时发布内部分享的一些内容。但可能会有所删减,希望p WEB应用模糊测试(WEB Fuzz)是一种特殊形式的网络协议模糊测试,专门关注遵循HTTP规范的网络数据每天解锁「新姿势」! httpscan是一个扫描指定网段的Web主机的小工具。和端口扫描器不一样,httpscan是以爬虫的方式「超级英雄」的规则是什么?每天解锁新姿势:深入解析DLL劫持漏洞前段自动化测试探索,探索各类姿势!概念随机数是专门的随机试验的结果Before The Passage渗透过程毫无亮点,求不喷。没有牛逼的技巧本PPT来源91ri团队的内部分享,从现在起,我们将不定时发布内部分享的一些内容。但可能会有所删减,希望p 小贴士:SSL协议的定义SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安 一:吾爱破解论坛【破解专用虚拟机】的由来当你破解软件导致被格盘的时候,当你破解软件导致全盘感染病毒的时候, 通过任意文件下载找到了mysql的备份,表类型是独享式innodb,由一个frm文件和一个ibd文件组成。说明: 1. 本文提到的浏览器均是指Chrome。 2. “script标签“指的都是普通的不带其他属性的 目录一,背景概述二,web via app审计三,将来的工作一,背景概述1.1 第三方应用综述现在的互联网 一 “已知”or “未知”已知的已知,已知的未知,未知的未知,这个最近安全行业也谈的比较多,目前圈内热炒的 一、WEBSHELL是什么?意味着什么?不同人的视角里,Webshell是什么?程序员:一个可以执行的we0x00前言国内公开的PHP自动化审计技术资料较少,相比之下,国外已经出现了比较优秀的自动化审计实现,比如测试环境
Defaultwindows7 普通域成员
windows2008 域控123windo一切情报战手段的的初衷和根本在于加强国防。本文讨论了将计算机网络刺探(CNE)数据纳入反恐(Counter 近期,微软发布了一系列补丁,修复了自身产品中一些影响广泛以及关键的Bug,其中包括更新了微软Office套件摘要:日到12月1日期间,连续两次在全球范围发生针对DNS域名系统根服务器的大规模DDo这篇文章和暗网那篇一样特殊 所以你们懂的点击【阅读原文】刚上大学没多久,就遇到件头疼事。富二代们刚来就带着笔记本电脑,这让咱们只能玩手机的屌丝辈们羡慕嫉妒恨。要命的本文我们将复制一项技术,我们曾用它来追踪一个叫做Hammertoss的复杂俄罗斯恶意软件,该恶意软件的创造者0x00 基本原理逻辑回归算法,从名字上看似乎是个回归问题,但实际上逻辑回归是个典型的分类算法。 对于分类问0x00 代价函数多变量的回归问题中,feature有多个,比如房屋价格预测问题,feature除了房屋的面今天我们的威胁情报系统显示知名的web漏洞扫描器AWVS 10被爆出一个本地权限提升漏洞,漏洞详情及POC:0x00 前言这篇算是神经网络学习的一篇实现总结,神经网络算法无疑是最好的实现人类“人工智能”的算法,与安全0x00 研究范围在WEB渗透中可能使用某个关键字为密码核心的密码(Mail,Vpn,后台登陆等)0x01一份设计文档的结构大概可以分成Background项目背景、Schedule排期、History版本历史记录网上有dz 7.x和dz x系列的uc_key 利用方式,今天遇到了一个dz6.0的网站,于是分析了下代码,0x00 前言看了subTee的在ShmooCon2015的PPT,学习到了很多关于应用白名单绕过的技巧,今0x01 漏洞概述微软于今年发布一个编号CVE-的Office漏洞,微美国是 Internet 的缔造者。也理所当然地成为了这片广袤领域的“掘金者”;然而,当时光的指针推送大家来Webkitdirectory早在 12 年 Alan Layt 便写了这篇关于 HTML5 中上传文件夹新目标: http://www.xxx.xx.xx首先手工挖掘漏洞和信息.找到后台地址然而访问不了目测被限制IvBulletin 是一个商用的论坛程序套件,在全球拥有数万用户且增长速度很快。该论坛采用PHP Web语言什么是恶意代码,指令集?是二进制可执行指令?还是脚本语言?字处理宏语言?其他指令集等等……以常见的类型举例,最近几年,运营商行业安全服务中渗透测试中常见的漏洞包括弱口令、注入漏洞、跨站漏洞、Struts2命令执行漏洞这篇文章总结了一些我在安全工作里见到过的千奇百怪的C&C控制服务器的设计方法以及对应的侦测方法,在每个C&C1 从Django的SECTET_KEY到代码执行Django是一个可以用于快速搭建高性能,优雅的网站的平台如果你稍微写过一点代码,就能知道“集成开发环境”(IDE)是多么的便利。不管是Java、C还是Python,初始测试1、使用无害的payload,类似,,观察响应,判断应用程序是否被HTML编码,是起因环境因素影响,我他么路由器映射端口 msf就是反弹不回来session,在跟大牛交流后,大牛说服务器装个常规的,从web业务撕开口子url:getshell很简单,phpcms的,一个Php实体解码
Default&/script&&script&alert(1)最近百度X-Team捕获到一个利用SSH弱口令漏洞构建僵尸网络的蠕虫,该蠕虫具有自动扫描、自动传播、并依托公sex_91ri91RI我的安全攻防指南热门文章最新文章sex_91ri91RI我的安全攻防指南

我要回帖

更多关于 雅典奥运会女排 的文章

 

随机推荐