• 沒有找到結果。

第四章 實測驗證

4.2 實測案例

本節中,實測案例的分群演算法資料是取自於Berger-Wolf et al.(2005)中 提及的規則所得到的資料,建構的資料是依照此論文規則所模擬產生的,使用模 擬資料進行分群演算法時,針對此模擬資料進行隨機抽取兩筆作為一開始的分群 樣本,其餘資料依序放入此群組作比對。Berger-Wolf et al.(2005)設定有 F 對 成年,每對會產生至少一個小孩(juveniles),然後對這些小孩來進行分群。假設 有 F 個女性物種與 M 個男性物種,每個親代生物種都有 l 個 locus,每個 locus 最多有a 個 alleles。接下來亂數產生 jF 物種(小孩),進行分類。對於每個物種 的每個locus 的 alleles 是從男性物種亂數取一個 alleles,女性物種處亂數取一個 alleles,總共會取 2l 個 alleles。每對親代生物種最多產生 o 對小孩(此 o 個小孩 都是從相同的親代生物種亂數產生的),底下我們列出參數的設定:

z 生物種的女性(母) F=10,男性(公)M=10,十對親代生物種。

z Locus 的個數 l=2; 4; 6; 10。

z 每個 locus 最多幾個不同的 alleles a= 2; 5; 10; 20。

z 小孩(分類的物種,juveniles)的個數參數 j=10;20;50;100。

z 每對親代生物種最多產生小孩個數(offspring)o=2;5;10;30;50。

本研究將實作我們所提出的啟發式演算法。這個程式是透過JAVA 程式碼所 完成的,針對完全親緣關係重建的4 對偶基因分群問題,並計算錯誤率。本研究 可以從此程式的執行結果清楚的得知執行的速度與分群結果。在程式的部份,使 用Eclipse 開發工具來撰寫程式碼,從外部將模擬的基因資料,如下圖 3 所示之 文字檔(數據1.txt)匯入程式部分,進行資料分群。程式編輯器 Eclipse 介面,

下如圖 4 所示分為三個部份:(1)左邊部分為建立了 Java 專案後,會出現整個 套件資料夾。(2)右邊部分為程式碼撰寫地方。(3)中間主控台顯示的是本研究

執行程式碼後,顯示出分群的結果。本研究提出之演算法會依照外部資料的多寡 進行隨機抽取比對樣本,進行分群,只要將所要匯入的資料文字檔放進套件資料 夾後,按下執行,即可在主控台看到程式執行結果。本研究使用了兩種演算法(1)

針對完全親緣關係重建的4 對偶基因問題的啟發式演算法(2)完全親緣關係重 建問題的最佳分群演算法,此演算法是採用Berger-Wolf et al.(2005)提出將此 問轉到最小集合涵蓋問題上,並透過整數規劃完成,整數規劃部份我們是透過 Matlab 7 來實作。之後將這兩個演算法分群後的結果進行比較,並計算錯誤率(錯 誤率是最佳的分群結果與我們的演算法所產生的結果之間的分群距離除以所有 的物種數,分群距離計算可參考4.1 節)。底下我們利用圖 5 到圖 10 顯示我們的 實驗結果。

圖 3 匯入的文字檔

35

圖 4 執行後結果畫面

Number of alleles=5 juveniles=20

0 20 40 60 80 100

2 4 6 10

Number of loci

Num offspring=2 Num offspring=5 Num offspring=10 Num offspring=30 Num offspring=50

圖 5 基因座的個數對錯誤率的影響

圖5 中列出的是我們的演算法與 Berger-Wolf et al.(2005)的整數規劃最小 集合涵蓋演算法之錯誤率的比較。橫軸部份為基因座的個數,縱軸部分為我們的 錯誤率。舉例而言,物種數目為 20,不同的對偶基因最多為 5 的時候,當基因 座的個數為2,offspring 為 10 的情況下,兩個演算法的分割距離為 8,所以錯誤 率為8 / 20 = 40%。由本張圖的情形觀察,當物種個數與對偶基因數為固定時,

基因座的個數增加,其實並沒有很顯著影響到錯誤率的上升與下降。因此基因座 的個數增減在本研究實驗結果之下,對錯誤率影響是不大的。

