Trong thực nghiệm, có ba phương pháp đánh giá thường được sử dụng để đánh giá hiệu quả hoạt động của các mô hình dự báo lỗi bao gồm: recall rate, false positive rate và F-measure. Những phương pháp này có thể được xác định bằng cách sử dụng A, B, C và D trong bảng dưới.
Dự đoán là lỗi Dự đoán là không lỗi
Số module lỗi A B
Sỗ module không lỗi C D
Ở đây, A, B, C và D lần lượt là - A: số module lỗi được dự đoán là lỗi.
- B: số lượng module lỗi được dự đoán là không lỗi. - C: số lượng module không lỗi mà được dự đoán là lỗi.
- D: số lượng module không lỗi mà được dự đoán là đúng không lỗi.
Recall rate được xác định là A/ (A + B), biểu thị tỉ số của số module lỗi được
phân loại một cách chính xác là lỗi với tổng số module lỗi. Đây là phương pháp rất quan trọng tỏng dự đoán lỗi, bởi vì tỉ lệ này càng lớn nghĩa là mô hình dự đoán càng tìm được nhiều module lỗi.
False positive rate được xác định là C / (C + D), biểu thị tỷ lệ số module không
lỗi nhưng bị phân loại sai trên tổng số module không lỗi.
Đối với dự đoán lỗi, độ chính xác dự đoán của một mô hình biểu thị tỷ lệ của số module lỗi được phân loại một cách chính xác trên số module được phân loại là lỗi. Độ chính xác của việc dự đoán đánh giá mức độ chính xác của mô hình dự đoán và được định nghĩa là A / (A + C). Rõ ràng, một mô hình dự đoán tốt là mô hình đạt được giá trị cao về recall rate và độ chính xác. Tuy nhiên, tồn tại sự đánh đổi giữa recall rate và độ chính xác. Do đó, một biện pháp toàn diện về tỷ lệ thu hồi và độ chính xác là cần thiết. F-measure là phương pháp dung hòa recall rate và độ chính xác, được định nghĩa là:
F -measure = 4 × ëíì íồï × ñííòí ôáñ
ëíì íồï õ ñííòí ôáñ (3.1)
Tất cả các phương pháp đánh giá trên đều nằm trong khoảng từ 0 đến 1. Rõ ràng, một mô hình dự đoán lỗi lý tưởng nên giữ recall rate và F-measure ở mức cao, và false positive rate ở mức thấp. Mỗi thử nghiệm sẽ được đánh giá dựa trên ba phương pháp recall (Pd), false positive (Pf) và các giá trị F-measure. Do mức độ chính xác đã được bao gồm trong F-measure nên luận văn sẽ không đề cập tới khía cạnh này.
Cụ thể các bước tiến hành thử nghiệm bao gồm:
Bước 1: Xử lý dữ liệu:
Dữ liệu thu thập được có định dạng arff với format như sau: @relation tên file arff
@attribute tên metric 1 ...
@attribute tên metric n @ attribute class { các nhãn } @data
mỗi dòng tiếp theo tương ứng với một module và được gán nhãn lỗi hoặc không lỗi
Các dữ liệu sẽ được xử lý theo các bước: - Bỏ các dòng chứa kí tự @.
- Chèn kí tự % vào đầu file để phục vụ việc đọc dữ liệu.
- Thay toàn bộ các nhãn lỗi và không lỗi tại các dòng biểu thị module thành 1 và 0 tương ứng.
File sau khi xử lý sẽ có định dạng như sau:
% sau kí tự này và vẫn trên cùng một dòng có thể là comment Sau dòng đầu bên trên, mỗi dòng tiếp theo đại diện cho một module
Bước 2: Thực thi các bước đã trình bày ở cuối chương 2:
- Tiến hành xây dựng cách biểu diễn thống nhất cho các dự án nguồn và đích. - Áp dụng phân tích tương quan chính tắc trên cách biểu diễn thống nhất đã xây
dựng để lấy được các vector chuyển đổi, từ đó xây dựng nên ma trận chuyển đổi.
- Áp dụng phân loại nn để xác định nhãn cho các module của dự án đích, so sánh với nhãn gốc để tính ra được các thông số: recall, false positive, F-measure. Bên dưới là minh họa kết quả chạy cho một trường hợp Apache -> ar3:
Hình 14. Minh họa một kết quả chạy thực nghiệm
Dưới đây là chi tiết các thực nghiệm và các kết quả thu được:
Bảng 3 bên dưới cho thấy các giá trị Recall, F-Measure và False positive của
trường hợp dự đoán lỗi liên dự án kiểu một - một với 28 số liệu thông thường tồn tại trong dữ liệu nguồn và đích.
SOURCE=>TA RGET RECALL F- MEASURE FALSE POSITIVE Apache -> ar3 0.88 0.48 0.25
ar3 -> Apache 0.40 0.53 0.10 CM1 -> Apache 0.54 0.68 0.06 Apache -> CM1 0.76 0.42 0.26 AR3 -> CM1 0.33 0.33 0.10 CM1 -> AR3 0.38 0.43 0.05 EQ -> AR3 0.25 0.40 0.10 AR3 -> EQ 0.58 0.53 0.41 Bảng 3. Kết quả chạy cho trường hợp 1-1
Bảng tiếp theo là các thực nghiệm về dự đoán lỗi liên dự án trong trường hợp một - nhiều. SOURCE=>TARG ET RECALL F- MEASURE FALSE POSITIVE AR3 -> {CM1,PC1,MW1} 0.38 0.36 0.08 {CM1,PC1,MW1} - > AR3 0.50 0.62 0.02
AR4 -> {CM1,PC1,MW1} 0.52 0.31 0.19 {CM1,PC1,MW1} - > AR4 0.35 0.39 0.10 AR5 -> {CM1,PC1,MW1} 0.60 0.30 0.26 {CM1,PC1,MW1} - > AR5 0.50 0.67 0.01
{AR3, AR4, AR5} -> CM1
0.38 0.36 0.10
CM1 -> {AR3, AR4, AR5}
0.42 0.53 0.04
{AR3, AR4, AR5} -> MW1
0.33 0.38 0.05
MW1 -> {AR3, AR4, AR5}
0.33 0.42 0.05
{AR3, AR4, AR5} -> PC1 0.46 0.39 0.08 PC1 -> {AR3, AR4, AR5} 0.33 0.48 0.01 Bảng 4. Kết quả chạy cho trường hợp 1-n
Từ hai bảng trên, có thể thấy được khi lượng dữ liệu đầu vào tăng thì F-Measure cũng sẽ tăng theo, một ví dụ lấy từ trên là:
ar3 => cm1: 0.33 nhưng xuống dưới thì ar3 => {cm1, pc1, mw1} đã tăng lên 0.36
cm1 => ar3: 0.43 nhưng xuống dưới thì {cm1, pc1, mw1} => ar3 đã tăng lên 0.62
Đi kèm với việc này là độ chính xác khi dự đoán sẽ tăng nhẹ khi gộp nhiều dự liệu của các dự án trong cùng công ti làm thành một bộ dữ liệu duy nhất để huấn luyện.