Sử dụng mô hình rừng cô lập để kiểm tra dữ liệ u

Một phần của tài liệu PHÁT HIỆN DỮLIỆU BẤT THƯỜNG VỚI RỪNG CÔ LẬP (Trang 60)

4.2.6.1. Dữ liệu đầu vào

Dữ liệu được sử dụng phổ biến trong khai mỏ dữ liệu thường được lưu trữ dưới định dạng CSV (Comma Separated Values). Trong định dạng này, mỗi một hàng là một thể hiện. Trong mỗi hàng, giá trị của các thuộc tính được phân cách bởi dấu phẩy.

Dữ liệu đầu vào được đưa vào mô hình bởi hàm sau đây:

public double getAveragePathLength(double[] x) { double length=0;

if ((numTree<=0) || (!isCreated)) //Cây chưa được tạo return -1;

for (int i=0;i<numTree;i++) //Duyệt qua tất cả các cây để xác định độ dài {

length=length+getPathLength(x,iTree[i],0); }

return (double)(length/numTree); }

public double getScore(double[] x) {

if ((numTree<=0) || (!isCreated)) // Cây chưa được tạo return -1;

// Độ cao trung bình trên cây iTree có n phần tử

double c_n=(double)2*(Math.log(numInstance-1)+0.5772156649) -(2*(double)((numInstance-1)/numInstance)); //Độ cao trung bình trên của thể hiện x

double temp = -(double)(getAveragePathLength(x)/c_n); return Math.pow(2.0, temp);

}

public boolean importDataFromFile(String fileName) { //Chứa dữ liệu tạm thời đọc từ tập tin csv

ArrayList<String> myArr = new ArrayList<String>();

try { BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));

while (true) { //Đọc toàn bộ nội dung tập tin String line = in.readLine();

if ((line != null) && (!line.isEmpty())) { myArr.add(line);

4.2.6.2. Xây dựng rừng cô lập từ dữ liệu đầu vào

Khi dữ liệu đầu vào đã được nhập, việc xây dựng rừng cô lập sẽ được tiến hành dựa trên thông số về số cây trong rừng và số lượng thể hiện trên mỗi cây. Sau khi rừng được xây dựng, giá trị điểm số bất thường cũng được tính và hiển thị theo thứ tự từ cao đến thấp. } else { in.close(); break; } } } catch (Exception e) { e.printStackTrace(System.out); } if (myArr.size()==0) //Không có dữ liệu return false; else { //Có dữ liệu //Xác định số thể hiện numInstance=myArr.size(); //Chia tách các thuộc tính numAtt= myArr.get(0).split(",").length-1;

inputData = new double[numInstance][numAtt+1]; String[] strList;

for (int i=0;i<numInstance;i++) { //Lưu trữ từng thể hiện vào mảng strList = myArr.get(i).split(",");

for (int j=0;j<=numAtt;j++) {

inputData[i][j]=Double.valueOf(strList[j].trim()); } } return true; } }

private void jBuildButtonActionPerformed(java.awt.event.ActionEvent evt) { //Số lượng cây

int noTree = Integer.parseInt(jNoTreeTextField.getText().trim()); //Số lượng thể hiện trên mỗi cây

int sampleSize = Integer.parseInt(jSampleSizeTextField.getText().trim()); //Thiết lập thông số trên rừng

iForest.setNumTree(noTree); iForest.setSampleSize(sampleSize);

//Xây dựng rừng iForest.createIForest();

//Xác định điểm số bất thường cho mỗi cây int numInstance = iForest.getNumInstance(); int numAtt = iForest.getNumAtt();

currentData = iForest.getInputData();

//Lưu trữđiểm số bất thường cho mỗi thể hiện double[] score = new double[numInstance];

4.2.6.3. Kiểm thử dữ liệu

Sau khi rừng cô lập được xây dựng, việc xác định điểm số bất thường của tập được dùng xây dựng rừng đã được thực hiện và hiển thị. Tuy nhiên, trong một số trường hợp chúng ta muốn kiểm thử dữ liệu khác với dữ liệu được sử dụng xây dựng rừng. Điều này có thể thực hiện bằng hàm sau đây.

4.3. Giới thiệu giao diện của mô hình rừng cô lập:

- Mô hình cho phép người dùng nhận vào một tập dữ liệu có định dạng .csv [4.2.6.1]

score = new Score[numInstance]; for (int i=0;i<numInstance;i++) { score[i] = new Score(); score[i].index=i;

score[i].label = currentData[i][numAtt];

score[i].score= iForest.getScore(currentData[i]); }

//Sắp xếp lại điểm sốđể hiển thị theo thứ tự từ cao đến thấp Arrays.sort(score, new ScoreComp());

display(currentData,score,numInstance,numAtt, true); jTestButton.setEnabled(true);

jFilterButton.setEnabled(true); }

