我正在尝试预测传入网络数据包的到达时间。我测量网络数据包的到达时间,并以二进制特征的形式表示此数据:xi = 0,1,1,1,0,...如果到达时间小于a,则xi = 0收支平衡时间,否则为1。数据必须映射为两个可能的类C = {0,1},其中C = 0表示较短的到达间隔时间,而1表示较长的到达间隔时间。由于我想在在线要素中实现分类器,因此只要观察到特征向量xi = 0,1,1,0 ...的向量,就可以计算MAP类。由于我没有条件和先验概率的先验估计,因此我将其初始化如下:

p(x=0|c=0)=p(x=1|c=0)=p(x=0|c=1)=p(x=1|c=1)=0.5
p(c=0)=p(c=1)=0.5


对于每个特征向量(x1 = m1,x2 = m2,...,xn = mn),当我输出类C时,将更新条件概率和先验概率,如下所示:

p(xi=mi|y=c)=a+(1-a)*p(p(xi=mi|c)
p(y=c)=b+(1-b)*p(y=c)


问题是,我总是有偏见。由于较长的到达间隔时间比较短的间隔短,因此较短的后验始终保持高于较长的间隔。有什么办法可以改善这一点?还是我做错了什么?任何帮助将不胜感激。

最佳答案

由于您的时间序列很长,因此最好的方法可能是考虑多个单个值。执行此操作的标准方法是使用时间窗口,即将长向量Xi拆分为恒定长度的重叠片段,最后一个值作为类,然后将它们用作训练集。这也可以通过在线方式通过在新数据到达时用新数据增量更新NB模型来完成。

请注意,使用这种方法,其他回归算法可能最终比NB更好。

Weka(版本3.7.3及更高版本)具有很好的dedicated tool支持时间序列分析。另外,MOA也基于Weka,并支持流数据建模。

编辑:从二进制特征转换为实值(可能已归一化)并应用阈值后分类也可能是一个好主意。这可能会给回归模型(NB或其他)提供更多信息,从而提高准确性。

关于statistics - 朴素贝叶斯分类器在线学习,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8096508/

10-11 18:44