Áp dụng mô hình phân loại và xử lý mất cân bằng dữ liệu để định vị lỗi phần mềm

MỤC LỤC

Các giải pháp hiện tại và hạn chế

Các nghiên cứu hiện tại áp dụng các mô hình mạng nơ-ron hoặc các thuật toán học máy như Learn-2-Rank, Support Vector Machine – SVM,… Hai vấn đề chính được tập trung giải quyết trong hướng nghiên cứu này (1) Trích xuất đặc trưng để có thể phát hiện được các mối liên quan tiềm ẩn giữa bug và source khi ngôn ngữ biểu diễn hai đối tượng này có sự khác biệt khá lớn, (2) Cải tiến độ chính xác của các mô hình bằng cách giải quyết vấn đề mất cân bằng dữ liệu. Đối với vấn đề thứ hai, chưa có nhiều nghiên cứu hiện tại xử lý vấn đề mất cân bằng dữ liệu cho bài toán định vị lỗi phần mềm, tuy nhiên giải pháp chung để giải quyết vấn đề này có thể được chia thành 2 hướng: (i) Xử lý mẫu (sampling) để thay đổi sự mất cân bằng dữ liệu mẫu (ii) Áp dụng thêm các thuật toán học tăng cường hoặc thay đổi kiến trúc mô hình để có thể đưa thêm trong số nhằm định hướng lại mô hình khi phân loại.

Mục tiêu và định hướng giải pháp

Các nghiên cứu hiện nay tập trung vào đề xuất cỏc mụ hỡnh để cú thể kết hợp tốt nhất cỏc đặc trưng này nhằm phỏt hiện rừ hơn mối liên quan tiềm ẩn giữa bug và source. Nghiên cứu của em tập trung vào hướng thứ nhất trong xử lý mất cân bằng dữ liệu và đề xuất mô hình kết hợp tuyến tính các đặc trưng của bug-source.

Đóng góp của đồ án

3 liên quan đến tần suất lỗi, lịch sử sửa lỗi… Cách kết hợp các đặc trưng thì dựa trên hai hướng (i) kết hợp tuyến tính và (ii) kết hợp phi tuyến. Đề xuất xây dựng mô hình SVM và triển khai mô hình cho bài toán định vị lỗi phần mềm trong đó kết hợp nhiều nhóm đặc trưng với nhau để có thể trích xuất hiệu quả mối tương quan của các cặp bug-source.

Bố cục đồ án

Đề xuất chiến lược giải quyết vấn đề mất cân bằng dữ liệu trong bài toán phân loại dựa trên việc thay đổi mẫu. 5 Trong chương này, em sẽ trình bày về hai hướng nghiên cứu liên quan trong bài toán định vị lỗi phần mềm, áp dụng mô hình học không giám sát và mô hình học có giám sát.

Nhóm nghiên cứu liên quan áp dụng mô hình học không giám sát

