第2章 基於劃分-測試的實值檢測器產生演算法
檢測器產生演算法是實值非選擇演算法的重要組成部分,然而,目前的實值檢測器產生演算法基本都是隨機產生候選檢測器,具有很大隨機性。尤其,當對監測精度要求很高時,為產生足夠多的成熟檢測器,隨機演算法所需的時間花費往往很高。
本章提出了一種基於劃分測試的實值檢測器產生演算法,簡記為PT-RNSA(Real-Valued Detector Generation Algorithm based on the Partition-Test Proess)。區別於以往的檢測器產生演算法,PT-RNSA是一種確定性演算法。通過PT-RNSA,可以確保除了在自我與非我的邊界地區外,其他所有的非我地區都能被成熟檢測器集合所覆蓋,並且此種演算法的成熟檢測器產生所需時間也較少。
2.1 演算法描述
本節首先給出了PT-RNSA演算法的思想,然後給出了二維空間中的演算法實現。
2.1.1 演算法思想
1. 初始化: 將整個表示空間看作一超長方體,並將其作為候選超長方體。 2. 測試: 判斷此候選超長方體是否與自我集合相交,如果沒有相交,則將其看作一成熟檢測器。 3. 劃分: 如果此長方體與自我集合相交(即至少與某一自我個體有交叉覆蓋地區),則將其均勻劃分成一些更小的候選超長方體。 4. 對於第三步中劃分出來的每一個小的候選超長方體,轉第2步,重複執行“測試-劃分”過程,直到滿足結束條件。 |
圖2.1 PT-RNSA 核心思想
圖2.1介紹了PT-RNSA的核心思想,其中的步驟2是PT-RNSA的測試階段,步驟3是PT-RNSA的劃分階段。
本文使用一個二元組<c,r>表示一個超長方體。其中,c為檢測器的中心點,r為檢測器中心點到各維邊界的距離。c = <c1, c2, c3, … , cN >,r = <r1, r2, r3, … , rN>,其中 c1, c2, c3, … , cN為N維空間中心點的座標。,ri為中心點沿i維方向到超長方體邊界處的距離。超長方體覆蓋範圍可以數學化描述為:(<x1, x2, … , xN>| |x1-c1|≤r1∧|x2-c2|≤r2∧……∧|xN-cN|≤rN, 1≤i≤N)。圖2.2為一個二維空間長方形表示的例子,其中心點為c = <cx, cy>, r = <rx, ry>,長方形的覆蓋範圍數學化描述為{<x, y>| |x-cx|≤rx && |y-cy|≤ry}。
圖2.2 二維空間長方形的表示
圖2.3 給出了PT-RNSA在二維空間中的“劃分-測試”過程,此過程直觀顯示了PT-RNSA的“劃分-測試”思想。
圖2.3 二維空間的劃分測試過程
圖2.3(a)展示了最初的候選檢測器情況,此候選檢測器有一部分地區與自我集合相交(圖中黑色部分為相交地區)。在此,特別說明一下,本文中候選檢測器與自我集合相交是指候選檢測器至少與某一自我個體有交叉覆蓋地區。
根據劃分測試思想,首先測試此候選檢測器是否與自我集合相交,測試結果為二者相交,因此,此候選檢測器被均勻的劃分為四個子候選檢測器,2.3(b)。
在圖2.3(b)中,有四個候選檢測器,根據演算法流程,需對每一個候選檢測器進行測試劃分。在測試階段,其中有三個候選檢測器不與自我集合相交,因此將此三個不與自我集合相交的候選檢測器確定為成熟檢測器。剩下的那一個與自我集合相交的候選檢測器將再次執行劃分測試過程2.3(c)。
圖2.3(c),圖2.3(d)以及圖2.3(e)展示了相似的劃分測試過程。值得注意的是,在圖2.3(e)中,劃分而成的候選檢測器小於預定義的最小檢測器,因此在執行完測試階段後,不與自我集合相交的候選檢測器被確定為成熟檢測器,而那些與自我集合相交的候選檢測器將不再繼續劃分下去。
由圖2.3可以看出,非我地區被成熟檢測器逐漸的平鋪覆蓋,尤其是那些未被檢測器覆蓋的非我地區僅僅存在於自我地區的邊界之處。並且,隨著劃分深度的增加,這些未被成熟檢測器覆蓋的邊界地區變得越來越小。此外,由圖2.3也可觀察到,各成熟檢測器之間無交叉覆蓋現象。
2.1.2 二維空間中的演算法實現
圖2.4給出了PT-RNSA演算法在二維空間中實現的虛擬碼。在圖2.4中,演算法的終結條件是預定義的最小的檢測器中心點到各維邊界上的距離,也即r0。當然也可以設定其他的終結條件,比如所需的成熟檢測器數目和預定義的檢測率等等。
d: 表示一候選檢測器,d =<c, r> c: 檢測器的中心點,c = <cx, cy> r: 檢測器的中心點到各維邊界上的距離,r=<rx, ry> r0: 預定義的最小的檢測器中心點到各維邊界上的距離 D: 成熟檢測器集合 Q: 隊列資料結構 |
1. PT-RNSA( ) 2. { 3. 初始化:d =<c, r> 設定候選檢測器的初值,使其能夠覆蓋整個問題表示空間; 成熟檢測器集合D 置為空白; 隊列 Q 置為空白隊列; 4. IF (候選檢測器d 不與自我集合相交) THEN 5. { 6. D←D∪{d}; 7. RETURN; 8. } 9. EnQueue( d );// 將候選檢測器 d 置入隊列Q中 10. WHILE (Q! = NULL ) 11. { 12. d = DeQueue( Q );// 在隊列Q中取出第一個元素並將之在隊列中移除 13. PT-Detector( d ); 14. } 15. } |
16. PT-Detector( d ) // d = <c, r> 17. { 18. IF ( r < r0 ) THEN 19. RETURN; 20. 將候選檢測器d 均勻劃分成四個更小的候選檢測器,即di (1≤i≤4); 21. FOR 每一個di (1≤i≤4) 22. { 23. IF (di 不與自我集合相交) THEN 24. D←D∪{ di }; 25. ELSE 26. IF (di 不被任何自我個體所完全覆蓋) THEN 27. EnQueue( di ); 28. } 29. } |
圖2.4 PT-RNSA 在二維空間中實現時的虛擬碼
2.2 PT-RNSA的檢測器覆蓋率
PT-RNSA有別於傳統的實值檢測器生產演算法,其主要區別在於PT-RNSA是一個確定性演算法,穩定性較好。這一節,主要分析了演算法所產生的候選檢測器的類型以及最終所確定的成熟檢測器對整個非我空間的覆蓋率問題。
2.2.1 邊界檢測器
根據候選檢測器與自我集合相交情況,可以將之分為兩類。
(1)候選檢測器與自我地區相交;
(2)候選檢測器與自我地區不相交。
2.5,其中第一類又可分為以下三種情況。
a 候選檢測器在自我地區內部
b 候選檢測器內部包含自我地區
c 候選檢測器與自我地區邊界相交
在PT-RNSA演算法中,與自我集合不相交的候選檢測器被確定為成熟檢測器。也就是說,圖2.5(d)中的候選檢測器將被看作為成熟檢測器。而與自我集合相交的候選檢測器,則要根據其相交的類型,採取2種不同的策略:
候選檢測器在自我地區內部時,則可確定此候選檢測器為無效檢測器,不再繼續劃分
當候選檢測器內部包含自我地區或候選檢測器與自我地區邊界相交時,則將繼續進行劃分
也就是說,對於圖2.5(a)這種情況不予理會。而對圖2.5(b)和圖2.5(c)這兩種情況,則要對此候選檢測器進行進一步的劃分測試處理。
定義2.1 邊界檢測器:既與自我集合相交又包含部分非我空間的候選檢測器稱為邊界檢測器。
邊界檢測器對應於圖2.5的(b)和(c)兩種情況。顯然,邊界檢測器不是成熟檢測器。
定理2.1 在PT-RNSA演算法結束後,只有邊界檢測器內的非我空間未被成熟檢測器所覆蓋。
證明:根據PT-RNSA演算法(圖2.4),整個表示空間被所有的候選檢測器所平鋪覆蓋,而候選檢測器的類型共有2種,一是與自我地區相交,一是與自我地區不相交。與自我地區不相交的候選檢測器為成熟檢測器,這裡成熟檢測器所覆蓋的非我地區記為UM。而與自我地區相交的候選檢測器又分為兩種類型,邊界檢測器以及候選檢測器完全在自我集合內部的情況。在這兩種情況中,只有邊界檢測器包含部分非我地區, 邊界檢測器因其包含部分自我地區,所以不能成為成熟檢測器。被邊界檢測器包含的部分非我地區記為UB整個非我空間記為U,則U=UM+UB。由此可見,非我空間U中只有UB未被成熟檢測器所覆蓋。因此,整個的非我空間中,只有邊界檢測器內部的非我地區未被成熟檢測器所覆蓋。
定理2.2 PT-RNSA演算法結束時,邊界檢測器中心點到各維邊界上的距離r小於預定義的最小的檢測器中心點到各維邊界上的距離r0。
證明:假設,PT-RNSA演算法(圖2.4)結束後,存在某個邊界檢測器的中心點到各維邊界上的距離r大於r0。由圖2.4可知,演算法未達結束條件,仍要繼續劃分下去,這與演算法已經結束相矛盾。因此,演算法結束時,邊界檢測器的中心點到各維邊界上的距離r小於r0。顯然,當預定義的r0減小時,r也隨之減小。
綜上所述,隨著預定義的r0的減小,邊界檢測器的中心點到各維邊界上的距離r也隨之減小,從而使得未被成熟檢測器所覆蓋的非我地區隨著r0的減小而減小。與之相反,成熟檢測器所覆蓋的範圍則隨著r0的減小而呈增加。
2.2.2 檢測器集覆蓋率分析
PT-RNSA演算法的一個顯著優點是,成熟檢測器平鋪覆蓋非我空間且檢測器之間無交叉覆蓋情況。利用此特點,可以很容易的求出被全部成熟檢測器所覆蓋的非我空間範圍。
假設總共有n個成熟檢測器,其中第i個成熟檢測器的覆蓋範圍表示為 (1≤i≤n),則所有成熟檢測器所覆蓋的非我空間範圍為 。
假設整個非我空間的範圍為SN,則被檢測器集所覆蓋的非我地區與整個非我空間地區的比率Pc為 。此比率Pc亦是檢測器集的覆蓋率。當非我空間都被成熟檢測器覆蓋時,Pc=1。
雖然被成熟檢測器所覆蓋的非我空間範圍可以通過 獲得,但整個非我空間的覆蓋範圍SN卻是一個未知量,不易直接求得。為此,本文採用Monte Carlo方法來近似計算SN的值。
首先,在整個表示空間中隨機產生t個樣本點,這些樣本點有一部分落入自我空間,另一部分落入非我空間。其次,假設有tm個樣本點落入非我空間,當隨機產生的樣本點足夠多時,也即t足夠大時,非我空間的範圍可以近似計算為 ,其中S0為整個表示空間的範圍。
然而,Monte Carlo演算法具有一定的誤差,其統計誤差約為 [66, 67]。因此,非我空間的範圍近似等於 。此時,檢測器集的覆蓋率Pc為
在實驗中,檢測器集的覆蓋率Pc可以作為檢測率的一個估計。對於給定的期望檢測率Pc,所要產生的檢測器集的覆蓋範圍必須滿足如下不等式
2.3 測試實驗
實驗所用的資料集來自http://www.zhouji.net/prof/2DSyntheticData.zip。在本章的實驗中,使用了2DSyntheticData.zip資料集中的“Cross-mid_train.txt”資料作為自我集合執行個體用來產生成熟檢測器,使用與之配對的“Cross-mid_test.txt”資料作為測試集合,用來測試產生的檢測器的效能。其中,本章實驗選用“Cross-mid_train.txt”中的前100個個體作為實驗所用的訓練集合,選用“Cross-mid_test.txt”中的全部個體作為實驗所用的測試集合。
所用資料集2DSyntheticData.zip中的所有資料均取自二維空間,整個表示空間的形狀為單位正方形。
2.3.1 PT-RNSA檢測器與
r0的關係
在圖2.6中,黑色陰影部分為被自我樣本所覆蓋的自我地區,淺顏色的各個小正方形為成熟檢測器,而空白地區是未被成熟檢測器所覆蓋的非我地區。
由圖2.6(a),可以看到,當r0=0.1時,有5個成熟檢測器產生,而由圖2.6(b)可以觀察到,當r0降低至0.05時,則有更多的成熟檢測器產生。圖2.6(c)、圖2.6(d)、圖2.6(e)以及圖2.6(f)展示了類似的情況。
由圖2.6可以觀察到,隨著r0的減小,產生的成熟檢測器越來越多,被成熟檢測器所覆蓋的非我空間範圍越來越大,而未被成熟檢測器所覆蓋的非我範圍則越來越小。可以預測,當r0非常小時,成熟檢測器將覆蓋整個非我空間。事實上,由圖2.6可以觀察到,當r0降低至0.001時,整個非我空間幾乎全部被成熟檢測器所覆蓋。
2.3.2 PT-RNSA與V-detector演算法[49]比較
在這一子節中,對PT-RNSA與V-detector二者的演算法效能做了比較,其中每次實驗均獨立的運行100次。
在實驗中,與PT-RNSA演算法效能相比較的V-detector演算法下載自如下網址http://www.zhouji.net/prof/vdetector.html,其演算法主要控制參數設定為“no,no,yes”。通過與V-detector演算法比較,PT-RNSA顯示了其在時間花費上的優勢。
演算法比較中,主要的效能評價指標是產生一個成熟檢測器所花費的平均代價Cost、檢測率Pf以及所需的成熟檢測器個數Dm。其中Pf為測試集合中被檢測出的非我個體數目與測試集合中總的非我個體數目之比,產生代價Cost的定義如下
..........................................
.........................................
由於實驗資料太多 圖片太多 系統不能繼續上傳了 所以實驗資料這一部分就省略了。。。