Dự đoán lỗi phần mềm là một nhiệm vụ quan trọng phát triển phần mềm giúp giảm thời gian
và tiết kiệm chi phí trong việc bảo trì phần mềm. Hiện nay, việc kết hợp nhiều kĩ thuật học máy được
áp dụng vào bài toán dự đoán lỗi đã được nghiên cứu để nâng cao chất lượng phần mềm. Trong đó mô
hình máy học kết hợp – ensemble learning đã trở thành một hướng nghiên cứu nổi bật trong lĩnh vực
dự đoán lỗi. Trong bài báo này, chúng tôi nghiên cứu và phân tích các thuật toán trong mô hình học
máy kết hợp được sử dụng trong dự đoán lỗi phần mềm như Bagging, AdaBoost, Vote, Stacking và so
sánh hiệu quả của chúng so với một thuật toán đơn được lựa chọn xem xét là NaiveBayes. Thực nghiệm
được tiến hành dựa trên các tập dữ liệu khai thác từ kho dữ liệu NASA’s Metric Data Program gồm các
tập CM1, PC1, KC1, KC2 và JM1. Từ kết quả thực nghiệm cho thấy các thuật toán trong mô hình máy
học kết hợp cho đạt hiệu quả cao hơn so với sử dụng một thuật toán đơn như NaiveBayes trong dự đoán
lỗi. Ngoài ra, Vote thì cho kết quả tốt hơn so với các thuật toán còn lại trong mô hình máy học kết hợp.
7 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 510 | Lượt tải: 0
Nội dung tài liệu Nghiên cứu mô hình máy học kết hợp trong dự đoán đoán lỗi phần mềm, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
Nghiên Cứu Mô Hình Máy Học Kết Hợp Trong Dự Đoán
Đoán Lỗi Phần Mềm
Hà Thị Minh Phương1, Phan Thị Quỳnh Hương2
1,2 Trường ĐH Công nghệ Thông tin và Truyền thông Việt Hàn, Đại học Đà Nẵng
{htmphuong, ptqhuong}@vku.udn.vn
Tóm tắt. Dự đoán lỗi phần mềm là một nhiệm vụ quan trọng phát triển phần mềm giúp giảm thời gian
và tiết kiệm chi phí trong việc bảo trì phần mềm. Hiện nay, việc kết hợp nhiều kĩ thuật học máy được
áp dụng vào bài toán dự đoán lỗi đã được nghiên cứu để nâng cao chất lượng phần mềm. Trong đó mô
hình máy học kết hợp – ensemble learning đã trở thành một hướng nghiên cứu nổi bật trong lĩnh vực
dự đoán lỗi. Trong bài báo này, chúng tôi nghiên cứu và phân tích các thuật toán trong mô hình học
máy kết hợp được sử dụng trong dự đoán lỗi phần mềm như Bagging, AdaBoost, Vote, Stacking và so
sánh hiệu quả của chúng so với một thuật toán đơn được lựa chọn xem xét là NaiveBayes. Thực nghiệm
được tiến hành dựa trên các tập dữ liệu khai thác từ kho dữ liệu NASA’s Metric Data Program gồm các
tập CM1, PC1, KC1, KC2 và JM1. Từ kết quả thực nghiệm cho thấy các thuật toán trong mô hình máy
học kết hợp cho đạt hiệu quả cao hơn so với sử dụng một thuật toán đơn như NaiveBayes trong dự đoán
lỗi. Ngoài ra, Vote thì cho kết quả tốt hơn so với các thuật toán còn lại trong mô hình máy học kết hợp.
Từ khóa: mô hình học máy kết hợp; bagging, boosting; stacking; adaboost; vote.
Abstract - Software fault prediction plays an important role in software engineering that reduces
maintenance, development time, effort, and money. The combination of various machine learning tech-
niques has been researched to improve software quality. In which, ensemble learning has become an
outstanding research trend in fault prediction. In the paper, we conduct a comparative study of various
ensemble methods in fault prediction such as Bagging, AdaBoost, Vote, and Stacking and we also
compared their performance to the model used single classifier NaiveBayes. The experiment was con-
ducted on NASA’s Metric Data Progam included CM1, PC1, KC1, KC2 and JM1. The experimental
results show that ensemble learning achieve high performance than the model used single classifier. In
addition, Vote is the best algorithm of ensemble learning.
Keywords: ensemble learning, bagging, boosting, stacking, adaboost, vote.
1 Giới thiệu
Một trong những yếu tố quan trọng nhất trong phát triển phần mềm là chất lượng của các hệ thống. Tuy
nhiên, trong thực tế một số lượng lớn các hệ thống luôn phát sinh ra lỗi, đây là một trong những nguyên
nhân chính gây ra sự thất bại của các hệ thống phần mềm. Việc phát hiện ra các lỗi phần mềm trong giai
đoạn đầu của phát triển các hệ thống sẽ nâng cao chất lượng, giảm số lượng, thời gian cho công việc kiểm
thử và tiết kiệm được chí phí cho việc bảo hành hệ thống. Vì vậy dự đoán lỗi phần mềm đã trở thành lĩnh
vực nghiên cứu được quan tâm trong những năm gần đây. Các mô hình dự đoán lỗi có nhiệm vụ phân loại
những mô-đun lỗi và không lỗi từ đó có thể xác định được ví trị xuất hiện của lỗi này. Các mô hình dự đoán
lỗi này có thể áp dụng vào các hệ thống thực tế để phát hiện lỗi sớm. Dự đoán lỗi phần mềm dựa trên
phương pháp thống kê và áp dụng các kỹ thuật máy học [8]. Các nghiên cứu trong những năm gần đây đã
chứng minh các kỹ thuật máy học được áp dụng trong việc xây dựng các hệ thống dự đoán lỗi mang lại
hiệu quả cao [8]. Một số các kỹ thuật máy học phổ biến được đề xuất để xây dựng các mô hình như đoán
lỗi như Support Vector Machine [4], Unsupervised Hybrid SOM Algorithm [1], Neural Network [15], [11].
Tuy nhiên, các kết quả dự đoán lỗi với một các kỹ thuật máy học đơn sẽ không đạt kết quả tối ưu đối với
các tập dữ liệu dư thừa các thuộc tính không liên quan hoặc thiếu những thuộc tính quan trọng [5]. Nguyên
nhân do các kỹ thuật máy học khác nhau trên một tập tham số nào đó tương ứng đối với tập dữ liệu xác
158
Hà Thị Minh Phương, Phan Thị Quỳnh Hương
định. Vì vậy, một số nghiên cứu đã đưa ra các giải pháp mô hình kết hợp nhiều các kỹ thuật máy học -
ensemble learning sẽ mang lại hiệu quả trong phân loại lỗi và nâng cao tính chính xác cho bài toán dự đoán
lỗi phần mềm. Trong bài báo này chúng tôi tiến hành nghiên cứu kỹ thuật máy học thường được sử dụng
trong các mô hình máy học kết hợp bao gồm Bagging, Adaboost, Stacking, Vote và 1 thuật toán đơn Na-
iveBayes để so sánh đánh giá hiệu quả trong việc dự đoán. Các thực nghiệm này được tiến hành trên trên
tập dữ liệu của NASA bao gồm CM1, PC1, KC1, KC2 và JM1. Bài báo được tổ chức bao gồm phần 1 giới
thiệu về dự đoán lỗi phần mềm và ensemble learning - mô hình máy học kết hợp, phần 2 trình bày về các
nghiên cứu kỹ thuật học máy trong mô hình máy học kết hợp, phần 3 xây dựng thực nghiệm, kết quả thực
nghiệm được trình bày trong phần 4 và cuối cùng tổng kết về các vấn đề đã nghiên cứu.
2 Các nghiên cứu liên quan
Việc sử dụng mô hình máy học kết hợp- ensemble learning đã được các tác giả chứng minh mang lại hiệu
quả cao và tính chính xác của việc dự đoán những lỗi phần mềm. Yohannese [14] đã sử dụng kết hợp các
thuật toán Bagging, AdaBoost.M1 và J48 Decision Tree để xây dựng framework có hiệu quả cao trong dự
đoán lỗi.Wahono [12] đã đề xuất kết hợp thuật toán Genetic và Bagging để nâng cao chất lượng của kết
quả dự đoán lỗi. Một số các thuật toán máy học kết hợp được trình bày như sau:
2.1 Bagging
Thuật toán Bagging được đề xuất bởi Breiman [2] và mục đích của nó là để cải thiện hiệu quả dự đoán đối
với vấn đề mất cân bằng dữ liệu khi chỉ áp dụng một thuật toán đơn như Decision tree hoặc Neural Network.
Thuật toán này được trình bày như sau: đầu tiên, cho một tập dữ liệu và một thuật toán đơn bất kỳ. Trong
tập dữ liệu ban đầu, phương pháp Bootstrap được sử dụng để chia tập dữ liệu ban đầu thành các tập dữ liệu
huấn luyện con có kích thước bằng nhau. Tiếp theo áp dụng một thuật toán đối với từng tập dữ liệu huấn
luyện riêng tương ứng với một mô hình dự đoán. Cuối cùng kết quả dự đoán sẽ sử dụng giá trị trung bình
"Mean" kết quả của các mô hình trên. Ngoài ra, sử dụng phương pháp "Voting" để tạo ra các kết quả phân
lớp cho bài toán phân lớp.
2.2 Boosting
Boosting được giới thiệu bởi [9] sử dụng thuật toán cây quyết định để tạo các mô hình mới. Boosting gán
trọng số cho các mô hình dựa trên hiệu suất của chúng. Có nhiều biến thể của thuật toán Boosting như
LogitBoost (LB) và AdaBoost (AB). Schapire đã chứng minh rằng các kỹ thuật học yếu (tốt hơn một chút
so với đoán ngẫu nhiên) có thể được kết hợp với mục đích tạo ra một cụm hoặc một nhóm các kỹ thuật máy
học yếu từ đó tạo thành một mô hình mạnh duy nhất. Kỹ thuật Boosting hoạt động như sau:
• Gán trọng số bằng nhau cho tất cả các tập con trong tập dữ liệu
• Với mỗi lần lặp m thực hiện:
- Áp dụng kỹ thuật máy học vào các tập dữ liệu có trọng số và lưu trữ kết quả của từng mô hình lại.
- Tính sai số error err cho mỗi mô hình.
- Nếu giá trị của err bằng 0 hoặc lớn hơn hoặc bằng 0,5 thì dừng.
- Đối với mỗi tập con trong tập dữ liệu: Nếu mỗi tập được dự đoán chính xác bởi mô hình thì nhân
với trọng số err / (1-err)
- Chuẩn hóa trọng số tương ứng cho từng trường hợp.
2.3 Adaboost
Ý tưởng ban đầu của thuật toán Adaboost xuất phát từ thuật toán Boosting và nó là một thuật toán lặp được
đề xuất bởi [3]. Ý tưởng chính của thuật toán này là tăng dần trọng số của lớp phân loại lỗi, tạo các phân
loại mới trong mỗi lần lặp để bổ sung thiếu sót của các phân loại trước đó, và cuối cùng kết hợp, tạo ra các
phân loại cùng với cơ chế bỏ phiếu "voting". Như vậy, bản chất của Adaboost là đưa các phân loại yếu
159
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
được thăng cấp lên phân loại mạnh. Vì thế, nó có hiệu quả có thể đảm bảo rằng tỷ lệ lỗi của phân loại có
thể giảm khi số lượng tập dữ liệu đào tạo tăng lên.
2.4 Vote
Thuật toán này được sử dụng với mục đích chính là kết hợp của nhiều bộ phân loại (classifier) khác nhau
[6]. Ý tưởng chính của Vote là sử dụng các kết hợp khác nhau về ước tính của xác suất được sử dụng để
phân lớp. Voting trong mô hình học kết hợp sẽ giảm thiểu ảnh hưởng của các thuộc tính không liên quan
hoặc dư thừa. Việc giảm thiểu này được thực hiện bằng cách gán trọng số cao hơn cho các bộ phân lớp
riêng lẻ hoạt động tốt trên các bộ dữ liệu thử nghiệm. Voting đảm bảo việc giảm thiểu hiệu ứng nhiễu từ
đó làm tăng hiệu quả trong dự đoán lỗi [7].
2.5 Stacking
Stacking là một biến thể của mô hình máy học kết hợp - ensemble learning còn được gọi là phương pháp
meta-learning, bao gồm một hệ thống phân cấp các bộ phân loại khác nhau. Mục tiêu của stacking là để
xây dựng một bộ phân loại cấp độ meta có thể dự đoán nhãn đích của tập dữ liệu bằng cách kết hợp kết quả
các dự đoán từ các bộ phân loại riêng biệt. Tương tự như Boosting, Stacking sử dụng các sơ đồ trọng số
phức tạp so với bagging sử dụng các sơ đồ trọng số đồng nhất đơn giản [13]. Một số tài liệu nghiên cứu
cho thấy rằng Stacking có thể tạo ra hiệu suất tốt hơn so với Voting [10].
3 Xây dựng thực nghiệm
3.1 Thiết kế thực nghiệm
Trong bài báo này, chúng tôi muốn phân tích các thuật toán trong mô hình máy học kết hợp trong bài toán
dự đoán lỗi phần mềm. Câu hỏi nghiên cứu được chúng tôi phân tích “so sánh hiệu quả của những thuật
toán trong mô hình máy học kết hợp trong việc dự đoán lỗi của phần mềm?”
Các bước thực nghiệm được tiến hành như sau:
· Lựa chọn các tập dữ liệu từ kho dữ liệu NASA.
· Các thuật toán học máy được lựa chọn để phân tích gồm Bagging, AdaBoost, Vote, Stacking
và 1 thuật toán đơn NaiveBayes.
· Sử dụng các độ đo đánh giá accuracy và AUC để phân tích kết quả đạt được.
· Từ kết quả đưa ra kết luận.
3.2 Tập dữ liệu
Dự đoán lỗi phần mềm là giai đoạn quan trọng trong việc cải thiện chất lượng phát triển phần mềm. Để dự
đoán, các độ đo khác nhau đã được sử dụng trong các công trình nghiên cứu khác nhau. Bộ dữ liệu có thể
là công khai hoặc riêng tư; ở đây dữ liệu công khai có thể được sử dụng bởi mọi người và được sử dụng
cho nhiều ứng dụng. Nhưng dữ liệu riêng tư không thể được truy cập và sử dụng bởi tất cả và nó có một số
vấn đề và quy trình để sử dụng các bộ dữ liệu đó.
Đối với các nghiên cứu này, dữ liệu được thu thập từ bộ dữ liệu độ đo NASA [8] bao gồm CM1, PC1,
KC1 và KC2.
· CM1 Dataset
CM1 được tạo ra từ tập dữ liệu độ đo của NASA, được viết bằng ngôn ngữ C. Các tính năng của độ đo
McCabe và Halstead được trích xuất từ mã nguồn. Các độ đo này dựa trên hàm hoặc phương thức.
· KC1 Dataset
KC1 được tạo ra từ tập dữ liệu độ đo của NASA. Nó được quản lý lưu trữ để nhận và xử lý dự án dữ liệu
mặt đất, được viết bằng ngôn ngữ C ++. Các tính năng của độ đo McCabe và Halstead được trích xuất từ
mã nguồn.
· KC2 Dataset
160
Hà Thị Minh Phương, Phan Thị Quỳnh Hương
KC2 cũng được tạo ra từ tập dữ liệu độ đo của NASA. Đó là một xử lý dữ liệu khoa học; đó là một phần
khác của dự án KC1, được viết bằng ngôn ngữ C ++. Nó đã thêm các thư viện phần mềm của bên thứ ba
với KC1. Dữ liệu bắt nguồn từ độ đo McCabe và Halstead được trích xuất từ mã nguồn.
· PC1 Dataset
PC1 cũng được tạo ra từ tập dữ liệu độ đo của NASA. Đó là phần mềm chuyến bay được thiết kế cho vệ
tinh quay quanh trái đất, được viết bằng ngôn ngữ C. Dữ liệu bắt nguồn từ độ đo McCabe và Halstead được
trích xuất từ mã nguồn.
· JM1 Dataset
JM1 được khai thác từ kho NASA Metrics Data Program được trích xuất với các độ đo của McCabe and
Halstead. Thuộc tính goal dùng để xác định mô-đun lỗi hoặc không lỗi.
3.3 Độ đo đánh giá
Phân loại độ chính xác có được bởi các độ đo đánh giá bao gồm True Positive rate, False Positive rate,
Precision, Recall and F-measures.
• True Positive (TP) True Positive, tỷ lệ được phân loại là lớp x / Tổng số thực tế trong lớp x. True
Positive được dự đoán bởi các mô-đun được dự đoán là positive với kết quả thu được thực sự là positive.
Ví dụ, nếu người được xác định là khỏe mạnh, mà kết quả được hiển thị thực sự là khỏe mạnh , thì đó là
một kết quả True Positive thực sự.
True Positive rate = True Positive / (True Positive + False Negative)
• False Positive (FP) False Positive tỷ lệ không chính xác được phân loại là lớp x / Tổng số thực tế của
tất cả các lớp, ngoại trừ x. Đó là dự đoán không chính xác so với kết quả ban đầu. Ví dụ: nếu người được
xác định là không khỏe mạnh, nhưng kết quả được hiển thị là khỏe mạnh, thì đó là kết quả False Positive.
False Positive rate = False Positive / (False Positive + True Negative)
• Precision Số đoạn mã có lỗi được phân loại đúng trên tổng số đoạn mã được phân loại có lỗi. Tiêu chí
này tượng trưng cho độ chính xác phân loại lỗi của mô hình. Precision càng lớn thì mô hình dự đoán lỗi
càng chính xác:
Precision = True Positive / (True Positive + False Positive)
• Recall Số đoạn mã có lỗi được phân loại đúng trên tổng số đoạn mã có lỗi. Tiêu chí này tượng trưng
cho độ nhạy với lỗi của thuật toán..
Recall = True Positive / (True Positive + False Negative)
• F-Measure Giá trị trung bình giữa precision và recall.
• Accuracy Độ chính xác được tính bằng số lượng phiên bản được dự đoán tích cực chia cho Tổng số
trường hợp. Trong thí nghiệm, các giá trị của độ chính xác được đăng vào bảng trên cơ sở từ 0 đến 1, không
phải từ 0 đến 100.
• Receiver Operating Characteristic curve - Đường cong ROC: biểu diễn các điểm (FPR, TPR) trên đồ
thị khi thay đổi threshold từ 0 tới 1 ta sẽ thu được một đường được gọi là Receiver Operating Characteristic
curve hay ROC curve. Một mô hình hiệu quả khi có FPR thấp và TPR cao, tức tồn tại một điểm trên ROC
curve gần với điểm có toạ độ (0, 1) trên đồ thị (góc trên bên trái). Curve càng gần thì mô hình càng hiệu
quả.
• Area under the ROC Curve –AUC là diện tích nằm dưới ROC Curve Receiver Operating Characteristic.
Giá trị này là một số dương nhỏ hơn hoặc bằng 1. Giá trị này càng lớn thì mô hình càng tốt.
161
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
4 Kết quả thực nghiệm
4.1 Thực nghiệm
Trong bài báo này, để so sánh hiệu quả của các thuật toán trong mô trong mô hình kết hợp các kỹ thuật máy
học - ensemble learning và đồng thời các thuật toán này so sánh với hiệu quả của dự đoán lỗi nếu chỉ dùng
1 thuật toán đơn, chúng tôi tiến hành thực nghiệm trên nhóm mà mỗi thuật toán trong mô hình học kết hợp
bao gồm Bagging, AdaBoost, Vote, Stacking kết hợp với một thuật toán phân lớp cơ bản NaiveBayes và
tiếp theo sẽ so sánh kết quả thực nghiệm của nhóm chỉ sử dụng một thuật toán đơn NaiveBayes. Các tập
dữ liệu CM1, KC2 C1, PC1 và JM1 được khai thác từ kho dữ liệu NASA’s Metric Data Progam. Các tập
dữ liệu này được kết hợp dựa trên tập hướng cấu trúc và tập hướng đối tượng. CM1, PC1 và JM1 được viết
bằng ngôn ngữ C và KC1, KC2 được viết bằng C++. Các kết quả giá trị của Accuray, AUC của các thuật
toán được thu thập từ công cụ Weka [16]. Các thực nghiệm sử dụng phương pháp 10-Fold Cross-Validation
với các tập dữ liệu bạn đầu được chia ngẫu nhiên thành 10 tập con, trong đó 9 tập sẽ được sử dụng như tập
huấn luyện và 1 tập còn lại là tập kiểm tra. Cuối cùng, kết quả cuối cùng là trung bình giá trị sau các lần
lặp. Chúng tôi tiến hành so sánh giá trị trung bình của Accuracy (phạm vi giá trị từ 0 đến 1) và giá trị AUC
của các thuật toán trên các tập dữ liệu.
Bảng 1 mô tả các tập dữ liệu với số lượng các thuộc tính và số mẫu, số lượng mẫu trong mỗi tập dữ liệu
được phân loại lỗi nhỏ hơn nhiều so với số lượng mẫu không lỗi.
Bảng 1. Mô tả tập dữ liệu
STT Tập dữ
liệu
Ngôn
ngữ
Số thuộc
tính
Số mẫu Số mẫu
phân
loại lỗi
Tỷ lệ của số
mẫu phân
loại lỗi
1 CM1 C 41 505 48 9.5%
2 PC1 C 41 1109 77 6.94%
3 KC1 C++ 22 2019 326 15.45%
4 KC2 C++ 22 522 105 20.5%
5 JM1 C 22 10885 2106 19.35%
4.2 Kết quả thực nghiệm
Sự so sánh và đánh giá hiệu quả của các thuật toán trong mô hình máy học kết hợp được thực hiện bao gồm
Bagging, AdaBoost, Vote, Stacking kết hợp với thuật toán đơn NaiveBayes và mô hình chỉ có thuật toán
đơn NaiveBayes trên các tập dữ liệu được thể hiện qua các bảng 2 và bảng 3.
Bảng 2. So sánh kết quả của Accuracy của các thuật toán
Tập dữ
liệu
Bagging AdaBoost Vote Stacking NaiveBayes
CM1 0.89 0.90 0.90 0.90 0.85
PC1 0.94 0.93 0.93 0.92 0.89
KC1 0.86 0.84 0.85 0.84 0.82
KC2 0.83 0.81 0.84 0.79 0.83
JM1 0.81 0.80 0.82 0.80 0.80
162
Hà Thị Minh Phương, Phan Thị Quỳnh Hương
Bảng 3. So sánh kết quả AUC của các thuật toán
Tập dữ
liệu
Bagging AdaBoost Vote Stacking NaiveBayes
CM1 0.69 0.70 0.78 0.74 0.65
PC1 0.84 0.80 0.85 0.77 0.66
KC1 0.80 0.78 0.82 0.82 0.79
KC2 0.82 0.72 0.82 0.76 0.80
JM1 0.74 0.71 0.75 0.69 0.67
Từ kết quả thực nghiệm của Bảng 2 và Bảng 3 đã cho thấy việc sử dụng các thuật toán trong mô hình
máy học kết hợp với thuật toán đơn để dự đoán lỗi đạt hiệu quả cao hơn so với chỉ mô hình sử dụng một
thuật toán đơn như NaiveBayes. Các giá trị Accuracy và AUC của 5 thuật toán mô hình máy học kết hợp
đạt giá trị cao hơn hẳn so với 1 thuật toán NaiveBayes. Hơn nữa thuật toán Vote thì cho kết quả tốt hơn so
với các thuật toán còn lại trong mô hình máy học kết hợp.
5 Kết luận
Trong bài toán dự đoán lỗi phần mềm, vấn đề mất cân bằng dữ liệu như dữ liệu bị thiếu hoặc dư thừa những
thuộc tính liên quan sẽ làm ảnh hưởng đến hiệu quả dự đoán của các thuật toán trong mô hình dự đoán lỗi.
Bài báo này khai thác vai trò của mô hình máy học kết hợp – ensemble learning trong dự đoán lỗi, đưa ra các
so sánh về hiệu quả của các thuật toán trong mô hình này so với các mô hình dự đoán chỉ gồm một thuật toán
máy học đơn. Trong bài báo này, chúng tôi tiến hành thực nghiệm trên các thuật toán trong mô hình máy học
kết hợp gồm Bagging, AdaBoost, Vote, Stacking kết hợp với 1 thuật toán đơn NaiveBayes và mô hình chỉ sử
dụng 1 thuật toán đơn NaiveBayes trên tập dữ liệu NASA. Đầu tiên, kết quả các độ đo đánh giá Accuracy và
AUC của với các thuật toán trong mô hình máy học kết hợp tốt hơn so với chỉ sử dụng NaiveBayes. Trong
nghiên cứu tiếp theo, chúng tôi sẽ phân tích so sánh các ưu điểm, nhược điểm của các thuật toán mô hình máy
học kết hợp từ đó áp dụng để xây dựng các mô hình dự đoán lỗi có hiệu quả cao.
Tài liệu tham khảo
1. Alexandre Boucher and Mourad Badri. Predicting fault-prone classes in object-oriented software: an adaptation of
an unsupervised hybrid som algorithm. In 2017 IEEE International Conference on Software Quality, Reliability
and Security (QRS), pages 306–317. IEEE, 2017.
2. Leo Breiman. Bagging predictors. Machine learning, 24(2):123–140, 1996.
3. Yoav Freund and Robert E Schapire. A desicion-theoretic generalization of on-line learning and an application to
boosting. In European conference on computational learning theory, pages 23–37. Springer, 1995.
4. David Gray, David Bowes, Neil Davey, Yi Sun, and Bruce Christianson. Using the support vector machine as a
classification method for software defect prediction with static code metrics. In International Conference on En-
gineering Applications of Neural Networks, pages 223–234. Springer, 2009.
5. Taghi M Khoshgoftaar, Kehan Gao, and Amri Napolitano. An empirical study of feature ranking techniques for
software quality prediction. International journal of software engineering and knowledge engineering, 22(02):
161–183, 2012.
6. Ludmila I Kuncheva. Combining pattern classifiers: methods and algorithms. John Wiley & Sons, 2014
7. Issam H Laradji, Mohammad Alshayeb, and Lahouari Ghouti. Software defect prediction using ensemble learning
on selected features. Information and Software Technology, 58:388–402, 2015.
8. Ruchika Malhotra and Ankita Jain. Fault prediction using statistical and machine learning methods for improving
software quality. Journal of Information Processing Systems, 8(2):241–262, 2012.
9. Robert E Schapire. The strength of weak learnability. Machine learning, 5 (2):197–227, 1990.
10. Ljupˇco Todorovski and Saˇso Dˇzeroski. Combining classifiers with meta decision trees. Machine learning,
50(3):223–249, 2003.
163
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
11. Vipul Vashisht, Manohar Lal, and GS Sureshchandar. Defect prediction framework using neural networks for
software enhancement projects. Journal of Advances in Mathematics and Computer Science, pages 1–12, 2016.
12. RomiSatriaWahono,Nanna Suryana Herman, and Sabrina Ahmad. Neural network parameter optimization based
on genetic algorithm for software defect prediction. Advanced Science Letters, 20(10-11):1951–1955, 2014.
13. David H Wolpert. Stacked generalization. Neural networks, 5(2):241–259, 1992.
14. Chubato Wondaferaw Yohannese, Tianrui Li, Macmillan Simfukwe, and Faisal Khurshid. Ensembles based com-
bined learning for improved software fault prediction: A comparative study. In 2017 12th International Conference
on Intelligent Systems and Knowledge Engineering (ISKE), pages 1–6. IEEE, 2017.
15. Pengyang Zong, Yichen Wang, and Feng Xie. Embedded software fault prediction based on back propagation
neural network. In 2018 IEEE International Conference on Software Quality, Reliability and Security Companion
(QRS-C), pages 553–558. IEEE, 2018.
16. Witten, Ian H., Eibe Frank, and M. A. Hall. "Data Mining: Practical machine learning tools and techniques. edi-
tion." Morgen Kaufmann, San Francisco (2005).
164
Các file đính kèm theo tài liệu này:
- nghien_cuu_mo_hinh_may_hoc_ket_hop_trong_du_doan_doan_loi_ph.pdf