用于工作量预测的朴素贝叶斯分类器

时间:2011-11-01 14:09:23

标签: machine-learning classification

我想使用朴素贝叶斯分类器来预测设备(例如网卡)的工作量。我有一系列的观察结果代表了请求的到达间隔时间。该系列数据表示为0,1,1,1,0,0,1,...其中1表示到达时间,该时间长于收支平衡时间和0表示比收支平衡时间更短的到达间隔时间。我想预测下一次到达间隔时间 (短于收支平衡时间或更长时间)。因此,我有两个类,即短和长。我已经完成了朴素贝叶斯分类器的理论,但我对在MATLAB或C ++中实现它有困惑。我不知道应该从多少特征/数据开始学习过程,以及如何计算预测类的最大可能性。在这方面的任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

您可以从Markov Model开始。在马尔可夫模型中,您假设每个状态的概率仅由先前的状态给出。例如,在像000111100111这样的系列中,您会发生以下转换事件:

           Xn=0   Xn=1
X(n-1)=0     3     2
X(n-1)=1     1     5

写在概率:

           Xn=0   Xn=1
X(n-1)=0    0.6    0.4
X(n-1)=1    0.17   0.83

您可以将其用作功能:扫描所有训练系列并记录从0-> 0,0-> 1,1-> 0和1-> 1的过渡频率。对于分类,您可以查看查询字符串的最后一个状态,并在转换矩阵中查找下一个状态为0或1的概率。并在此基础上选择更有可能的州。

即使认为这种方法很简单,但通常效果很好。

使用前一个数字后,您可以开始查看前两个数字并将其用作另一个数字。因此,示例的转换矩阵可能如下所示:

                     Xn=0   Xn=1
X(n-2)=0, X(n-1)=0     1     2
X(n-2)=0, X(n-1)=1     0     2
X(n-2)=1, X(n-1)=0     1     0
X(n-2)=1, X(n-1)=1     1     3

你甚至可以将它扩展到最后三位数字,依此类推。

要将这些要素组合在一起,您只需将下一个状态为0的所有概率与所有要素相乘:

p(next is 0)=p1(next is 0)*p2(next is 0)*p3(next is 0)*...*pn(next is 0)

并且您可以类似地计算下一个状态为1的概率:

p(next is 1)=p1(next is 1)*p2(next is 1)*p3(next is 1)*...*pn(next is 1)

并选择更可能的状态。当然,您不必将p(next is 1)计算为

p(next is 0)+p(next is 1)=1

只是为了说明这种方法是如何有效的,在The New York Times对着计算机玩Rock-Paper-Scissors,然后点击“看看计算机在想什么”,看看马尔可夫模型的运作情况。