2011-11-11 122 views
0

在線學習我試圖預測進入網絡封包的到達間隔時間。餘測量網絡分組的到達間時間和在二進制特徵的形式表示這個數據:XI = 0,1,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 ),當I輸出一個類ç,我更新條件和先驗概率如下:

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

的問題是,我總是得到一個偏置預測。由於到達間次數比相對少,後路短總是保持低於更高。有什麼辦法可以改善嗎?或者我做錯了什麼?任何幫助將不勝感激。

回答

1

既然你有很長的時間序列,最好的路徑很可能會考慮多單前值。這樣做的標準方法是使用時間窗口,即將長向量Xi分割爲長度不變的重疊片段,將最後一個值視爲類別,並將它們用作列車集合。這也可以通過以在線方式流式傳輸數據來完成,通過在新數據到達時遞增地更新NB模型。

注意,使用此方法,而回歸算法可能最終會比NB更好的選擇。

Weka的(3.7.3及以上版本)有一個非常好的dedicated tool支持時間序列分析。另外,MOA也基於Weka,並支持流數據的建模。

編輯:它也可能是從二進制功能移動到真實值(可能歸一化),並申請門檻後分類是個好主意。這可能會爲迴歸模型(NB或其他)提供更多信息,從而提高準確性。

+0

您能否提供一些關於真實值的提示,而不是使用二進制功能。我如何使用真實值進行分類?根據你關於分割數據的建議,如果我在時間_k_處取長度_n_,我應該使用_k-n_特徵進行預測。當新數據到達時,我應該使用_k-n + 1_到k + 1個特徵。對? – user846400

+0

關於使用實際值,我建議使用實際測量值作爲數據點。如果您使用迴歸工具而不是謹慎的分類,這是可能的。例如,假設你的測量結果是4,9,5,7,11,5 ms。而不是定義例如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