Dự đoán lỗi phần mềm sử dụng kỹ thuật học máy

18 638 3
Dự đoán lỗi phần mềm sử dụng kỹ thuật học máy

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG NGUYỄN THỊ MAI DỰ ĐOÁN LỖI PHẦN MỀM SỬ DỤNG KỸ THUẬT HỌC MÁY Chuyên ngành: Truyền dữ liệu và mạng máy tính Mã số: 60.48.15 - 0009 TÓM TẮT LUẬN VĂN THẠC SĨ Người hướng dẫn khoa học: PGS. TS TỪ MINH PHƯƠNG HÀ NỘI - 2010 2 Mở đầu Giới thiệu Xây dựng các dự án phần mềm thành công luôn là mối quan tâm hàng đầu đối với mọi tổ chức doanh nghiệp, nhất là doanh nghiệp công nghiệp công nghệ thông tin. Đặc biệt quan trọng là quá trình quản lý, kiểm soát tiến độ và đảm bảo chất lượng dự án. Các vấn đề thường xảy ra đối với một dự án phần mềm:  Thời gian thực hiện dự án vượt mức dự kiến.  Nguồn lực thực hiện dự án vượt mức kiểm soát.  Kết quả của dự án không như mong muốn .  Phát sinh rủi ro. Đảm bảo chất lượng sản phẩm là đảm bảo các sản phẩm phần mềm đến tay khách hàng không còn lỗi, các yêu cầu của khách hàng được thỏa mãn, tối ưu nguồn lực thực hiện dự án. Do đó việc kiểm tra để phát hiện lỗi nên được thực hiện xuyên suốt quá trình thực hiện dự án phần mềm, ngay từ khi thu thập, phân tích yêu cầu, đến giai đoạn lập trình, giai đoạn kiểm thử, hoặc đến khi nghiệm thu với khách hàng [4]. Phát hiện lỗi càng sớm nguồn lực và rủi ro của dự án phần mềm càng giảm. Trên thực tế các công ty phần mềm thường chờ đến khi kết thúc giai đoạn lập trình mới tiến hành kiểm tra lỗi của chương trinh, do đó các lỗi nghiêm trọng của dự án sẽ được phát hiện muộn, tốn rất nhiều nguồn lực để quay lại thực hiện lập trình từ đầu. Việc kiểm tra chương trình ngay trong giai đoạn lập trình giúp phát hiện ra các sai sót kịp thời: các vấn đề tiềm ẩn, các lỗi thời gian thực hoặc có thể sửa lỗi ngay từ ý tưởng thiết kế trước khi đóng gói bàn giao toàn bộ chương trình cho nhóm kiểm thử thực hiện. Để giúp quá trình sửa lỗi được thực hiện hiệu quả, người quản lý dự án cần có thông tin càng chính xác càng tốt về khả năng có lỗi của từng thành phần cụ thể trong hệ thống. Mặc biết chính xác thành phần nào có lỗi là vấn đề khó, một số nghiên cứu gần đây chó thấy, dựa trên những thông tin về hệ thống cũng như quá trình phát triển phần mềm, ta có thể dự đoán với một độ chính xác nhất định khả năng có lỗi hay số lượng lỗi trong các thành phần của hệ thống phần mềm được xây dựng ra. Có nhiều phương pháp và cách tiếp cận khác nhau trong việc dự đoán lỗi phần mềm. Các nội dung của luận văn này sẽ tập trung vào kỹ thuật dự đoán lỗi phần mềm sử dụng phương pháp kỹ học máy 3 Mục đích của luận văn Mặc trên thế giới có khá nhiều phương pháp dự đoán lỗi phần mềm, thông thường mỗi phương pháp dựa trên một số đặc trưng nhất định của phần mềm hoặc lịch sử phát triển phần mềm. Hơn nữa mô hình học máy dùng cho dự đoán thường tập trung vào mô hình hồi quy tuyến tính (linear regression). Trong phạm vi luận văn tôi tập trung vào nghiên cứu các ảnh hưởng tới độ chính xác khi dự đoán lỗi khi kết hợp các dạng đặc trưng phần mềm khác nhau (gồm: OO, Delta, Process). Mục đích quan trọng là nghiên cứu và áp dụng phương pháp rừng ngẫu nhiên (Random Forest) cho bài toán dự đoán lỗi, đây là một mô hình phân loại/ hồi quy với nhiều ưu điểm sẽ được trình bày chi tiết trong chương 2 của luận văn. Luận văn cũng đưa ra các kết quả khi thử nghiệm cho một hệ thống ứng dụng Java có khả năng chứa lỗi dựa trên bộ dữ liệu có sẵn và đánh giá theo các tiêu chí đánh giá hiệu quả khác nhau (gồm: CE, ROC) [3]. Chương trình sử dụng dữ liệu theo nguồn: http://bug.inf.usi.ch. Chương 1 TỔNG QUAN VỀ DỰ ĐOÁN LỖI PHÂN MỀM Chương này trình bày tổng quan về dự đoán lỗi trong phần mềm và đặc biệt áp dụng cho một hệ thống Java có khả năng chứa nhiều lỗi. Trong phạm vi quản lý dự án lợi ích đem lại từ việc dự đoán lỗi phần mềm đó là làm giảm nguồn lực của dự án, thay vì việc phải kiểm tra lỗi cho tất cả các lớp trong hệ thống bao gồm các lớp chứa lỗi và không chứa lỗi thì sẽ dự đoán các lớp nào có khả năng chứa lỗi sau đó tập trung nguồn lực kiểm tra trên các lớp được dự đoán là chứa lỗi đó. Hiện trên thế giới đã có một số kỹ thuật xây dựng mô hình dự đoán lỗi phần mềm tuy nhiên với mỗi kỹ thuật lại có các ưu nhược điểm khác nhau, trong chương này cũng sẽ trình bày các ưu nhược điểm của các kỹ thuật này. Cuối chương sẽ trình bày một số dạng đặc trưng của phần mềm đó chính là các tham số được sử dụng trong quá trình dự đoán lỗi. 1.1. DỰ ĐOÁN LỖI PHẦN MỀM 1.1.1. Giới thiệu Trong thuật ngữ của chuyên ngành kỹ nghệ phần mềm, Quản lý dự án phần mềm là các hoạt động trong lập kế hoạch, giám sát và kiểm soát tài nguyên dự án (ví dụ như chi phí, con người), thời gian thực hiện, các rủi ro trong dự án và cả quy trình thực hiện dự 4 án; nhằm đảm bảo thành công cho dự án. Trong đó đảm bảo chất lượng dự án phần mềm là cân bằng giữa ba yếu tố: thời gian, tài nguyên và chất lượng. Ba yếu tố này được gọi là tam giác dự án [15]: Các vấn đề thường xảy ra đối với một dự án phần mềm:  Thời gian thực hiện dự án vượt mức dự kiến.  Chi phí thực hiện dự án vượt mức dự kiến.  Kết quả của dự án không như dự kiến. Vấn đề không thực hiện kiểm thử xuyên suốt và kịp thời dẫn đến quá muộn để phát hiện các lỗ hổng từ khâu thu thập yêu cầu, phân tích, thiết kế và trong quá trình lập trình, khi đó cán bộ thực hiện dự án sẽ phải quay lại khảo sát từ đầu dẫn đến nguồn lực dự án vượt qua dự kiến, quản trị dự án không thể thể kiểm soát. Trong khi đó nếu các lập trình viên thực hiện kiểm tra lỗi ngay trong giai đoạn lập trình sẽ mang lại lợi ích đáng kể trong lĩnh vực quản lý dự án. 1.1.2. Dự đoán lỗi của phần mềm Dự đoán lỗi phần mềm là phương pháp đánh giá các lớp trong hệ thống phần mềm để xác định những lớp có khả năng có lỗi dựa vào các dữ liệu lịch sử qua các lần thay đổi của hệ thống. Đánh giá lỗi cho hệ thống phần mềm bằng cách dựa vào những thay đổi trong các phiên bản khác nhau qua các lần chuyển giao cho khách hàng [3]. Trong phạm vi luận văn không đề cập đến việc dự đoán vị trí của lỗi, lỗi như thế nào trong một lớp mà chỉ dự đoán những lớp nào có khả năng có lỗi, lớp nào chứa nhiều lỗi, lớp nào chưa ít lỗi hơn. Luận văn tập trung vào việc đưa ra kỹ thuật dự đoán lỗi phần mềm áp dụng cho một hệ thống Java có khả năng có nhiều lỗi. Để xây dựng mô hình dự đoán lỗi phần mềm hầu hết sử dụng kỹ thuật học máy để dự đoán bằng cách sử dụng các phép đo cấu trúc mã nguồn trong các lớp, tuy nhiên một số nghiên cứu cũng có thể sử dụng thêm các thông tin khác ví dụ lịch sử các thay đổi trong các phiên bản trước đó: đo cấu trúc mã nguồn trong các lớp, đo xem sự thay đổi các phương thức của các lớp đươc gọi như thế nào, hoặc dựa trên chính dữ liệu lịch sử của các lập trình viên tác động vào các lớp ví dụ: có bao nhiêu lập trình viên cập nhật trên lớp, số dòng code hay số lỗi mà các lập trình viên gây trong các lớp đó. Trong công việc quản lý và kiểm soát nguồn lực dự án thì việc kiểm soát nguồn lực trong giai đoạn phát triển phần mềm đóng vai trò quan trọng. Như vậy thay vì tốn rất nhiều nguồn lực để kiểm tra và sửa lỗi cho toàn bộ các lớp được sinh ra trong hệ thông thì sẽ sử dụng kỹ thuật dự đoán lỗi để xác định những lớp nào có lỗi từ đó tập trung sửa lỗi cho lớp đó sẽ giảm được 50% chi phí thực hiện cho việc phát triển và kiểm tra lỗi 5 ngay trong giai đoạn lập trình. Hiện nay có khá nhiều kỹ thuật được sử dụng để dự đoán lỗi nhưng chưa có đánh giá cụ thể nào về kỹ thuật dự đoán nào là hiệu quả nhất mà sẽ tùy thuộc vào các tiêu chí được áp dụng để đánh giá cho mô hình dự đoán. Luận văn cũng sẽ tập trung vào một kỹ thuật dự đoán dựa trên học máy để xây dựng và thử nghiệm cho mô hình dự đoán lỗi của một hệ thống phần mềm. 1.2. CÁC PHƯƠNG PHÁP DỰ ĐOÁN LỖI PHẦN MỀM Có một số cách tiếp cận khác nhau trong việc dự đoán một thành phần nào có của hệ thống phần mềmlỗi hay không. Do luận văn chỉ tập trung vào cách tiếp cận dựa trên học máy nên trong phần này sẽ giới thiệu ngắn gọn về một số phương pháp học máy có thể sử dụng để dự đoán số lỗi trong phần mềm. 1.2.1. Thuật toán cây quyết định Trong lĩnh vực học máy, cây quyết định là một kiểu mô hình dự đoán (predictive model), nghĩa là một ánh xạ từ các quan sát về một sự vật/hiện tượng tới các kết luận về giá trị mục tiêu của sự vật/hiện tượng. Kỹ thuật học máy dùng trong cây quyết định được gọi là học bằng cây quyết định, hay chỉ gọi với cái tên ngắn gọn là cây quyết định. Cây quyết định là cây mà những nút bên trong của nó bao gồm việc kiểm tra một thuộc tính xác định và những nút lá của nó đưa ra sự phân lớp mà được áp dụng cho tất cả các mẫu đạt đến nút lá, hoặc một tập của sự phân lớp, hoặc một xác xuất phân tán qua tất cả các lớp có thể. Để phân lớp cho một mẫu chưa biết, nó được định tuyến xuống dưới cây dựa theo giá trị của thuộc tính được kiểm tra lần luợt theo các nút, và khi một nút lá được tìm thấy một mẫu được phân lớp dựa theo lớp mà được gán cho nút lá [9]. Cây quyết định cũng là một phương tiện có tính mô tả dành cho việc tính toán các xác suất có điều kiện. Thuật toán cây quyết định là một trong các thuật toán mà được sử dụng rộng rãi nhất trong các thuật toán học máy trong việc xây dựng các mẫu phân lớp từ các nguồn dữ liệu. Nó có thể được chọn cho việc thu thập những tri thức và tạo những quy tắc quyết định từ kho lưu trữ dữ liệu dựa trên một vài đặc điểm sau:  Cây quyết định có thể được chọn để tạo các quy tắc dễ hiểu.  Đạt đến sự phân lớp mà không cần những tính toán chuyên sâu.  Có thể được chọn để làm việc với cả những biến liên tục và biến phân loại, cung cấp sự định hướng rõ ràng, và phạm vi nào là quan trọng nhất cho việc dự đoán hoặc phân lớp. 6  Tự động lựa chọn thuộc tính tương ứng.  Có thể sử dụng truy vấn SQL để truy cập cơ sở dữ liệu.  Khi thực hiện phân lớp thì độ chính xác cũng có thể được so sánh với các phương pháp khác. 1.2.2. Kỹ thuật hồi quy logistic (logistic regression) Trong thống kê, hồi quy logistic (mô hình logit ) được sử dụng cho dự đoán khả năng xuất hiện lỗi của một hệ thống bằng một hàm logit. Kỹ thuật hồi quy logit được phát triển trong những năm 1970 mô hình tuyến tính tổng quát hóa sử dụng cho hồi quy nhị phân (chỉ có 2 giá trị). Giống như các dạng của phân tích hồi quy, hồi quy tuyến tính tạo ra vài biến dự đoán mà có thể là số hoặc tên thể loại. Hồi quy logit là một kiểu hồi quy mà các biến phụ thuộc là nhị phân hoặc số.Ví dụ một người bị đau tim trong một khoảng thời gian thời gian cụ thể có thể được dự đoán dựa trên những hiểu biết về tuổi, giới tính, chỉ số cơ thể. Thuật toán hồi quy logit được sử dụng rộng rãi trong các ngành y tế, xã hội hoặc các ứng dụng kinh doanh tiếp thị, ví dụ như dự đoán xu hướng khách hàng sẽ mua sản phẩm nào hoặc không mua sản phẩm nào trong năm. Hàm logit f(z) có dạng: f(z)= z e 1 1 1 z e z e     1.2.3. Kỹ thuật mạng nơ ron (neural net works) Mạng nơ ron nhân tạo (Artificial neural network – ANN) là một mô phỏng xử lý thông tin, được nghiên cứu ra từ hệ thống thần kinh của sinh vật, giống như bộ não để xử lý thông tin. Nó bao gồm số lượng lớn các mối gắn kết cấp cao để xử lý các yếu tố làm việc trong mối liên hệ giải quyết vấn đề rõ ràng [13]. Thuật toán máy tính mô phỏng các kiến trúc sinh học này thường được gọi là mạng nơron nhân tạo để phân biệt với các phần mềm trong cơ thể động vật. ANNs hoạt động giống như bộ não con người, được học bởi kinh nghiệm, lưu những kinh nghiệm hiểu biết và sử dụng trong những tình huống phù hợp. Đầu tiên ANN được giới thiệu năm 1943 bởi nhà thần kinh học Warren McCulloch và nhà logic học Walter Pits. Nhưng với những kỹ thuật trong thời gian này chưa cho phép họ nghiên cứu được nhiều. Mạng nơron hoạt động dựa trên nguyên lý học máy. Thông qua các mẫu có sẵn và tập mục tiêu (với phương pháp học có thầy) để đưa ra kết luận khi có một mẫu mới được đưa vào. Mạng nơron nhân tạo là một kỹ thuật mô phỏng lại bộ não và hệ thần kinh của con người.Nó cũng có khả năng học từ các kinh nghiệm trong quá khứ, tổng quát hóa 7 các kinh nghiệm này để đưa ra một nhận định mới nhờ rút ra được các đặc trưng cơ bản của tập mẫu. Các việc này được thực hiện thông qua việc xử lý tín hiệu giữa các nơron cùng với các trọng số của chúng. 1.3. CÁC ĐẶC TRƯNG 1.3.1. Độ đo Object Oriented Đơn vị đo OO (Object - Oriented) là phép đo bằng cách phân tích các thuộc tính cấu trúc được đưa ra từ mã nguồn. Phép đo OO là phép đo trong các hệ thống hướng đối tượng, để xác định sự thành công hay thất bại của một quy trình, để xác định có định lượng sự cải tiến trong một quy trình phần mềm. Phép đo này được sử dụng để cải tiến kỹ thuật lập trình hướng đối tượng tăng tính tin cậy của mã nguồn. Phép đo OO được thu thập từ các đoạn mã nguồn đơn giản để xác định: số lượng hàm trong một lớp, số lượng package được import trong một lớp, số lượng phương thức của các lớp kế thừa được gọi… Đây là một phép đo được sử dụng để ước lượng và dự đoán chất lượng phần mềm. 1.3.2. Độ đo Delta Là phép đo lượng thay đổi trong một lớp qua 2 lần phiên bản thành công. Độ đo Delta yêu cầu các phiên bản khác nhau của hệ thống có sẵn. Độ đo Delta được xác định để so sánh sự thay đổi trong một lớp của phiên bản này với phiên bản mới hơn, nó được xác định dựa trên độ đo OO. Với độ đo OO chỉ phân tích cấu trúc mã nguồn để xác định số lượng hàm trong một lớp thì độ đo Delta sẽ xác định sự thay đổi giữa số lượng hàm trong một lớp giữa 2 phiên bản nghĩa là xác định số lượng hàm trong một lớp trong phiên bản 1 tăng hay giảm và là bao nhiêu so với phiên bản 2, hoặc số lượng package trong 1 lớp được thay đổi giữa 2 phiên bản như thế nào hoặc các phương thức của các lớp kế thừa được gọi trong một lớp thay đổi như thế nào trong phiên bản 1 với phiên bản 2. 1.3.3. Độ đo Process Độ đo này được thu thập từ hệ thống quản lý cấu hình, bao gồm một phép đo dựa trên kinh nghiệm của nhân viên phát triển thực hiện mỗi thay đổi, số lượng nhân viên phát triển tạo ra các thay đổi trên một tập tin, số lượng lỗi trong phiên bản trước, phép đo này đơn giản như là xác định số dòng được thêm vào hoặc xóa đi trong một tập tin của một lập trình viên. Phép đo Process yêu cầu các bản ghi thông tin chi tiết của lập trình viên gồm: các thay đổi, các phương pháp hiệu chỉnh lỗi, thời gian thay đổi, thông tin nhân viên, liệu các thay đổi đã được kiểm tra chưa,…theo phương pháp thống nhất và có hệ thống trong hệ thống quản lý cấu hình hoặc quản lý thay đổi. 8 Chương 2 DỰ ĐOÁN LỖI PHẦN MỀM SỬ DỤNG KỸ THUẬT HỌC MÁY Trong chương này sẽ trình bày về thuật toán được áp dụng để xây dựng mô hình dự đoán phần mềm, trước đó sẽ trình bày tổng quan về kỹ thuật cây quyết định trong học máy, các nhược điểm của thuật toán này và cách khắc phục bằng cách sử dụng thuật toán Random Forest (thuật toán rừng ngẫu nhiên). Trình bày chi tiết lịch sử ra đời, ưu điểm của thuật toán này trong kỹ thuật dự đoán lỗi phần mềm. Phần tiếp sẽ trình bày các phương pháp đánh giá hiệu quả mô hình dự đoán lỗi. Với các phương pháp đánh giá này vẫn chưa có tài liệu hoặc nghiên cứu nào khẳng định phương pháp nào là tốt nhất mà còn phụ thuộc vào thực tế của một hệ thống quản lý chất lượng của một tổ chức. 2.1. NGUỒN GỐC RA ĐỜI CỦA THUẬT TOÁN 2.1.1. Nhược điểm của cây quyết định Trong lĩnh vực nghiên cứu về khai phá dữ liệu nói chung cũng như trong nghiên cứu về các thuật toán phân lớp nói riêng, vấn đề xử lý dữ liệu lớn ngày càng trở thành vấn đề cấp thiết và đóng vai trò chủ đạo trong việc giải quyết các bài toán thực tế. Phần lớn các thuật toán phân lớp đã phát triển chỉ có thể giải quyết với một số lượng dữ liệu có hạn cũng như với một độ phức tạp dữ liệu giới hạn được. Trong khi đó dữ liệu thu được càng trở nên đa dạng phong phú nhờ sự phát triển mạnh mẽ của khoa học. Mặc kỹ thuật cây quyết định là công cụ khai phá dữ liệu mạnh trong lĩnh vực học máy tuy nhiên kỹ thuật này không hoàn toàn hoàn hảo và thích hợp với một số loại vấn đề. Các cây phân loại dữ liệu có thể ổn định và có sự biên đổi nhỏ (các biến đổi này được tạo ra một cách ngẫu nhiên) có thể là cơ sở cho sự khác nhau của các cây tìm kiếm được sinh ra. Đây là đặc điểm đặc biệt trong các trường hợp mà các chia tách tối ưu cho các biến khác nhau gần với các biến khác về mặt giá trị. Trong tường hợp này, một biến đổi nhỏ về mặt dữ liệu cũng đủ gây ảnh hưởng tới việc lựa chọn trong việc phân tách các giá trị khác. 2.2. THUẬT TOÁN RANDOM FOREST 2.2.1. Giới thiệu thuật toán Random Forest Thuật toán RF - Random Forest là một thuật toán đặc biệt dựa trên kỹ thuật lắp ghép, Về bản chất thuật toán RF được xây dựng dựa trên nền tảng thuật toán phân lớp 9 cây phân loại và hồi quy, sử dụng kỹ thuật có tên gọi là “bagging” [5]. Thuật toán này cho phép lựa chọn một nhóm nhỏ các thuộc tính tại mỗi nút của cây để phân chia cho mức tiếp theo của cây phân lớp. Bằng cách chia nhỏ không gian tìm kiếm thành các cây nhỏ hơn như vậy cho phép thuật toán có thể phân loại một cách rất nhanh chóng cho không gian thuộc tính rất lớn. Các tham số đầu vào của thuật toán khá đơn giản bao gồm các thuộc tính được chọn trong mỗi lần phân chia. Giá trị mặc định của tham số này là căn bậc hai của p với p là số lượng các thuộc tính. Số lượng cây được tạo ra là không hạn chế và cũng không sử dụng bất kỳ kỹ thuật nào để hạn chế mở rộng cây. Phải lựa chọn tham số cho biết số lượng cây sẽ được sinh ra sao cho đảm bảo rằng sẽ mỗi một thuộc tính sẽ được kiểm tra một vài lần. Thuật toán sử dụng kỹ thuật “out of bag” để xây dựng tập huấn luyện và phương pháp kiểm tra trên nó [5]. 2.2.2. Lịch sử của thuật toán Random Forest Thuật toán tạo một rừng ngẫu nhiên được phát triển bởi Leo Breiman và Adele Cutler [5], thuật ngữ Random Forest được lấy làm tên phổ biến cho thuật toán này. Thuật ngữ RF được xuất lần đầu tiên năm 1995, sau đó kết hợp với phương pháp “bagging” trong lựa chọn các thuộc tính ngẫu nhiên của Leo Breiman năm 1996 để xây dựng phương pháp chọn các cây quyết theo các thay đổi có thể kiểm soát được. Năm 2001 Breiman xây dựng thuật toán RF có bổ sung thêm một lớp ngẫu nhiên để phân lớp. Ngoài việc xây dựng mỗi cây sử dụng các mẫu dữ liệu khác nhau, các rừng ngẫu nhiên được thay đổi để xây dựng các cây phân loại và hồi quy khác nhau. Các gói thư viện cài đặt thuẩt toán RF được xây dựng bằng ngôn ngữ Fortran bởi Leo Breiman và Cutler có thể tham khảo tại đường dẫn: (http://www.stat.berkeley.edu/). 2.2.3. Thuật toán Random Forest Về cơ bản thuật toán Random Forest (RF) – rừng ngẫu nhiên dựa trên kỹ thuật cây quyết định. Ý tưởng của RF chúng ta có thể liên tưởng tới việc bầu cử theo nguyên tắc phổ thông đầu phiếu. Nếu sử dụng một cây quyết định chẳng khác nào việc bầu cử mà chỉ có 1 người bỏ phiếu. Việc sinh các cây quyết định từ một mẫu dữ liệu nhằm đa dạng hoá các “phiếu bầu” (giống như việc mọi thành phần, tầng lớp, giai cấp đều được đi bỏ phiếu) cho kết luận. Việc áp dụng các kỹ thuật sinh ra các mẫu dữ liệu hay việc lựa chọn rẽ nhánh ngẫu nhiên sẽ tạo ra các cây “dị tật” trong rừng (giống việc cho phép công dân không cần phân biệt trình độ học vấn, sức khỏe đi bầu cử). Càng nhiều loại hình, càng nhiều phiếu bầu sẽ cung cấp cho chúng ta cái nhìn đa chiều, chi tiết hơn và do đó kết luận sẽ có tính chính xác, gần với thực tế hơn. 10 Định nghĩa: Một RF là một bộ phân loại gồm một tập các bộ phân loại có câu hình cây { h(x, ⊖  ), k=1,…} trong đó { ⊖  } là các vecto ngẫu nhiên, độc lập, có cùng phân bố xác suất, mỗi cây bầu cử một phiếu cho lớp phổ biến nhất tại đầu vào x [5]. 2.2.4. Đặc tính của thuật toán Random Forest Đối với rừng ngẫu nhiên, cận trên sẽ bắt nguồn cho các lỗi phát sinh dưới dạng hai tham số, là cách xác định tính chính xác (Strength - Accuracy) và tính tương quan (hay còn gọi là độ nhạy - Correlation) của các bộ phân loại riêng lẻ có trong rừng ngẫu nhiên. Hàm tương quan như sau: mr(X, Y) =  Ө (h(X, Ө) = Y) –   Ө (h(X, Ө) = j) Hàm tính độ chính xác như sau: s = , mr(X, Y) Giả sử s ≥0 ta có bất đẳng thức sau:  ∗ ≤ var (mr)/   Công thức thể hiện sự dao động của mr như sau: Nếu: j (X, Y) = arg    Ө (h(X, Ө) = j) Thì: mr(X, Y)=  Ө (h(X, Ө) = Y) –  Ө (h(X, Ө) = j(X, Y)) =  Ө [ I(h(X, Ө)= Y) – I( h (X, Ө)= j (X, Y))] Như vậy: trong rừng ngẫu nhiên, hai tiêu chí đánh giá phương pháp phân loại là: tính chính xác của từng cây và tính tương quan giữa các cây trong rừng tỷ lệ nghịch với nhau. Nếu tính tương quan giữa các cây trong rừng càng cao thì độ chính xác sẽ giảm. Độ chính xác và độ nhạy nếu đứng tách nhau thì không có ý nghĩa. Hai độ đo này có sự tương quan nghịch: độ chính xác càng cao thì độ nhạy càng thấp và ngược lại. Khi độ chính xác hoặc độ nhạy đạt giá trị tối thiểu thì cũng là lúc hệ thống mất khả năng phân loại. Vì vậy người ta phải kết hợp hai độ đo trên trong một độ đo thống nhất, vấn đề đặt ra là làm sao để có thể cân bằng hai tham số này khi thực hiện phân loại để đạt hiệu quả cao nhất. Theo công thức độ chính xác là tỷ lệ phần trăm các lớp phân loại đúng hoặc các lớp phân loại không lỗi: (TP/ (TP + FP)). Độ nhạy là tỷ lệ phần trăm các lớp phân [...]... int ( +1) với M là số lượng đầu vào 2.3 CÁC ĐẶC TRƯNG PHẦN MỀM 2.3.1 Giới thiệu Trong dự đoán lỗi phần mềm, việc lựa chọn các tham số đầu vào được sử dụng để huấn luyện giữ vai trò khá quan trọng Đối với một hệ thống phần mềm có quy trình thay đổi mã nguồn phức tạp có thể gây ra nhiều lỗi dẫn đến trễ tiến độ, tốn nguồn lực sửa lỗi Trong luận văn sử dụng tham số quy trình thay đổi mã nguồn để làm đầu... thực nghiệm Phần mềm được sử dụng để thực hiện phân lớp trên các tập dữ liệu ở trên là phần mềm weka [19] Tiến hành phân loại bằng thuật toán RF với thuộc tính phân loại được lựa chọn bugs, tuy nhiên trước khi tiến hành phân loại, chúng ta sẽ phải lựa chọn chế độ kiểm thử để xây dựng tập kiểm thử và tập huấn luyện Luận văn xây dựng 7 mô hình dự đoán lỗi dựa trên tập dữ liệu huấn luyện ở phần trên theo... (cost effectiveness) khi việc sử dụng các mô hình phát hiện lỗi Do vậy, trong phần còn lại của luận văn này, chúng ta sẽ xem độ phức tạp để kiểm thử một số lượng các lớp xấp xỉ hàm số mũ của kích thước của những lớp này Dựa trên giả thuyết ở trên, một mô hình dự đoán lỗi không mang lại nhiều ý nghĩa nếu mô hình dự đoán lỗi chỉ thực hiện được công việc phát hiện lỗi và số lượng lỗi này tỉ lệ với hàm mũ của... rẽ nhánh ngẫu nhiên có hiệu quả cao hơn kỹ thuật bagging, khả năng phát hiện nhiễu trong các kết quả đầu ra cũng tốt hơn Tuy nhiên hiện tại chưa có phương pháp nào tốt như kỹ thuật Adaboost của Yoav Freund and Robert Schapire [10] Kỹ thuật rừng ngẫu nhiên sử dụng các đầu vào được chọn ngẫu nhiên và kết hợp các đầu vào tại mỗi nút để phát triển mỗi cây So với kỹ thuật Adaboost có các so sánh như sau:... chứa lỗi sau đó sắp xếp các lớp có lỗi này theo thứ tự tăng dần của kích thước các lớp chứa lỗi đó  Các lớp không có lỗi sau đó cũng sắp xếp theo thứ tự tăng dần của kích thước các lớp không chứa lỗi đó Thủ tục này nhằm tối đa hóa diện tích vùng của bản phát hành trong lần này và tập các lớp lỗi với giả thiết tương lai có thể dự đoán chính xác hoàn hảo Sau khi đã được tính 15 toán, với mỗi tỉ lệ phần. .. vào giá trị ngưỡng cụ thể nào Phần diện tích phía dưới đường cong ROC (gọi là AUC area under the curve) có thể được sử dụng như một thông số thống kê mô tả Ví dụ nếu chọn ngẫu nhiên 2 lớp (một lớp lỗi và một lớp không lỗi) để kiểm thử bởi một mô hình có AUC = 0.85; thu được xác xuất kết quả phát hiện lỗi của lớp lỗi thực sự cao hơn xác suất phát hiện lỗi của lớp không bị lỗi 0.85 (hay là 85%) Do vậy,... lỗi trong lớp này cũng không đồng đều giữa các dòng code Hơn nữa các dự án phần mềm của Viettel quy mô tương đối lớn thông thường số lượng lớn hơn 1000 lớp thực hiện các chức năng nghiệp vụ chưa bao gồm các lớp tự sinh ra Do đó nếu sử dụng tiêu chí CE để đánh giá trên tỷ phần trăm các dòng mã trong các lớp được đem ra phân loại sẽ có kết quả phù hợp với đặc thù trên Như vậy có thể áp dụng mô hình dự. .. lớp  Công cụ quản lý lỗi Mantis version 1.1.5: - Lưu lại toàn bộ lỗi với trọng số lỗi khác nhau: Hight, Medium, Low tương ứng với mức độ phức tạp của lỗi khi kiểm thử chương trình - Lưu lại thông tin về các lập trình viên sửa các lỗi theo các trọng số cho các lớp lỗi Như vậy ta có thể thu thập được các thông tin tập dữ liệu đầu vào gồm các loại Process, OO, Delta Với thực tế kỹ năng và kinh nghiệm... phiên bản, ta sử dụng phần mềm phân tích mã nguồn WebMetric [6] WebMetric là một công cụ thu thập dữ liệu tự động, được viết hoàn toàn bằng Java và sử dụng bộ parse JavaCC (phân tích cấu trúc cú pháp mã nguồn của Java) 3.1.1.3 Phép đo Delta Phép đo này đo lượng thay đổi của một tập tin giữa 2 phiên bản Trong luận văn này, phép đo Delta được tính toán từ những phép đo hướng đối tượng bằng phần mềm WebMetric... phức tạp sẽ ảnh hưởng tiêu cực đến chất lượng sản phẩm, hệ thống phần mềm, nếu phức tạp hơn sẽ có thể ảnh hưởng đến các tập tin và có thể gây ra lỗi Tham số quy trình thay đổi mã nguồn được sử dụng làm đầu vào cho tập huấn luyện được xác định là sự thay đổi trong các tập mã nguồn thực hiện bởi các lập trình viên khi họ cập nhật hoặc sửa lỗi Đối với một hệ thống lớn, số lượng các lớp nhiều, mỗi lớp chưa . ra kỹ thuật dự đoán lỗi phần mềm áp dụng cho một hệ thống Java có khả năng có nhiều lỗi. Để xây dựng mô hình dự đoán lỗi phần mềm hầu hết sử dụng kỹ thuật. Chương 2 DỰ ĐOÁN LỖI PHẦN MỀM SỬ DỤNG KỸ THUẬT HỌC MÁY Trong chương này sẽ trình bày về thuật toán được áp dụng để xây dựng mô hình dự đoán phần mềm,

Ngày đăng: 13/02/2014, 12:43

Hình ảnh liên quan

Bảng 3.1. Tổng hợp kết quả ROC theo các biến - Dự đoán lỗi phần mềm sử dụng kỹ thuật học máy

Bảng 3.1..

Tổng hợp kết quả ROC theo các biến Xem tại trang 17 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan