【问题标题】:Online learning with Naive Bayes Classifier使用朴素贝叶斯分类器进行在线学习
【发布时间】:2011-12-27 03:29:59
【问题描述】:

我正在尝试预测传入网络数据包的到达间隔时间。我测量网络数据包的到达间隔时间并以二进制特征的形式表示此数据:xi= 0,1,1,1,0,... 其中 xi如果到达间隔时间小于收支平衡时间,则 em>=0,否则为 1。必须将数据映射到两个可能的类 C={0,1},其中 C=0 表示 到达间隔时间1 表示long 到达间隔时间。由于我想在在线特征中实现分类器,只要我观察到特征向量 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)

问题是,我总是得到一个有偏见的预测。由于long的到达间隔次数比short要少,所以short总是保持不变高于long。有什么办法可以改善这一点吗?还是我做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: statistics machine-learning classification bayesian


    【解决方案1】:

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

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

    Weka(3.7.3 及更高版本)有一个非常好的dedicated tool 支持时间序列分析。或者MOA也是基于Weka,支持流数据建模。

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

    【讨论】:

    • 能否请你给我一些关于真实值的提示,而不是使用二进制特征。如何使用真实值进行分类?根据您关于拆分数据的建议,如果我采用长度为 n 的特征,则在时间 k 时,我应该采用 kn 特征进行预测.当新数据到来时,我应该将 k-n+1 到 k+1 个特征。对吗?
    • 关于使用实际值,我建议使用实际测量作为数据点。如果您使用回归工具而不是谨慎分类,这是可能的。例如,假设您的测量值为 4、9、5、7、11、5 毫秒。而不是定义例如6ms 作为边界,并将系列转换为 0,1,0,1,1,0 - 使用原始真实值进行训练和预测。至于拆分,参考同一个例子,可以拆分例如至:4,9,5 -> 7; 9,5,7 -> 11; 5,7,11 -> 5(格式为 x1,x2..xk -> 预期预测)
    • 感谢您的建议。如果我使用真实值,我是否需要保持平均值和标准差(在线学习期间)?
    • 直观地说,如果您使用在线学习,您希望系统会随着时间而改变。在这种情况下,我不建议将数据限制在固定点周围。
    猜你喜欢
    • 2016-05-01
    • 2019-03-01
    • 2016-12-11
    • 2017-01-10
    • 2012-07-02
    • 2012-04-28
    • 2013-06-21
    • 2013-12-02
    相关资源
    最近更新 更多