private void jTestButtonActionPerformed(java.awt.event.ActionEvent evt) { //Dữ liệu kiểm tra được đưa vào từ tập tin

String filename = openFile();

if (filename!=null) { //Đọc dữ liệu từ tập tin csv currentData =iForest.readDataFromFile(filename); if (currentData!=null) {//Có dữ liệu

//Xác định số lượng thể hiện int numInstance = currentData.length;

//Tính điểm số bất thường cho các thể hiện score = new Score[numInstance];

for (int i=0;i<numInstance;i++) { score[i] = new Score(); score[i].index=i;

score[i].label = currentData[i][iForest.getNumAtt()]; score[i].score= iForest.getScore(currentData[i]); }

//Sắp xếp theo thứ tự Arrays.sort(score, new ScoreComp());

display(currentData, score, numInstance, iForest.getNumAtt(), true); }

- Nhập vào số cây (No of Trees), kích thước mẫu (Sample size), kế đó chọn Build để xây dựng rừng cô lập. Công việc này được lập lại với số lần không giới hạn.

- Kết quả sau khi dựng rừng cô lập là điểm số bất thường của tất cả các thể hiện trên tập Test (nếu không chọn tập Test khác, thì mặc nhiên tập Test và tập Training là một). Điểm số mặc định được sắp xếp theo thứ tự giảm dần.

- Đểđánh giá hiệu quả của mô hình trên tập dữ liệu đưa vào, người dùng có thể đưa vào ngưỡng chọn bất thường, khi đó sẽ thu được các kết quả là các độ đo TPR và FPR. Công việc này được lập lại với số lần không giới hạn. Hình 4.1 minh hoạ giao diện mô hình rừng cô lập.

CHƯƠNG 5: NỘI DUNG VÀ KẾT QUẢ THỰC NGHIỆM 5.1. Chọn các tập dữ liệu thực nghiệm

iForest là một trong những kỹ thuật phát hiện bất thường dựa trên mô hình unsupervised [8], các kỹ thuật theo loại này đòi hỏi các tập dữ liệu được chọn cho thực nghiệm phải thoả mãn cả 2 giả định: s lượng các th hin bt thường phi ít hơn rt nhiu so vi các th hin bình thường trong tp (giả định 1) và giá tr d

liu ca các th hin bt thường phi thc s khác bit đối vi các th hin bình thường còn li trong tp d liu (giảđịnh 2). Hai giảđịnh này được các tác giả của kỹ thuật rừng cô lập nêu ra như 2 điều kiện tiên quyết khi áp dụng rừng cô lập.

Nếu một trong hai giảđịnh này không đúng thì các kỹ thuật dựa trên mô hình này sẽ có tỉ lệ sai rất cao. Ngoài ra, mô hình chỉ làm việc tốt trên thuộc tính kiểu liên tục (continuous), các kiểu dữ liệu khác (binary, nominal) sẽ không tương thích tốt với quá trình chia tách dữ liệu dựa theo điều kiện (có so sánh giá trị) (3.5.1.2).

Trong phần thực nghiệm, tôi đã nghiên cứu lựa chọn được 5 tập dữ liệu cho thực nghiệm, các tập dữ liệu được chọn vì tính ứng dụng cao của chúng trong đời sống như: dữ liệu về bệnh ung thư vú, bệnh tiểu đường, dịch bệnh rầy trên lúa và thư spam trong email. Ngoài ra, các tập được chọn do có sự đa dạng theo các đặc điểm như: S lượng thuc tính (tập có số thuộc tính ít nhất là 6, và tập có số thuộc tính nhiều nhất đến 57 thuộc tính). S liên quan (ràng buc) nhiều hay ít giữa các thuộc tính với nhau trong cùng một tập dữ liệu. S tách ri (khác bit ln) v d

liu giữa các thể hiện bình thường và bất thường trong tập. S phn t thuc lp bt thường (tập có tỷ lệ bất thường thấp nhất là 10%, cao nhất đến 46%). S lượng phn t ( tập có số phần tử ít nhất là 699 phần tử, tập có số phần tử lớn nhất lên đến 4601 phần tử). Quan sát ban đầu các tập được chọn trình bày ở bảng 5.1.

Bảng 5.1. Các tập dữ liệu chọn thực nghiệm

Tên tập dữ liệu Số thể hiện Số thuộc tính Lớp bất thường Ý nghĩa tập

Breastw 699 11 34.5% Ung thư vú

Spambase 4601 57 39.4% Spam trên Web

Pima 768 9 35% Bệnh tiểu đường

Mammographic 961 6 46.3% Nhũảnh

1) Mô tả tập dữ liệu Breastw (Breast Cancer Wisconsin): Thông tin về tập dữ liệu:

Đây là tập dữ liệu chứa các mẫu bệnh ung thư vú (Breast cancer) [5], các mẫu dữ liệu có được qua những báo cáo định kỳ của Tiến sĩ, bác sĩ Wolberg, trường đại học y Wisconsin, Madison, Wisconsin, USA; Những mẫu bệnh này được thu thập trong quá trình khám chữa bệnh cho các bệnh nhân. Tổng cộng có 699 thể hiện, trong đó lớp bất thường chiếm 34.5%.

Thông tin về thuộc tính (bảng 5.2): gồm 11 thuộc tính, thuộc tính 1 là mã số mẫu bệnh (id number), thuộc tính 11 có 2 giá trị biểu thị cho 2 lớp (lớp 2: mẫu bệnh lành tính, lớp 4 cho mẫu bệnh ác tính), 2 thuộc tính này sẽ bị loại bỏ trước khi đưa tập dữ liệu vào thực nghiệm vì chúng không liên quan đến ý nghĩa phát hiện bất thường. 9 thuộc tính còn lại từ thuộc tính thứ 2 đến 10 là các số nguyên trong khoảng từ 1 đến 10 biểu thị các chỉ số chuyên môn cho việc chuẩn đoán bệnh.

Bảng 5.2: Mô tả các thuộc tính trong tập Breastw

STT thuộc

tính Tên thuộc tính và giá trị

1 2 3 4 5 6 7 8 9 10 11 Mã s ca mu bnh: id number Mức độ dày đặc của các khối u: 1 - 10 Tính đồng dạng của kích thước tế bào: 1 - 10 Tính đồng dạng của hình dáng của tế bào: 1 - 10 Sự dính chặt vào mép tế bào: 1 - 10

Kích thước của các biểu mô đơn lẻ: 1 - 10 Độ xơ hóa của nhân tế bào: 1 - 10

Chất nhiễm sắc thể: 1 - 10 Hạch nhân bình thường: 1 - 10 Sự phân bào có tơ: 1 - 10

Lp: (2 cho lành tính, 4 cho ác tính)

8 mẫu bệnh ngẫu nhiên trong tập Breastw được trình bày ở bảng 5.

Bảng 5.3: 8 thể hiện bất kỳ (ngẫu nhiên) trong tập Breastw

STT phần tử 1 2 3 4 5 6 7 8 9 10 11 1 1018099 4 1 1 3 2 1 3 1 1 2 2 1018561 4 2 1 1 2 1 2 1 1 2 3 1033078 1 1 1 1 1 1 3 1 1 2 4 1000025 2 1 1 1 2 1 2 1 1 2 5 1015425 8 7 5 10 7 9 5 5 4 4 6 1016277 5 1 1 1 2 1 2 1 1 2 7 1017023 10 7 7 3 8 5 7 4 3 4 8 1017122 3 1 2 1 2 1 2 1 1 2

Mô tả sự cô lập nhanh các phần tử bất thường:

Giả sử bảng 5.3 biểu thị cho mẫu sub-sample có kích thước là 8, khi đó chiều cao giới hạn của cây L=log8=3. Hình 5.1 biểu diễn 1 cây ngẫu nhiên được xây dựng từ tập mẫu trên bảng 5.3. 2 phần tử bất thường 5,7 được cô lập gần nút gốc của cây hơn so với các phần tử khác. Quan sát bảng 5.3 cho thấy giá trị của các thuộc tính của 2 mẫu bất thường này khác biệt hơn nhiều (lớn hơn) so với các mẫu còn lại, ví dụ nhưở thuộc tính thứ 2 cho thấy mức độ dày đặc của các khối u ở 2 mẫu 5,7 khá lớn (gần đạt giá trị tối đa là 10), trong khi những mẫu bệnh lành tính (lớp 0) thì giá trị của thuộc tính này tương đối nhỏ (dưới giá trị 5). Tương tự mô tả cho các thuộc tính còn lại.

2) Mô tả tập dữ liệu RayNau Thông tin về tập dữ liệu:

