2011-11-01 97 views
1

我想使用朴素贝叶斯分类器用于预测设备(例如网卡)的工作负载。我有一系列代表请求到达时间的观察结果。该系列数据表示为0,1,1,1,0,0,1,...,其中1表示到达时间间隔,其大于断裂偶数时间和0表示间隔到达时间时间短于破解偶数时间。我想预测下一次到达间隔时间为(短于休息时间或更长)。因此,我有两类,即短和长。我已经经历了朴素贝叶斯分类器的理论,但我对在MATLAB或C++中实现它感到困惑。我不知道我应该开始学习过程多少个特征/数据,以及如何计算预测课程的最大可能性。任何在这方面的帮助将不胜感激。工作负载预测的朴素贝叶斯分类器

+0

你有多少数据?为什么不先尝试[Weka](http://www.cs.waikato.ac.nz/ml/weka/)(不需要编程,只需提供一个数据文件即可尝试不同的算法)? – Kiril

+0

假设我有一千个到达时间(如上所述)。由于我只有一个特征(到达时间间隔)和两个类别,即短期和长期,我这样做如下:首先我从训练样本中找出两个类别的先验概率。然后我找到每个类分配的输入特征的条件概率。现在,如果我应用贝叶斯法则来计算两个类别的最大后验概率,它是否会给出下一个到达间隔期间两个类别(短期和长期)的概率? – user846400

回答

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(下一个是1)

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

只是为了说明这种做法是怎么反对The New York Times计算机有效地发挥剪刀,石头,布,然后点击“看什么电脑正在思考“看到马尔科夫模型的实际应用。