2011-11-11 25 views
0

着信ネットワークパケットの到着間時間を予測しようとしています。 xi = 0,1,1,1,0、... xi = 0到着間時間が0の場合、ネットワークパケットの到達時間を測定し、このデータをバイナリフィーチャの形式で表します。 ブレーク・イーブン・タイムとそれ以外の場合は1です。データは、2つの可能なクラス= 0Cは、長い到着時間を表す短い到着時間間隔及び1を表す。C = {0,1}、にマッピングされなければなりません私がオンラインフィーチャーに分類器を実装したいので、フィーチャーのベクトルを観察するとすぐに、私はMAPクラスを計算します。xi = 0,1,1,0 ...私はMAPクラスを計算します。私は条件付きと事前確率の事前の見積もりを持っていないので、次のように、私はそれらを初期化:各特徴ベクトルについてはNaive Bayesクラシファイアによるオンライン学習

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) 

問題は、私はいつも偏った予測を取得しています、ということです。 の数が長い到着時間が短いよりも比較的少ないので、事後短いのは常に長いよりも高いまま。これを改善する方法はありますか?または私は間違って何かをしていますか?どんな助けもありがとう。

答えて

1

時間系列が長いため、おそらく1つ前の値より多くの値を考慮するのが最適な方法です。これを行う標準的な方法は、時間窓を使用することであり、すなわち、長さベクトルXiを一定の長さの重なり部分に分割し、最後の値をクラスとして扱い、それらを列挙として使用することである。これは、新しいデータが到着したときにNBモデル​​を段階的に更新することによって、オンライン方式でデータをストリーミングする場合にも可能です。

この方法を使用すると、他の回帰アルゴリズムがNBよりも良い選択になる可能性があることに注意してください。

Weka(バージョン3.7.3以降)は、時系列解析をサポートする非常に良いdedicated toolです。代わりに、MOAもWekaに基づいており、ストリーミングデータのモデリングをサポートしています。

EDIT:バイナリフィーチャから実際の値(正規化されている可能性があります)に移行し、しきい値のポスト分類を適用することもよいでしょう。これにより、回帰モデル(NBなど)に多くの情報が提供され、精度が向上する可能性があります。

+0

バイナリ機能を使用するのではなく、実際の値についてのヒントを教えてください。分類に実際の値を使用するにはどうすればよいですか?データの分割に関するあなたの提案によると、時間_k_で長さ_n_個のフィーチャを取ると、予測のために_k-n_フィーチャを取る必要があります。新しいデータが到着したら、k + 1個のフィーチャに_k-n + 1_を取ります。右? – user846400

+0

実際の値の使用に関しては、実際の測定値をデータポイントとして使用することをお勧めします。これは、慎重な分類ではなく回帰ツールを使用する場合に可能です。たとえば、あなたの測定値が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 - >予期される予測) – etov

+0

あなたのアドバイスをありがとう。実際の値を使用する場合は、平均と標準偏差(オンライン学習中)を維持する必要がありますか? – user846400

関連する問題