Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
1,06 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN MẬU HẢI DỰ ĐOÁN LỖI PHẦN MỀM DỰA TRÊN ĐỘ ĐO MÃ NGUỒN SỬ DỤNG KỸ THUẬT HỌC KẾT HỢP Chun ngành: KHOA HỌC MÁY TÍNH Mã số: 8480101 TĨM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Đà Nẵng – Năm 2019 Cơng trình hồn thành TRƯỜNG ĐẠI HỌC BÁCH KHOA Người hướng dẫn khoa học: TS Lê Thị Mỹ Hạnh Phản biện 1: TS Huỳnh Hữu Hưng Phản biện 2: TS Hoàng Văn Dũng Luận văn bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ ngành khoa học máy tính họp Trường Đại học Bách khoa vào ngày 25 tháng 08 năm 2019 Có thể tìm hiểu luận văn tại: - Trung tâm Học liệu, Đại học Đà Nẵng Trường Đại học Bách khoa - Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách khoa - ĐHĐN MỤC LỤC TỔNG QUAN CHƯƠNG I: ĐỘ ĐO MÃ NGUỒN VÀ BÀI TOÁN DỰ ĐOÁN LỖI 1.1 Quản lý lỗi phần mềm 1.2 Hướng tiếp cận dự đoán lỗi phần mềm 1.3 Độ đo mã nguồn CHƯƠNG II: CÁC KỸ THUẬT HỌC MÁY .8 2.1 Học có giám sát 2.2 Học khơng có giám sát 2.3 Các yếu tố cần xem xét chọn áp dụng thuật toán học máy 10 2.4 Thuật toán Cây định 10 CHƯƠNG III: DỰ ĐOÁN LỖI PHẦN MỀM DỰA TRÊN HỌC MÁY.11 3.1 SDP dựa học máy 11 3.2 Tiền xử lý liệu 11 3.3 Kỹ thuật Ensemble learning 11 3.4 Các thuật toán Ensembles learning cho SDP 11 3.5 Đánh giá phương pháp dự đoán 13 CHƯƠNG IV: ĐÁNH GIÁ THỰC NGHIỆM CÁC PHƯƠNG PHÁP ENSEMBLE LEARNING 15 4.1 Tập liệu dự đoán lỗi phần mềm 15 4.2 Xây dựng mô hình 15 4.3 Tiêu chí đánh giá hiệu suất số liệu phần mềm 17 4.4 Kết thực nghiệm 17 4.5 Xây dựng website hỗ trợ dự đoán lỗi 21 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 23 TỔNG QUAN Đặt vấn đề Dự đoán lỗi phần mềm (Software Defect Prediction) đóng vai trò quan trọng hoạt động nghiên cứu lĩnh vực kỹ thuật phần mềm Lỗi phần mềm lỗi, lỗ hổng, sai sót, cố sai lầm tạo phần mềm gây kết sai khác mong đợi Lỗi xảy giai đoạn trình phát triển phần mềm Các nhà sản xuất phần mềm cố gắng tập trung vào chất lượng phần mềm, đặc biệt giai đoạn đầu trình phát triển Mục tiêu để xác định sửa chữa lỗi giai đoạn đầu vòng đời phát triển phần mềm (SDLC) Để cải thiện chất lượng phần mềm, kỹ thuật Học máy áp dụng để xây dựng dự đoán lỗi thành phần phần mềm Phát lỗi tiềm ẩn phần mềm có ý nghĩa lớn, giúp cải thiện thời gian, chi phí nguồn lực Mục tiêu nội dung nghiên cứu Nội dung nghiên cứu bao gồm tất vấn đề có liên quan chất lỗi, phương pháp dự đoán lỗi phần mềm tại, kỹ thuật phân tích xử lý số liệu phần mềm, Nền tảng học máy, thuật toán học máy kỹ thuật ensemble learning dùng để dự đoán lỗi tiến tới xây dựng cơng cụ dự đốn lỗi dựa học máy Đối tượng phạm vi nghiên cứu Phạm vi dự đoám lỗi phần mềm rộng đòi hỏi đầu tư nhiều nguồn lực thời gian Luận văn sâu tìm hiểu lý thyết phân tích dự đốn lựa chọn dự đoán lỗi file phần mềm Java Phương pháp nghiên cứu Dựa lý thuyết phân tích thống kê, tác giả tìm hiểu sở lý thuyết học máy toán dự đốn tìm hiểu thuật tốn ứng dụng tương ứng dựa quy trình kỹ thuật dự đốn lỗi phần mềm Từ sở lý thuyết đó, tiến hành lựa chọn xây dựng mơ hình dựa thuật tốn dự đốn lỗi lập trình ứng dụng ngôn ngữ Python, thư viện sklearn Kết đánh giá thơng qua phép đo hiệu suất mơ hình, thời gian huấn luyện mơ hình cụ thể Ý nghĩa khoa học thực tiễn - Áp dụng phân tích dự đốn đời sống - Áp dụng kỹ thuật học máy thuật toán - Đóng góp kết nghiên cứu thực nghiệm - Tạo công cụ để giúp nhà phát triển - Giúp Cơng ty phần mền kiểm sốt sản phẩm Cấu trúc luận văn Luận văn trình bày bao gồm 04 chương, với nội dung cụ thể sau: Chương trình bày lý thuyết độ đo mã nguồn toán dự đoán lỗi Chương II trình bày tổng quan kỹ thuật học máy, tập trung vào kỹ thuật học có giám sát Chương III trình bày tổng quan phương pháp dự đoán lỗi phần mềm dựa học máy với vấn đề liên quan Chương IV trình bày kết toán dự đoán lỗi phần mềm kỹ thuật học kết hợp; Kết đánh giá dựa phép đo F1, ROC, AUC thời gian huấn luyện để đánh giá mơ hình; tạo ứng dụng website chọn file Java kỹ thuật ensembles để dự đoán Phần cuối kết luận kết đạt hướng phát triển luận văn CHƯƠNG I: ĐỘ ĐO MÃ NGUỒN VÀ BÀI TOÁN DỰ ĐOÁN LỖI Lỗi phần mềm lỗi, sai sót, nhầm lẫn, cố thiếu xác phần mềm khiến tạo kết sai cố không lường trước Lỗi thuộc tính cố hữu hệ thống Chúng xuất từ khâu thiết kế khâu sản xuất mơi trường bên ngồi Lỗi phần mềm lỗi lập trình gây hiệu khác so với dự đốn Phần lớn lỗi từ mã nguồn thiết kế, số số từ mã khơng xác tạo từ trình biên dịch Đối với nhà phát triển phần mềm khách hàng, lỗi phần mềm vấn đề nguy hiểm Các lỗi phần mềm không làm giảm chất lượng phần mềm, tăng chi phí mà làm trì hỗn tiến độ phát triển Dự đoán lỗi phần mềm đề xuất nhằm để giải rắc rối Để dự đoán lỗi phần mềm (Software Defect Prediction – SDP) hiệu phải từ q trình kiểm thử hiệu phần mềm trực tiếp phân bổ tài nguyên Để phần mềm phát triển đạt chất lượng, lỗi phần mềm phải phát sửa lỗi giai đoạn đầu chu kỳ phát triển phần mềm (Software Development Life Cycle – SDLC) 1.1 Quản lý lỗi phần mềm Mục đích việc quản lý lỗi phần mềm để làm tăng chất lượng phần mềm cách xác định sửa chữa lỗi giai đoạn sớm SDLC Các giai đoạn khác SDLC bao gồm thu thập yêu cầu, phân tích, thiết kế, viết mã, thử nghiệm, triển khai giai đoạn cuối cơng việc bảo trì Các giai đoạn việc kiểm sốt lỗi bao gồm: ✓ Xác định lỗi; ✓ Phân loại lỗi; ✓ Phân tích lỗi; ✓ Dự đốn lỗi; ✓ Loại bỏ lỗi 1.2 Hướng tiếp cận dự đoán lỗi phần mềm Qua việc nghiên cứu kỹ thuật dự đoán áp dụng thử nghiệm, nhận thấy có ba phương pháp chủ yếu thường sử dụng: Dự đoán lỗi bên dự án (With-in Project Defect Prediction - WPDP) Dự đoán lỗi liên dự án (Cross Project Defect Prediction - CPDP), liên quan đến trường hợp: ✓ CPDP tập liệu đồng ✓ CPDP tập liệu không đồng 1.3 Độ đo mã nguồn Độ đo phần mềm thành phần thuộc tính định lượng đếm mà chúng dùng để đo lường dự đốn chất lượng phần mềm Một độ đo số mơ tả tính cụ thể phần mềm Ba tham số dùng để đo lường mơ tả Hình Hình Các thơng số khác độ đo công nghệ phần mềm Mục đích độ đo phần mềm là: • Đo lường kích thước, chất lượng, lỗi phần mềm • Đánh giá mức độ phức tạp • Xác định ngày phiên • Ước lượng tài ngun, chi phí tiến độ Độ đo mã tĩnh Độ đo mã tĩnh số liệu trích xuất trực tiếp từ mã nguồn, chẳng hạn số dòng mã (LOC) độ phức tạp theo chu kỳ Source Lines of Code (SLOC) nhóm số liệu tập trung vào số lượng dòng mã tệp mã nguồn SLOC chứa số liệu khác nhau: LOC vật lý (SLOCP), tổng số dòng mã LOC, dòng trống (BLOC), dòng comment (CLOC), dòng có chứa comment (SLOC-L) dòng lệnh thực thi Lượng phức tạp chu trình (Cyclomatic Complexity Number - CCN) Độ đo hướng đối tượng: Bộ số liệu hướng đối tượng (OO) gồm có số liệu Weighted Methods per Class (WMC), Depth of Inheritance Tree (DIT), Number of Children (NOC) Coupling Between Objects (CBO), Response for Class (RFC), Lack of Cohesion in Methods (LCOM) Các số liệu OO bổ sung gồm Afferent couplings (Ca), Number of Public Methods (NPM) QMOOD mơ hình đánh giá chất lượng phần mềm hướng đối tượng Các số liệu dùng để đánh giá tác động đến thuộc tính chất lượng phần mềm SIZE, NOC, DIT, DAM, CBO, CAM, MOA, MFA, NOP, RFC, WMPC Do vậy, số liệu QMOOD áp dụng phạm vi nghiên cứu để hỗ trợ việc dự đoán chất lượng phần mềm CHƯƠNG II: CÁC KỸ THUẬT HỌC MÁY Để nâng cao hiệu chất lượng phát triển phần mềm dự đoán lỗi phần mềm, kỹ thuật khai phá liệu khác áp dụng thuật tốn khác để giải vấn đề Các kỹ thuật SDP sử dụng kỹ thuật học phổ biến thuật tốn học máy mơ tả Hình Hình Thuật toán học máy Các kỹ thuật khai phá liệu khác áp dụng để dự đoán lỗi phần mềm Học máy chia làm loại: 12 ▪ Các phương pháp tuần tự: lcác học sở xếp ▪ Các phương pháp song song: Các học sở xếp song song Bagging Bagging (viết tắt tập hợp bootstrap) cách để giảm phương sai tính trung bình kết hợp nhiều ước tính trở thành ước tính Bagging sử dụng lấy mẫu bootstrap để lấy tập liệu cho việc huấn luyện học sở Tập hợp đầu học sở Bagging sử dụng bỏ phiếu cho kỹ thuật phân loại trung bình cho kỹ thuật hồi quy Boosting Boosting đề cập đến họ thuật tốn có khả chuyển đổi học yếu thành học mạnh Nguyên tắc việc thúc đẩy (boosting) để khớp với chuỗi mơ hình học yếu, tốt chút so với đoán ngẫu nhiên Gradient Boosting Tree Gradient Boosting Tree dạng tổng quát Boosting, áp dụng sở phương pháp tùy chỉnh hàm mát Nó dùng cho hai vấn đề hồi quy phân loại Gradient Boosting xây dựng mơ hình theo cách 𝐹𝑚 (𝑥) = 𝐹𝑚−1 (𝑥) + 𝛾𝑚 ℎ𝑚 (𝑥) (5) Tại giai đoạn, định hm(x) chọn để tối thiểu hóa hàm mát L cho mơ hình Fm-1(x): Các thuật tốn hồi quy phân loại khác sử dụng kiểu hàm mát tương ứng 𝐹𝑚 (𝑥) = 𝐹𝑚−1 (𝑥) + 𝑎𝑟𝑔𝑢𝑚𝑖𝑛ℎ ∑𝑛𝑖=1 𝐿(𝑦𝑖 , 𝐹𝑚−1 (𝑥𝑖 ) + ℎ(𝑥𝑖 )) (6) 13 3.4.1 Stacking Xếp chồng (Stacking) kỹ thuật học máy cách kết hợp đa mơ hình phân loại hồi quy thơng qua phân loại tổng hợp (metaclassifier) (meta-regressor) Các mơ hình cấp sở huấn luyện dựa đào tạo hồn chỉnh, sau mơ hình Meta đào tạo đầu mơ hình cấp sở giống đặc trưng 3.5 Đánh giá phương pháp dự đoán Dựa vào kết xác thực chéo, trích xuất phép đo để sử dụng đánh giá phương pháp dự đoán việc lựa chọn phép đo đánh giá dựa nghiên cứu trước phương pháp xếp hạng tốt phục vụ cho việc đánh giá mơ hình dự đốn lỗi 3.5.1 Xác thực chéo k-folds (K-folds cross-validation) Xác thực chéo phương pháp dùng để đánh giá thuật toán học máy Quy trình đánh giá, liệu chia thành hai phân đoạn chính: phân đoạn dùng để đào tạo mơ hình phân đoạn khác dùng để kiểm tra phân loại mơ hình Xác thực chéo phổ biến k-Fold 3.5.2 Ma trận nhầm lẫn (Confusion Matrix) Dữ liệu thu thập ma trận dùng để tính tốn đánh giá số đồ thị thông qua ma trận nhầm lẫn 3.5.3 Precision Tỷ lệ xác (Precision) tỷ lệ thể phân loại xác từ tất thể phân loại lớp 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛𝐹𝑎𝑢𝑙𝑡𝑦 = 𝐶𝑜𝑟𝑟𝑒𝑐𝑡𝑙𝑦_𝐹𝑎𝑢𝑙𝑡𝑦_𝐶𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑒𝑑_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 𝑂𝑣𝑒𝑟𝑎𝑙𝑙_𝐹𝑎𝑢𝑙𝑡𝑦_𝐶𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑒𝑑_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 (7) Tương tự, trường hợp khơng dễ bị lỗi (Non-Faulty), ta có (8) 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛𝑁𝑜𝑛_𝐹𝑎𝑢𝑙𝑡𝑦 = 𝐶𝑜𝑟𝑟𝑒𝑐𝑡𝑙𝑙𝑦_𝑁𝑜𝑛−𝐹𝑎𝑢𝑙𝑡𝑦_𝐶𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑒𝑑_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 𝑂𝑣𝑒𝑟𝑎𝑙𝑙_𝑁𝑜𝑛−𝐹𝑎𝑢𝑙𝑡𝑦_𝐶𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑒𝑑_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 (8) 14 3.5.4 Recall Recall (còn gọi xác suất phát - PD) tỷ lệ trường hợp phân loại xác từ tất thể lớp đó: 𝑅𝑒𝑐𝑎𝑙𝑙𝐹𝑎𝑢𝑙𝑡𝑦 = 𝐶𝑜𝑟𝑟𝑒𝑐𝑡𝑙𝑦_𝐹𝑎𝑢𝑙𝑡𝑦_𝐶𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑒𝑑_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 𝑂𝑣𝑒𝑟𝑎𝑙𝑙_𝐹𝑎𝑢𝑙𝑡𝑦_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 (9) Tương tự, ta có cơng thức (10) tính giá trị dự đốn khơng dễ bị lỗi: 𝑅𝑒𝑐𝑎𝑙𝑙𝑁𝑜𝑛−𝐹𝑎𝑢𝑙𝑡𝑦 = 𝐶𝑜𝑟𝑟𝑒𝑐𝑡𝑙𝑦_𝑁𝑜𝑛𝑒−𝐹𝑎𝑢𝑙𝑡𝑦_𝐶𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑒𝑑_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 𝑂𝑣𝑒𝑟𝑎𝑙𝑙_𝑁𝑜𝑛−𝐹𝑎𝑢𝑙𝑡𝑦_𝐼𝑛𝑠𝑡𝑎𝑛𝑐𝑒𝑠 (10) 3.5.5 F-measure F-measure kết hợp hai phép đo Recall Precision (công thức11), bên cạnh bao gồm yếu tố β dùng để điều chỉnh trọng số cho Recall F − measure = (𝛽 +1) 𝑥 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 𝑥 𝑅𝑒𝑐𝑎𝑙𝑙 𝛽 𝑥 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 𝑥 𝑅𝑒𝑐𝑎𝑙𝑙 (11) β thiết lập trọng số Precision Recall Trường hợp khác, β lớn biểu thị trọng số Recall lớn 3.5.6 ROC Đường cong ROC (Receiver Operation Charactitics) mô tả mối quan hệ TP FP khái quát đồ thị nhằm để giải thích trực quan so với giá trị phép đo 15 CHƯƠNG IV: ĐÁNH GIÁ THỰC NGHIỆM CÁC PHƯƠNG PHÁP ENSEMBLE LEARNING Xây dựng mơ hình dự đóan lựa chọn thuật tốn viết ngơn ngữ Python, sử dụng thư viện Sklearn 4.1 Tập liệu dự đoán lỗi phần mềm Phạm vi luận văn này, tơi sử dụng tập liệu dự đốn lỗi Promise cấp độ tập tin theo tiêu chí hướng lớp sử dụng cơng cụ CKJM để trích xuất số liệu file mã nguồn java dự đốn lỗi thơng qua độ đo kỹ thuật ensemble learning 4.2 Xây dựng mơ hình Để thực nghiệm thuật toán sử dụng kỹ thuật ensemble learning, tiến hành cài đặt thử nghiệm dựa kỹ thuật Bagging trình bày hình sau (đối với thuật toán Random Forest Bagging) Hình Mơ hình Bagging cho thuật tốn Random Forest Bagging 16 Mơ hình sau sử dụng kỹ thuật Boosting thuật toán Adaboost, Gradient Boosting Tree Hình Mơ hình Boosting cho thuật tốn AdaBoost Gradient Boosting Mơ hình sau sử dụng kỹ thuật stacking dùng thuật toán Boosting, Bagging định làm học sở Hình Mơ hình stacking 17 4.3 Tiêu chí đánh giá hiệu suất số liệu phần mềm Để đánh giá hiệu suất mơ hình, sử dụng phép đo hiệu suất xác định thời gian huấn luyện cho mơ hình sử dụng kỹ thuật ensemble learning sau: - F1 - AUC - Train time (thời gian huấn luyện) 4.4 Kết thực nghiệm Cơng cụ đánh giá thuật tốn dự đoán lỗi phần mềm phạm vi luận văn này, sử dụng xác thực chéo 5-fold Sau kết đánh giá ban đầu thuật toán ensemble learning toán dự đoán lỗi Các thuật tốn đánh gía bao gồm thuật tốn Decision Tree, thuật toán Parallel Ensemble: Random Forest, Bagging thuật toán Boosting: Adaboost, Gradient Boosting Tree Những thuật toán cài đặt thư viện sklearn sử dụng lại luận văn Để đảm bảo tính cơng bằng, thơng số cài đặt thuật tốn thơng số mặc định quy định sklearn Số định thuật toán ensemble learning quy định 100 Thuật toán 5-fold cross validation sử dụng để hạn chế overfitting thuật tốn Kết đánh giá trình bày Bảng Bảng Kết thuật toán học kết hợp Cây định Ensembles Learning Thuật toán Parallel ensemble F1 AUC Train time (s) Decision Tree 0.3673 ± 0.0908 0.4622 ± 0.0593 0.07927±0.0024 Bagging 0.3924 ± 0.1008 0.4585 ± 0.0934 5.3352 ± 0.2166 18 Boosting Random Forest 0.3799 ± 0.0972 0.4600 ± 0.0847 1.3946 ± 0.0449 Adaboost 0.4159 ± 0.0762 0.5791 ± 0.0281 0.8955 ± 0.0674 Gradient Boosting 0.4187 ± 0.0741 0.5663 ± 0.0368 0.9312 ± 0.1076 Dựa vào Bảng 2, thấy thuật toán Boosting hiệu thuật toán Bagging toán dự đoán lỗi hướng lớp Trong thuật toán Boosting, thuật toán Adaboost Gradient Boosting có hiệu tương đương (F1 ~0.42, AUC ~ 0.579) nhiên thuật tốn Adaboost có thời gian huấn luyện nhanh so với thuật toán Gradient Boosting (Adaboost: 0.895, Gradient Boosting: 0.931) Trong thuật toán Parallel ensemble, thuật tốn Random Forest có kết nhiều so với Bagging (F1 0.37 F1 0.39) Cả bốn thuật toán học kết hợp tốt thuật toán Cây định, chúng cần nhiều thời gian để huấn luyện Để đánh giá độ hiệu thuật toán Stacking, cặp thuật toán học kết hợp được kết hợp đánh giá độ hiệu tập liệu hướng lớp Kết AUC trình bày Bảng 3: Bảng Kết AUC thuật toán Stacking Meta learner Base learners Bagging Random Forest Adaboost Gradient Boosting Bagging Random Forest 0.5015 ± 0.0630 0.5015 ± 0.0630 0.5018 ± 0.0632 0.5015 ± 0.0630 Bagging Adaboost 0.5436 ± 0.0383 0.5436 ± 0.0383 0.5436 ± 0.0383 0.5436 ± 0.0383 19 Bagging Gradient Boosting 0.5369 ± 0.0464 0.5369 ± 0.0464 0.5381 ± 0.0475 0.5376 ± 0.0472 Random Forest – Adaboost 0.5417 ± 0.0355 0.5417 ± 0.0355 0.5417 ± 0.0355 0.5417 ± 0.0355 Random Forest - Gradient Boosting 0.5376 ± 0.0432 0.5376 ± 0.0432 0.5375 ± 0.0432 0.5376 ± 0.0432 Adaboost Gradient Boosting 0.5683 ± 0.0232 0.5683 ± 0.0232 0.5683 ± 0.0232 0.5683 ± 0.0232 Bagging Random Forest - Adaboost Gradient Boosting 0.5584 ± 0.0211 0.5585 ± 0.0211 0.5585 ± 0.0211 0.5586 ± 0.0211 Thơng qua kết bảng 3, thấy việc kết hợp thuật toán ensemble learning không cải thiện nhiều hiệu suất cho việc đoán lỗi hướng lớp Kết tốt thu AUC = 0.5683, khơng tốt việc sử dụng thuật tốn Boosting Ngồi ra, kết thu việc kết hợp thuật toán học kết hợp tương đồng Bởi thuật toán học kết hợp tương đồng (đều sử dụng Decision Tree làm weak learners), kết thu khơng có nhiều khác biệt vậy, kết luận việc kết hợp thuật toán mức sở sử dụng để huấn luyện cho Stacking cấp hai không cải thiện nhiều hiệu Một điều đáng lưu ý 20 sử dụng Stacking ta phải tiêu tốn tài nguyên (chi phí lớn thời gian) huấn luyện mơ hình phức tạp Hình Đường cong ROC ứng với thuật tốn học kết hợp Kết thuật toán ensembles thể trực quan đồ thị Hình Dựa vào ROC kết AUC ta kết luận thuật toán Boosting hiệu thuật toán Bagging toán dự đoán lỗi hướng lớp Trong nhóm thuật tốn Boosting ta có thuật toán AdaBoost tốt thuật toán Gradient Boosting Adaboost thuật toán tốt bốn loại thuật toán học kết hợp với F1 0.4273 AUC 0.586 Thuật tốn AdaBoost có độ xác cao hơn, tiếp đến Gradient Boosting, Random Forest Bagging tương đương cuối Cây định Tuy nhiên, thời gian huấn luyện thuật toán chậm thuật toán Cây định tiếp Random Forest, thời gian huấn luyện dài Gradient Boosting sau Bagging 21 4.5 Xây dựng website hỗ trợ dự đoán lỗi Xuất phát từ yêu cầu thực tế, nhà phát triển cần cơng cụ để thực việc dự đốn lỗi phục vụ cho nhóm lập trình nhằm phát sớm lỗi phần mềm, triển khai ứng dụng hệ thống server xây dựng website (Hình 7) để thực đánh giá sở tạo ứng dụng hỗ trợ cho đơn vị khai thác sử dụng Hình Website ứng dụng dự đoán lỗi phần mềm Kết dự đoán thực dựa 22 tiêu chí số liệu hướng lớp kết cuối tổng hợp thơng qua thuật tốn học kết hợp thể có lỗi hay khơng xảy lỗi (thể hình 8) Kết cho thấy thuật toán Boosting cho kết tốt việc dự đốn lỗi hướng lớp Ngồi ra, việc kết hợp thuật tốn học kết hợp (stacking) khơng mang lại hiệu toán luận văn Một website xây dựng giúp nhà lập trình đưa mã nguồn lên dự đốn lỗi tự động Trong thời gian tới, thuật toán khác (như Naive Bayes, Logistic Regression, SVM, k-NN,…) xem xét để sử dụng đánh giá 22 Hình Kết dự đoán ứng với kỹ thuật học lựa chọn thuật toán Stacking cho toán dự đốn lỗi hướng lớp Ngồi ra, thuật tốn học kết hợp hiệu (như Extreme Gradient Boosting) cài đặt đánh giá toán dự đốn lỗi hướng lớp với mục đích để cải thiện hiệu suất độ tin cậy toán dự đốn Bên cạnh đó, tơi xây dựng lại giao diện website hỗ trợ đoán lỗi chuyên nghiệp, cập nhật yếu tố tham số tùy chỉnh thuật toán giao diện, đồng thời thiết kế lại tạo cho người dùng cảm giác thân thiện dễ sử dụng 23 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Luận văn giới thiệu kỹ thuật dự đoán lỗi phần mềm (SDP) áp dụng phương pháp Ensembles learning việc sử dụng thuật toán học máy phổ biến, đánh giá trội mạnh mẽ Phương pháp Ensembles learning dự đoán kỹ thuật đặc biệt quan trọng hữu ích lĩnh vực kỹ thuật phần mềm Dựa kết cơng trình nghiên cứu phát triển cơng nghệ trí tuệ nhân tạo, phương pháp học máy mà đặc biệt học kỹ thuật học có giám sát thuật toán áp dụng kỹ thuật Ensembles learning, tơi thực tìm hiểu sâu nghiên cứu theo trình tự kế thừa từ xử lý, phân tích trình bày kỹ thuật Thơng qua kết quả, phương pháp đánh giá nêu nhận xét Để kiểm chứng trình tìm hiểu lý thuyết vận dụng kiến thức lĩnh vực khoa học máy tính với định hướng Giáo viên hướng dẫn, tơi tìm hiểu kỹ thuật học Ensembles quan trọng sử dụng tảng Cây định với biến thể nó, Random Forest, Bagging, Boosting, AdaBoost, Gradient Boosting Tree Các thuật toán khai thác thư viện sklearn cài đặt để thực Ứng dụng sử dụng thuật toán thể giao diện Web-Server nhằm giúp cho người dùng có thêm cơng cụ để dự đốn lỗi phần mềm Thơng qua kết đánh giá hiệu suất thuật toán, so sánh kết dự đoán file viết Java, thực kiểm thử nhận định ưu điểm nhược điểm thuật toán việc giúp cải thiện đáng kể thời gian, nâng cao chất lượng phần mềm 24 Trong thời gian tới, tơi cố gắng sâu tìm hiểu chi tiết kỹ thuật Stacking dựa nhiều loại hình thuật tốn (như : SVN, Naive Bayer, K-NN,…) để cải tiến, nâng cao hiệu ứng dụng dự đoán lỗi phần mềm, đồng thời hy vọng phiên sau cải thiện hiệu suất tổng thể đạt độ xác tin cậy cao nhờ kết hợp ưu điểm thuật tốn tham gia vào mơ hình stacking để đưa kết cuối Ngồi ra, tơi tiếp tục hoàn thiện lại ứng dung, đặc biệt đưa thêm lựa chọn tham số tùy biến theo mơ hình thiết kế giao diện thân thiện với người dùng Trong thời gian ngắn để tìm hiểu, mặt khác nguồn tài liệu tham khảo chủ yếu tiếng Anh, khả Anh ngữ tơi có phần hạn chế Do vậy, chắn nội dung đồ án nhiều tồn tại, cần nghiên cứu sâu Bản thân mong nhận bảo thầy cô giáo góp ý bạn đồng nghiệp Tôi xin chân thành cám ơn Thầy, Cô giáo Trường Đại học Đà Nẵng tạo điều kiện trang bị cho kiến thức thời gian đào tạo theo chương trình Thạc sỹ Cám ơn Thầy cô giáo Khoa Công nghệ thông tin – Trường Bách khoa Đà Nẵng, Cô giáo TS Lê Thị Mỹ Hạnh tạo điều kiện giúp đỡ, định hướng đề tài, hướng dẫn góp ý để tơi thực hồn thành Luận văn ! Học viên: Nguyễn Mậu Hải 25 26 ... Đại học Bách khoa - ĐHĐN MỤC LỤC TỔNG QUAN CHƯƠNG I: ĐỘ ĐO MÃ NGUỒN VÀ BÀI TOÁN DỰ ĐO N LỖI 1.1 Quản lý lỗi phần mềm 1.2 Hướng tiếp cận dự đo n lỗi phần mềm 1.3 Độ đo mã. .. chất lỗi, phương pháp dự đo n lỗi phần mềm tại, kỹ thuật phân tích xử lý số liệu phần mềm, Nền tảng học máy, thuật toán học máy kỹ thuật ensemble learning dùng để dự đo n lỗi tiến tới xây dựng... dụng Hình Website ứng dụng dự đốn lỗi phần mềm Kết dự đo n thực dựa 22 tiêu chí số liệu hướng lớp kết cuối tổng hợp thơng qua thuật tốn học kết hợp thể có lỗi hay khơng xảy lỗi (thể hình 8) Kết