Statistics 基于朴素贝叶斯分类器的在线学习

Statistics 基于朴素贝叶斯分类器的在线学习,statistics,machine-learning,classification,bayesian,Statistics,Machine Learning,Classification,Bayesian,我试图预测传入网络数据包的到达时间。我测量网络数据包的到达时间,并以二进制特征的形式表示这些数据:xi=0,1,1,0,。。。其中,如果到达间隔时间小于盈亏平衡时间,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

我试图预测传入网络数据包的到达时间。我测量网络数据包的到达时间,并以二进制特征的形式表示这些数据:xi=0,1,1,0,。。。其中,如果到达间隔时间小于盈亏平衡时间,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)

问题是,我总是得到一个有偏见的预测。由于长到达时间的数量相对少于短到达时间,短到达时间的后部始终高于长到达时间。有什么办法可以改进这一点吗?还是我做错了什么?任何帮助都将不胜感激

由于时间序列较长,最好的方法可能是考虑多个以前的值。这样做的标准方法是使用时间窗,即将长向量席分割成一个恒定长度的重叠部分,最后的值作为类来处理,并将它们作为列车组使用。这也可以通过在线方式对流式数据进行处理,在NB模型到达时使用新数据增量更新NB模型

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

Weka(3.7.3及以上版本)具有非常好的支持时间序列分析的功能。或者,它也基于Weka,支持流数据建模


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

请您提供一些关于真实值的提示,而不是使用二进制特征。如何使用实际值进行分类?根据你关于分割数据的建议,如果我取n个特征的长度,在时间k,我应该取k-n个特征进行预测。当新数据到达时,我应该使用k-n+1到k+1特征。对吗?关于使用实际值,我建议使用实际测量值作为数据点。如果使用回归工具而不是谨慎的分类,这是可能的。例如,假设您的测量值为4,9,5,7,11,5 ms。而不是将例如6 ms定义为边界,并将序列转换为0,1,0,1,1,0-使用原始真实值进行训练和预测。对于拆分,参照同一示例,可以拆分为:4,9,5->7;9,5,7 -> 11; 5,7,11->5(格式为x1,x2..xk->预期预测)感谢您的建议。如果我使用真实值,我是否需要保持平均值和标准差(在线学习期间)?直觉上,我会说,如果你使用在线学习,你期望系统随着时间的推移而改变。在这种情况下,我不建议将数据限制在固定点附近。