Các nghiên cứu liên quan cho bài toán định vị lỗi

  • Nhóm nghiên cứu liên quan áp dụng mô hình học có giám sát
    • Nhóm nghiên cứu liên quan đến xử lý mất cân bằng dữ liệu đối với các mô hình phân loại
      • Mô hình SVM

        Sau khi tiền xử lý xong, các số liệu thống kê khác nhau như: tần suất thuật ngữ (TF, số lần thuật ngữ xuất hiện trong một tài liệu nhất định), tần suất tài liệu (DF, số lượng tài liệu trong đó thuật ngữ xuất hiện), IDF (tần suất xuất hiện tài liệu chứa thuật ngữ đó) được thu thập. “thiếu hụt thông tin” (phân loại nhị phân). Các báo cáo lỗi có thể dự đoán được sử dụng cho pha 2. ., 𝑏𝑛} đã được sửa sắp xếp theo thứ tự thời gian theo ngày báo cáo của chúng. Sau đó đưa ra kết quả dự đoán, nếu ít nhất một trong các tệp gây ra lỗi khớp với kết quả dự đoán, thì báo cáo lỗi sẽ được gán nhãn là “có thể dự đoán được”, ngược lại thì báo cáo lỗi đó “thiếu hụt thông tin”. M là số lượng báo cáo lỗi có thể dự đoán được. Mô hình sẽ thực hiện phân loại đa lớp để đưa ra đề xuất những tệp có liên quan. Đối với báo cáo “có thể dự đoán được”, mô hình đề xuất một tập hợp các tệp cần sửa, mỗi tệp có một xác suất tương ứng. Sau khi sắp xếp, k tệp hàng đầu được đề xuất cho nhà phát triển. Đối với các báo cáo “thiếu hụt”, mô hình chỉ tạo ra tập hợp rỗng vì không có dự đoán nào được tiến hành. Từ kết quả thực nghiệm [6] cho thấy, mô hình hai pha có hiệu suất tốt nhất trong số bốn mô hình dự đoán: One-phase, BugScout [1], Usual Suspects và Two-phase. Hơn nữa, mô hình hai giai đoạn sắp xếp hạng các tệp được dự đoán vị trí vừa chính xác hơn, vừa tiết kiệm thời gian cho nhà phát triển. 2.3 Nhóm nghiên cứu liên quan đến xử lý mất cân bằng dữ liệu đối với các mô hình phân loại. Imam và cộng sự đề xuất một chiến lược [23] giúp làm giảm sự mất cân bằng dữ liệu bằng cách tự động điều chỉnh mặt siêu phẳng và giảm độ lệch về lớp thiểu số. Công thức toán học:. 16 Vector trọng số được học trong SVM:. Công thức 1 Vector trọng số trong SVM Hàm quyết định phân loại:. Công thức 2 Hàm decision function trong SVM. Từ đó Imam và cộng sự đề xuất thêm tham số z. Để làm giảm độ lệch của SVM được đào tạo với lớp đa số cho dữ liệu không cân bằng, bài báo giới thiệu trọng số nhân, z, được liên kết với mỗi vectơ hỗ trợ lớp dương. Công thức 3 Hàm cải tiến tham số z-SVM. Điều chỉnh giá trị của tham số z để thay đổi siêu phẳng sao cho Gmean đạt cực đại với dữ liệu đào tạo. Sở dĩ dùng Gmean vì độ đo này trừng phạt nặng với sự nhận biết sai các class thiểu số, từ đó cải thiện tính mất cân bằng dữ liệu. Tham số z được tìm bằng cách tăng z từ từ xuất phát từ 0 đến một giá trị M. Sau đó mô hình SVM mới được sử dụng để phân loại dữ liệu. Giá trị Gmean sẽ tăng từ 0 đến một giá trị cực trị rồi rơi giảm về 0. Từ đó ta tìm được cực trị z* là giá trị z cần tìm. Tang và cộng sự đề xuất một chiến lược Lỗi! Không tìm thấy nguồn tham chiếu. lấy mẫu dưới dựa trên mô hình SVM. Cách tiếp cận: GSVM-RU có thể cải thiện hiệu suất phân loại bằng cách sau:. 1) trích xuất các mẫu thông tin cần thiết để phân loại. 2) loại bỏ một lượng lớn các mẫu dư thừa, hoặc thậm chí nhiễu.

        Hình 1 Mô hình đề xuất của Gharibi và cộng sự
        Hình 1 Mô hình đề xuất của Gharibi và cộng sự

        Giải pháp đề xuất

        Giai đoạn tiền xử lý

          Nomalize là việc loại bỏ các dấu câu, thực hiện việc chuẩn hóa các chữ cái về cùng một dạng (viết hoa hoặc viết thường), chia văn bản thành các đơn vị riêng lẻ. Quá trình tiền xử lý cho một lỗi báo cáo cũng gần tương tự như file nguồn, chỉ khác là với bug file thì được loại bỏ tất cả stack traces trước khi làm các bước như trên.

          Đánh giá mô hình

            Ở đây em áp dụng phương pháp này với lớp đa số (lớp chiếm số lượng lớn), để loại bỏ những điểm dữ liệu dư thừa trong việc đào tạo. Kỹ thuật Undersampling sử dụng ở đây là RandomUnderSampler. Random sampling là một kỹ thuật đơn giản bỏ qua ngẫu nhiên các điểm dữ liệu từ lớp đa số cho đến khi đạt được sự cân bằng mong muốn giữa các lớp trong dữ liệu đào tạo. Thuật toán yêu cầu đầu vào là dữ liệu đào tạo của cả lớp thiểu số và lớp đa số, đầu ra là một cặp dữ liệu mà số lượng phần tử của lớp đa số bằng với kích thước của lớp thiểu số. 35 Trái ngược với undersampling, nghĩa là thay vì giảm số lượng của lớp chiếm phần đa, oversampling sẽ sinh dữ liệu giả, làm tăng số lượng cho lớp thiểu số. Kỹ thuật em áp dụng ở đây là Smote. Smote là một phương pháp dựa vào những điểm dữ liệu sẵn có để tạo ra những hàng xóm có liên quan với chúng, dựa vào thuật toán K-means để tạo dữ liệu tổng hợp. Khoảng cách được sử dụng trong K-means đó là khoảng cách Euclid. Đầu vào của Smote là tập hợp các điểm dữ liệu của lớp thiểu số. Giá trị tham số truyền vào là biến K và N. K là số lần muốn tăng kích thước, N là số hàng xóm lấy ngẫu nhiên. Đầu ra là một tập hợp các điểm dữ liệu mới sau khi được lấy mẫu quá mức. c) Phương pháp giải quyết vấn đề mất cân bằng dữ liệu. 36 Chương 4 em đã trình bày chi tiết về cách mô hình SVMBugRanking hoạt động, Chương 5 em sẽ trình bày tập dữ liệu gồm 6 dự án được mô hình sử dụng và những kết quả thực nghiệm trên 3 kịch bản: (i) so sánh hiệu suất của mô hình với các cách tiếp cận khác như BugLocator và Nạve Bayes, (ii) những đặc trưng cĩ tác động như thế nào đối với mơ hình, (iii) so sánh kết quả của mô hình chưa được cải thiện với mô hình sau khi áp dụng.

            Đánh giá thực nghiệm

            Kết quả thực nghiệm

            42 So sánh giữa 2 phương pháp cải tiến thì, SVMBugRanking kết hợp với Smote và RandomUnderSampler cho kết quả tốt hơn ở 2 dự án quy mô nhỏ Tomcat và AspectJ, trong khi SVMBugRanking chỉ với RandomUnderSampler cho kết quả cao hơn ở 4 dự án còn lại, những dự án mà số lượng báo cáo lỗi và tệp nguồn lớn. Bài toán giống như một hệ thống gợi ý đưa ra các đề xuất tệp mã nguồn có liên quan nhất với báo cáo lỗi cho lập trình viên, qua đó làm giảm không gian tìm kiếm và tiết kiệm thời gian cho những người lập trình.

            Hình 14: Top1 trên từng đặc trưng trên dự án Tomcat
            Hình 14: Top1 trên từng đặc trưng trên dự án Tomcat

            Hướng phát triển trong tương lai

            Bài toán định vị lỗi phần mềm ra đời nhắm giúp các lập trình viên tiết kiệm thời gian và công sức trong việc xác định nơi nào để bắt đầu bắt tay vào sửa lỗi. Đối với những dự án có số lượng báo cáo lỗi đủ tốt thì việc tạo dữ liệu giả cho lớp thiểu số có thể làm tăng số lượng điểm nhiễu đáng kể, từ đó làm giảm hiệu suất phân loại của SVM.