Đây là tập dữ liệu chứa các mẫu bệnh Rầy nâu trên lúa, đây là bệnh phổ biến trên lúa và gây nhiều thiệt hại nghiêm trọng trong sản xuất nông nghiệp. RayNau là tập dữ liệu nhân tạo với các giá trị dữ liệu được tạo theo cách thức tạo số ngẫu nhiên trong đoạn [a,b] theo công thức rand()*(b-a)+a; với rand() tạo số ngẫu nhiên trong đoạn [0,1]. Giả định số liệu trên mỗi mẫu thu được do kỹ thuật viên ghi nhận khi quan sát trên một 1m2 của một cánh đồng cụ thểđang trong giai đọan trổ đồng. Tập có tổng cộng 1000 phần tử, trong đó số phần tử bất thường chiếm 10%.

Thông tin về thuộc tính: Tập RayNau có tổng cộng 6 thuộc tính, thuộc tính 1 là mã số mẫu bệnh (id number), thuộc tính cuối là thuộc tính có 2 giá trị nhị phân (1: mẫu bệnh cần can thiệp thuốc, 0: mẫu không cần can thiệp thuốc), 4 thuộc tính

1,2,3,4,5,6,7,8 1,2,3,4,6,7,8 5 1,2,3,4,6,8 1,2,3,4,6 7 8 q=5 p=7.23 q=7 p=2.04 q=4 p=1.62 exNode (size=1) exNode (size=1) exNode (size=1) exNode (size=5)

còn lại từ 2 đến 5 có giá trị như mô tả trên bảng 5.3 biểu thị cho các chỉ sốđánh giá mức độ bệnh Rầy trên đồng ruộng.

Tất cả các thể hiện đều được lấy ngẫu nhiên theo giá trị bình thường, còn 10% thể hiện bất thường thì được lấy ngẫu nhiên trong vùng giá trị bất thường. Quan sát ở bảng 5.4 cho 8 thể hiện đầu trong tập RayNau.

Bảng 5.4: Mô tả các thuộc tính của tập RayNau

STT thuộc tính Tên thuộc tính và giá trị 1 2 3 4 5 6 Mã số mẫu bệnh: id number

Trung bình số lá bệnh trên cây: 0-8 Tổng số cây bị nhiễm bệnh: 1-120

Chiều cao trung bình của cây lúa: 30-80 cm Số lá trung bình của cây lúa: 3-8

Mẫu bệnh cần phun thuốc diệt rầy: 1, ngược lại là 0 Bảng 5.5: 8 thể hiện bất kỳ (ngẫu nhiên) trong tập RayNau

1 2 3 4 5 6 KSB0119 1.00 10.00 73.00 7.00 0 KSA1109 1.00 11.00 72.00 6.00 0 KSA1211 2.00 9.00 76.00 6.00 0 KSA1112 0.00 8.00 76.00 7.00 0 KSB1211 0.00 15.00 73.00 7.00 0 KSA1102 2.00 20.00 76.00 7.00 0 KSB1119 1.00 14.00 73.00 7.00 0 KSA0530 5.00 35.00 45.00 4.00 1

Quan sát bảng 5.5 ta dễ dàng nhận ra mẫu bệnh thuộc lớp 1 có giá trị dữ liệu khá tách biệt so với các mẫu bệnh thuộc lớp 0. Cụ thểở thuộc tính 2, trung bình số lá bệnh trên cây của mẫu thuộc lớp 1 là 5 (số lá tối đa cho cây lúa là 8) trong khi các mẫu còn lại có giá trị này <2. Tương tự cho mô tả các thuộc tính còn lại.

3) Mô tả tập dữ liệu Spambase

Mô tả tập dữ liệu: Tập Spambase nói về những thư spam trên email. Quan niệm về spam rất rộng: những quảng cáo cho sản phẩm/website, những mưu mô kiếm tiền nhanh, thư dây chuyền. Bộ sưu tập về các spam email đến từ server mail hoặc từ những cá nhân có chuyên môn về spam. Bộ sưu tập của những email không phải spam đến từ những công việc chuyên môn hoặc những email của các cá nhân. Tập dữ liệu gồm 4601 thể hiện, trong đó có 1813 spam email (chiếm 39.4%) [5].

Mô tả thuộc tính: Tập Spambase có tổng cộng 57 thuộc tính được mô tả chi tiết trong bảng 5.6 bên dưới.

Bảng 5.6: Mô tả các thuộc tính trong tập Spambase

Thứ tự thuộc tính Ý nghĩa của các thuộc tính - kiểu thuộc tính – giá trị

