Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于马尔可夫链的异常检测_Python_Matrix_Compare_Markov - Fatal编程技术网

Python 基于马尔可夫链的异常检测

Python 基于马尔可夫链的异常检测,python,matrix,compare,markov,Python,Matrix,Compare,Markov,我试图用马尔可夫链来检测异常。我有一个带有一系列事件的训练数据集,我用它来创建一个概率转移矩阵。然后,我使用测试数据集创建另一个矩阵。我正在寻找一种方法,将它们与矩阵进行比较,以便发现异常。示例:假设事件A到事件C在训练数据中发生0次,因此其在矩阵中的概率为0。如果在测试数据集中确实发生了从事件A到事件C的转换,则其概率将大于0。这是我想发现的 我试着减去2个矩阵,然后报告大于0的所有结果,但这并不重要:训练中的概率为0,测试中的概率为0.1比训练中的概率为0.7,测试中的概率为0.6更相关(而

我试图用马尔可夫链来检测异常。我有一个带有一系列事件的训练数据集,我用它来创建一个概率转移矩阵。然后,我使用测试数据集创建另一个矩阵。我正在寻找一种方法,将它们与矩阵进行比较,以便发现异常。示例:假设事件A到事件C在训练数据中发生0次,因此其在矩阵中的概率为0。如果在测试数据集中确实发生了从事件A到事件C的转换,则其概率将大于0。这是我想发现的

我试着减去2个矩阵,然后报告大于0的所有结果,但这并不重要:训练中的概率为0,测试中的概率为0.1比训练中的概率为0.7,测试中的概率为0.6更相关(而且更反常)。仅仅删减它们并不能以这种方式表现出来。此外,通过这种方式,它可以看到0.5对0.7的差异比0.0对0.1的差异更反常


此外,训练中的0.3和测试中的0.6的概率比训练中的0.7和测试中的1更重要(因为可能测试集中没有发生其他事件,这很好)。顺便说一下,我使用pandas交叉表和级数来计算转移矩阵

你见过狄里克莱分布吗?如果我理解这个问题,那可能是个好地方。我不知道你的意思。Dirichlet报告两个概率矩阵之间的差异,还是代替Markov?对不起,这一点都不清楚!这听起来像是将事件计数转换为转移概率。问题是,如果你只有“几个”事件,那么这些估计值会有很大的差异。Dirichlet分布是处理这种不确定性的一种很好的方法,例如,如果你只处于一种状态一次,那么你就不会非常确定传出的跃迁,而如果你已经处于这种状态一百万次,你就有很好的机会说跃迁是否异常