37 0

20 40 60 80 100

2 5 10 20

Number of alleles

Num offspring=2 Num offspring=5 Num offspring=10 Num offspring=30 Num offspring=50

Number of juveniles=20 loci=4

圖 6 對偶基因的個數對錯誤率的影響

圖6 是我們的演算法與 Berger-Wolf et al.(2005)的整數規劃最小集合涵蓋 演算法之錯誤率的比較。舉例而言,當我們固定locus 個數為 4 與物種個數為 20 時,不同的對偶基因個數最多為2,offspring 為 5 的情況下,兩個演算法的分割 距離為9,所以錯誤率為 9 / 20 = 45%。在觀察本研究實驗數據時,我們發現同 一對父母生的小孩與對偶基因並不會很明顯的影響到我們的錯誤率高低,所以對 偶基因個數的多寡,在本研究執行的結果下,對於錯誤率也不會有顯著影響。

Number of alleles=5 loci=4

0 20 40 60 80 100

10 20 50 100

Number of juveniles

Num offspring=2 Num offspring=5 Num offspring=10 Num offspring=30 Num offspring=50

圖 7 物種個數對錯誤率的影響

圖7 是我們的演算法與 Berger-Wolf et al.(2005)的整數規劃最小集合涵蓋 演算法之錯誤率的比較。舉例而言,當我們固定locus 個數為 4 與不同的對偶基 因個數最多為5 時,產生物種個數為 20,offspring 為 10 的情況下,兩個演算法 的分割距離為12,所以錯誤率為 12 / 20 = 60%。在觀察本研究實驗數據時,我 們發現當物種數目越多,錯誤率也會跟著提高。根據本研究的參數設定,當同一 對親代生物種所生的小孩個數最多為2 時,因為十對親代生物種加起來小孩個數 只有20 個,因此只能測量到當物種個數為 20 的時候;小孩個數為 5 時,也如上 述所說,十對親代生物種加起來小孩個數最多只有50 個,因此也無法達到測量 100 的物種個數。

39 Number of offspring=10

loci=4

0 20 40 60 80 100

10 20 50 100

Number of juveniles

Num alleles=2 Num alleles=5 Num alleles=10 Num alleles=20

圖 8 物種個數對錯誤率的影響

圖 8 也是針對物種個數對錯誤率的影響,但變數改為不同的對偶基因的個 數。舉例而言,當我們固定locus 個數為 4 與 offspring 為 10 時,產生物種個數 為50,不同的對偶基因個數最多為 2 的情況下,兩個演算法的分割距離為 22,

所以錯誤率為22 / 50 = 54%。在觀察本研究實驗數據時,我們發現錯誤率會隨著 物種的增加而向上攀升。

Number of alleles=5 loci=4

0 20 40 60 80 100

2 5 10 30 50

Number of offspring

Num juveniles=10 Num juveniles=20 Num juveniles=50 Num juveniles=100

圖 9 子代個數對錯誤率的影響

圖9 為我們的演算法與 Berger-Wolf et al.(2005)的整數規劃最小集合涵蓋 演算法之錯誤率的比較。舉例而言,當我們固定locus 個數為 4 與不同的對偶基 因個數最多為5 時,offspring 為 10,物種個數為 10 的情況下,兩個演算法的分 割距離為2,所以錯誤率為 2 / 10 = 20%。在觀察本研究實驗數據時,我們可以 發現當相同子代增加時,我們的錯誤率就會隨著減少。根據本研究的參數設定,

當測量物種個數為100 時,同一對親代生物種的子代個數最多為 2 與 5 時,沒有 辦法達到100 個物種個數,所以無法量測;當物種個數為 50 時,子代個數最多 為2 時也無法量測。

41 Number of juveniles=20

loci=4

Number of offspring

Num alleles=2

本研究中我們並不針對兩個演算法時間進行比較,因為 Berger-Wolf et al.

(2005)的演算法是透過整數規劃來分群,而整數規劃一般的執行時間呈指數成 長,且為NP-Complete,我們的演算法時間複雜度為 O(n2l),所以在執行上會明 顯的快很多,而在這六項實驗中,我們的演算法在執行時間上平均執行一次約一 秒的時間。

相關文件