實驗內容
一、Libsvm分析数据
1.1 Libsvm使用方法
先轉變數據類型為:
Original sets with default parameters
采用默认参数来训练
.\svm-train C:\Users\khdn'\Desktop\svm_test\output2.txt
用默认参数训练出的模型进行预测
.\svm-predict output2.txt output2.txt.model output2.txt.predict
Scaled sets with default parameters
.\svm-scale -l -1 -u 1 -s range output2.txt>output2.scale
.\svm-scale -r range output2.txt > output2.txt.scale
用libsvm自带的grid.py来自动暴力搜索最好的参数c和g,c表示惩罚参数,g表示gamma系数
Scaled sets with parameter selection (change to the directory tools, which contains grid.py)
python grid.py output2.scale
1.2 各數據利用libsvm方法進行測試的結果
以下為五組未處理過的原數據全部丟入libsvm,在終端執行的結果。original sets accuracy為未處理過的原始數據根據默認參數預測的準確度,c、g和accuracy分別為經過libsvm方法處理后找出最佳懲罰係數、gamma係數進行預測的準確度。
二、基因演算法和類免疫演算法的執行結果
2.1 实验步骤
第一步,劃分數據。
將未處理過的原始數據里的每筆數據隨機分配到五個文檔;
第二步,建立訓練集。
從五個文檔隨機抽四個文檔合成一個文檔作為訓練集建立模型,另一個文檔做測試,每個未處理過的文檔剛好可以建五組不同模型并測試,即五倍交叉驗證法。
第三步,產生初始母體。
本文採用隨機的方式,每個特徵值都會根據百分數隨機產生一個數。即如果當前百分數為13,就會產生0到12的數,而我們只挑出值為1的特徵值,就減少了特徵值數目。
第四步,修改適應函數。
將原本以準確度為適應函數修改成TP、TN、FP、FN不同權重的總和。
第五步,測試適應函數的最佳權重。
將訓練集分別用不同的適應函數權重比例和不同百分數找出最佳的sn、spec、pre和accu即適應函數
第六步,確定停止運行條件。
本实验採用的條件是當連續四代的適應函數都差不多時即跳到下一個百分數(這裡的百分數是指特徵值被挑中的概率是1/百分數,如百分數13就是1/13),否則就產生新的母體,直到穩定時的適應函數值小於某个数則停止。
第七步,產生新的母體原則。
基因演算法有十條母體,五條用於傳統的基因演算法複製、交配跟突變,另外五條隨機產生;類免疫演算法是保留前一代菁英解的三分之二序列,剩下的三分之一隨機產生,而其他的四條母體就隨機產生,若剛好遇到 5的整數倍迭代,則將其中一條隨機產生的母體換成上一代的菁英解。
第八步,將訓練集建立的模型對測試集進行測試。
將測試四個文檔集成的訓練集所得到的最佳序列跟模型去測試除這四個文檔外的另一個文檔,求出其TP、TN、FP、FN和Sensitive、 Specificity、 Precision和Accuracy。
以下為Man_aac_aapc.csv類免疫演算法和基因演算法以適應函數TP+TN-3FN-2FP、挑選序列總數大約為總序列的25%即百分數4進行多次實驗的結果。一次實驗包括劃分成五個文檔,合併其中四個文檔,另外一個做測試,做五組的過程。
Man_aac_aapc基因演算結果
Man_aac_aapc類免疫結果
目前完成的工作
1. 安裝weka 3.7
2. 瞭解weka軟體的基本功能
3. 在classify加入neural network方法
4. 處理數據並用neural network等方法測試比較
5. 計算相關係數挑選係數高的進行測試
6. 瞭解libsvm的用法並在終端進行測試
7. 瞭解Genetic Algorithm演算法並運行代碼
8. 將原始數據劃分成五個文檔做交叉驗證法
9. 編寫代碼讓其根據產生的數0和1來挑選特徵值
10. 轉換數據類型
11. 將libsvm方法用代碼呈現
12. Libsvm計算出的結果當成適應函數
13. 添加連續四代準確度穩定才停止的條件
14. 在程序中添加讓百分數自動更改的程序
15. 了解類免疫演算法
16. 根據類免疫演算法修改代碼
17. 計算Sensitive 、Specificity、Precision 和Accuracy
18. 用代碼呈現自動計算Sensitive 、Specificity、Precision 和Accuracy的功能
19. 將TP、TN、FP、FN之和當成適應函數
20. 挑選TP、TN、FP、FN較佳的權重比例
21. 將基因演算法母體增加為十條,其中五條做原始的基因演算法,另外五條隨機生成,避免過早收斂的問題
22. 將訓練集建立的模型來預測測試集
23. 將基因演算法和類免疫演算法的結果進行對比
預期結果
本專題實習預計達到的目的為給定一組雜亂無章的數據,通過一系列的演化後能夠對該數據進行清洗,保留有用可靠的相關數據,剔除準確度低、不可靠的數據,得到需要的特徵值。
我們希望達到的效果是全程實現自動化,即設計相關程式實現導入任何一組需要分析的數據,可自動保留有用的特徵值,剔除考察價值低的數據。目的为尽可能使用少量的特征值即可提高数据的辨识度。
分析与讨论
此次實驗中,主要目的就是希望能夠找出有用的特徵值,使得不需要全部的特徵值也能達到較高的準確度。所以,我們用libsvm方法自動挑選最佳參數來建立模型并達到較高的準確度,除此之外我們將適應函數定義為TP、TN、FP、FN不同權重之和,并找出較佳的權重比例,得到了較佳的效果。
展望
本專題實習雖然找出了有用的特徵值,剔除準確度低、不可靠的數據,提高了數據的準確度,并用TP、TN、FP、FN不同權重來當適應函數,但是不管是基因演算法還是類免疫演算法的sensitive的值都偏低,所以我們希望在之後的工作中,能夠找出讓其升高的技術。