Thuộc tính từ 148 Thuộc tính từ 4954 Thuộc tính 55 Thuộc tính 56 Thuộc tính 57 Là các thuộc tính kiểu số thực, xác định tỷ lệ xuất hiện của 48

từ trong thư điện tử, 48 từ này xuất hiện ở cuối của mỗi tên trường. Các thuộc tính có giá trị trong đoạn [0,100], đây chính là tỷ lệ phần trăm của từ xuất hiện trong thưđiện tử.

Kiểu số thực, xác định tỷ lệ xuất hiện của ký tự trong thưđiện tử, 6 ký tự này xuất hiện ở cuối tên mỗi trường. Các trường có giá trị trong đoạn [0,100], đây là chính là tỷ lệ phần trăm của ký tự xuất hiện trong thưđiện tử.

1 thuộc tính kiểu số thực xác định độ dài trung bình của chuỗi liên tục các ký tự hoa.

1 thuộc tính kiểu số nguyên xác định độ dài nhất của chuỗi liên tục các ký tự hoa.

1 trường giá trị nhị phân xác định phân loại: thưđiện tử được xem như một thư rác (1) hay không (0).

Bảng 5.7. 8 thể hiện bất kỳ (ngẫu nhiên) trong tập Spambase

STT 1 2 3 4 5 … 54 55 56 57 1 0.08 0.08 0.61 0 0 … 4.696 124 1315 0 2 0 0 0 0 0.63 … 3.537 40 191 1 3 0 0 0.12 0 0.83 … 3.627 43 200 1 4 1.88 0 0 0 0 … 2.933 23 311 0 5 0 0.11 0.11 0 0.34 … 3.441 35 499 0 6 0 0.64 0.64 0 0.32 … 3.756 61 278 1 7 0 0 0 0 0 … 2.652 11 61 0 8 0 0 0 0 0 … 1 1 18 0

Quan sát bảng 5.7, giá trị trên các thuộc tính giữa email là spam (phần tử 2,3,6) hay không phải spam (các phần tử còn lại) không có sự khác biệt rõ.

Ví dụ giá trị trên các thuộc tính 14 giữa các mẫu 2,3 và 7,8 khá giống nhau (đều gần bằng 0), mô tả tương tự trên các thuộc tính khác. Điều này cho thấy tập Spambase không thỏa mãn tốt giảđịnh 2 của mô hình.

4) Mô tả tập dữ liệu Pima

Thông tin về tập dữ liệu: Tập Pima chứa các mẫu bệnh về tiểu đường ở phụ nữ. Tất cả các mẫu trong tập dữ liệu thu được từ những phụ nữở độ tuổi từ 21 trở lên của giáo hội Pima, Ấn độ. Tổng cộng có 768 thể hiện trong tập (500 thuộc lớp 0, 268 thuộc lớp 1), tỉ lệ mẫu bệnh trên toàn tập là 35% [5].

Thông tin về thuộc tính: Tập Pima có tổng cộng 9 thuộc tính, thuộc tính cuối dạng nhị phân là thuộc tính lớp (mẫu có bệnh là 1, ngược lại là 0) (bảng 5.8). 10 mẫu đầu tiên trong tập Pima được trình bày trên bảng 5.9.

Bảng 5.8: Bảng mô tả thuộc tính trên tập Pima

Stt thuộc tính Tên thuộc tính

1 2 3 4 5 6 7 8 9 Số lần mang thai

Theo dõi huyết tương trong 2 giờ kiểm tra Huyết áp (mm Hg)

Mức độ dày đặc của những nếp gấp ở da cánh tay trên (mm) Hóa học huyết thanh trong 2 giờ (mu U/ml)

Các chỉ số của cơ thể (trọng lượng trên kg, chiều cao tính theo mét).

Chức năng huyết thống trong bệnh đáy đường Tuổi (năm)

Phân lớp (1: possitive , 0: negative)

Bảng 5.9: 8 thể hiện bất kỳ ( được lấy ngẫu nhiên) trong tập Pima

STT 1 2 3 4 5 6 7 8 9 1 6 148 72 35 50 33.6 0.627 50 1 2 1 85 66 29 0 26.6 0.351 31 0 3 1 89 66 23 94 28.1 0.167 21 0 4 1 137 40 35 168 43.1 2.288 33 1 5 5 116 74 0 0 25.6 0.201 30 0 6 3 78 50 32 88 31 0.248 26 1

Một phần của tài liệu PHÁT HIỆN DỮLIỆU BẤT THƯỜNG VỚI RỪNG CÔ LẬP (Trang 60)