Trong Testing, Khai phá dữ liệu cũng đã trở nên vô cùng phổ biến, giúp phân tích và khai thác dữ liệu, chia nhỏ các vùng thử nghiệm từ đó giúp tiết kiệm thời gian cũng như tăng độ chính
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: PGS.TS Trần Đình Quế
Phản biện 1: ……… Phản biện 2: ………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3tự động đã ra đời nơi mà các trường hợp thử nghiệm được xây dựng một cách tự động Nhưng vấn đề với các tiếp cận trên là nếu phần mềm được xây dựng trên hàng ngàn dòng mã thì việc thực hiện tất cả các trường hợp thử nghiệm sẽ mất rất nhiều thời gian có thể mất vài ngày để hoàn thành
Khai phá dữ liệu đã và đang được nghiên cứu, ứng dụng trong nhiều lĩnh vực khác nhau ở các nước trên thế giới Trong Testing, Khai phá dữ liệu cũng đã trở nên
vô cùng phổ biến, giúp phân tích và khai thác dữ liệu, chia nhỏ các vùng thử nghiệm
từ đó giúp tiết kiệm thời gian cũng như tăng độ chính xác của từng trường hợp thử nghiệm Với mục đích đưa những tiến bộ công nghệ phục vụ cho công việc hằng
ngày, tôi đã chọn đề tài tìm hiểu "Áp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềm"
Trong phạm vi luận văn sẽ trình bày về cách xử lý bài toán khi kiểm thử chương trình của một máy tính bỏ túi sử dụng các phép toán cộng, trừ, nhân, chia mặc dù khá đơn giản nhưng các trường hợp kiểm thử đặt ra cũng vô cùng phức tạp và số lượng testcases là khá nhiều Xác định các ca kiểm thử, phân loại và giản lược các ca kiểm thử là những vấn đề chính được đề cập trong luận văn ([1],[2],[3],[4],[5]) Luận văn sẽ giải quyết bài toán khai phá và xử lý dữ liệu dựa trên việc sử dụng thuật toán như thuật toán Naive Bayes, thuật toán cây quyết định J48 từ đó phân tích các ca kiểm thử là cần thiết hoặc các ca kiểm thử có thể tối giản để tránh mất quá nhiều thời gian, tăng hiệu quả làm việc cũng như chất lượng phần mềm
Trang 4CHƯƠNG 1: KHAI PHÁ DỮ LIỆU VÀ BÀI TOÁN PHÂN LỚP CÁC
CA KIỂM THỬ
1.1 Khai phá dữ liệu
1.1.1 Tại sao lại cần khai phá dữ liệu
Với sự bùng nổ thông tin trong những thập kỷ gần đây thì lượng thông tin ngày càng trở nên khổng lồ Làm thế nào để khai thác được “kho” thông tin đó đang là một câu hỏi cần thiết được đặt ra
Khai phá dữ liệu (Data Mining) ra đời như là một hướng giải quyết hữu hiệu câu hỏi trên Có khá nhiều định nghĩa về Data Mining như là một công nghệ tri thức giúp khai thác những thông tin hữu ích từ những kho dữ liệu được tích trữ trong suốt quá trình hoạt động của một công ty, tổ chức nào đó
dữ liệu để tìm ra các mẫu từ dữ liệu
Hình 1.1 Các bước của quá trình phát triển tri thức trong cơ cở dữ liệu
Khai phá dữ liệu là bước thứ 5 trong 7 bước của quá trình phát triển tri thức trong cơ cở dữ liệu
Trang 51.1.3 Quá trình khai phá dữ liệu:
Tìm hiểu dữ liệu:
Nhà tư vấn nghiên cứu kiến thức về lĩnh vực áp dụng, bao gồm các tri thức cấu trúc về hệ thống, các nguồn dữ liệu hiện hữu, ý nghĩa, vai trò và tầm quan trọng của các thực thể dữ liệu
Chuẩn bị dữ liệu:
Giai đoạn này sử dụng các kỹ thuật tiền xử lý bao gồm để biến đổi và cải thiện chất lượng dữ liệu để thích hợp với các yêu cầu của các giải thuật học Các giải thuật tiền xử lý bao gồm:
- Xử lý dữ liệu bị thiếu, mất Các dữ liệu bị thiếu sẽ được thay thế bởi các giá trị thích hợp
- Khử sự trùng lặp: Các đối tượng dữ liệu trùng lặp sẽ bị loại bỏ Kỹ thuật này không được sử dụng cho các tác vụ có quan tâm đến phân
bổ dữ liệu
- Giảm nhiễu: nhiễu và các đối tượng tách rời khỏi phân bố chung sẽ bị loại ra khỏi dữ liệu
- Chuẩn hóa: Miền giá trị của dữ liệu sẽ được chuẩn hóa
- Rời rạc hóa: Các dữ liệu số sẽ được biến đổi ra các giá trị rời rạc
- Rút trích và xây dựng đặc trưng mới từ các thuộc tính đã có
- Giảm chiều: các thuộc tính chứa ít thông tin sẽ bị loại bỏ bớt
Mô hình hóa dữ liệu:
Các giải thuật học sử dụng các dữ liệu đã được tiền xử lý trong giai đoạn hai để tìm kiếm các quy tắc ẩn và chưa biết
Hậu xử lý và đánh giá mô hình:
- Dựa trên đánh giá của người dùng sau khi kiểm tra trên các tập thử các mô hình sẽ được tinh chỉnh và kết hợp lại nếu cần Chỉ các mô hình đạt được các yêu cầu cơ bản của người dùng mới đưa ra triển khai trong thực tế
- Trong giai đoạn này, các kết quả được biến đổi từ dạng học thuật sang dạng phù hợp với môi trường nghiệp vụ và dễ hiểu hơn cho người dùng
Trang 6 Triển khai tri thức
- Các mô hình được đưa vào hệ thống thông tin thực tế dưới dạng các modun hỗ trợ việc đưa ra quyết định
- Mối quan hệ chặt chẽ giữa các giai đoạn trong quá trình khai phá dữ liệu là rất quan trọng cho việc nghiên cứu trong khai phá dữ liệu Một giải thuật trong khai phá dữ liệu không thể được phát triển độc lập, không quan tâm đến bối cảnh áp dụng mà thường được xây dựng để giải quyết một mục tiêu cụ thể
- Quá trình này có thể được lặp lại nhiều lần một hay nhiều giai đoạn dựa trên phản hồi từ kết quả của các giai đoạn sau
1.2 Kỹ thuật kiểm thử phần mềm
1.2.1 Một số phương thức thiết kế kiểm thử
Quá trình phát triển một hệ thống phần mềm bao gồm một chuỗi các hoạt động sản sinh ra mã lệnh, tài liệu, nơi mà những sai sót của con người có thể xẩy
ra bất cứ lúc nào Một lỗi có thể xuất hiện ngay từ lúc bắt đầu những dòng code đầu tiên, do đó quá trình phát triển một phần mềm phải kết hợp với một quá trình kiểm thử
Hiện tại phát triển rất nhiều các phương thức thiết kế các trường hợp kiểm thử cho phần mềm Những phương pháp này đều cung cấp một hướng kiểm thử
có tính hệ thống Quan trọng hơn nữa là chúng cung cấp một hệ thống có thể đảm bảo sự hoàn chỉnh của các trường hợp kiểm thử phát hiện lỗi cho phần mềm
Một sản phẩm đều có thể kiểm thử theo hai cách:
Hiểu rõ một chức năng cụ thể của một hàm hay một module Các trường hợp kiểm thử có thể được xây dựng để kiểm thử tất cả các thao tác đó
Hiểu rõ cách hoạt động của một hàm/module hay sản phẩm Các trường hợp kiểm thử có thể được xây dựng để đảm bảo tất cả các thành phần con khớp với nhau Đó là tất cả các thao tác nội bộ của hàm dựa vào các mô tả và tất cả các thành phần nội bộ đã được kiểm thử một cách thỏa đáng
Cách tiếp cận đầu tiên gọi là kiểm thử hộp đen (Black-box testing) và cách tiếp cận thứ hai gọi là kiểm thử hộp trắng (White-box testing) Trong luận văn này tôi sẽ đề cập đến cách kiểm thử với hướng tiếp cận thứ 2 kiểm thử hộp trắng
Trang 7Đặc điểm của kiểm thử hộp trắng là dựa vào các giải thuật cụ thể, vào cấu trúc dữ liệu bên trong của đơn vị phần mềm cần kiểm thử để xác định đơn vị phần mềm đó có được thực hiện đúng không Kỹ thuật kiểm thử này thường mất rất nhiều thời gian và công sức nếu mức độ kiểm thử được nâng cao lên ở cấp kiểm thử tích hợp hay kiểm thử hệ thống
Thông thường sau khi code xong một vài chức năng thì chúng ta sử dụng các công cụ như Junit testing để kiểm thử cho ứng dụng
Có 2 hoạt động kiểm thử hộp trắng:
- Kiểm thử luồng điều khiển : tập trung kiểm thử giải thuật chức năng
- Kiểm thử dòng dữ liệu : tập trung kiểm thử đời sống của từng biến dữ liệu được dùng trong giải thuật
Trong kiểm thử hộp trắng có rất nhiều phương pháp được đưa ra nhưng trong luận văn này tôi xin giới thiệu về phương pháp phổ biến thường được
sử dụng nhiều nhất là phương pháp kiểm thử đường thi hành (Execution Path)
Kiểm thử đường thi hành là 1 kịch bản thi hành đơn vị phần mềm tương ứng, cụ thể nó là danh sách có thứ tự các lệnh được thi hành ứng với 1 lần chạy
cụ thể của đơn vị phần mềm, bắt đầu từ điểm nhập của đơn vị phần mềm đến điểm kết thúc của đơn vị phần mềm
Trang 8CHƯƠNG 2: PHÂN LỚP DỮ LIỆU DỰA TRÊN NAIVE BAYES VÀ
CÂY QUYẾT ĐỊNH J48
Ở chương này, luận văn sẽ nêu lên hai thuật tốn chính sử dụng trong luận văn đĩ
là Nạve Bayes và J48 Nội dung chính của chương bao gồm khái niệm, thuật tốn và
áp dụng vào bài tốn phân lớp dữ liệu nĩi chung
2.1 Kỹ thuật Naive Bayes cho phân lớp dữ liệu
2.1.1 Một số khái niệm cơ bản
Định lý Bayes cho phép tính xác xuất xảy ra của sự kiện ngẫu nhiên A khi biết sự kiện liên quan B đã xảy ra Xác suất này được ký hiệu là 𝑃(𝐴|𝐵), đọc là
“xác suất của 𝐴 nếu cĩ 𝐵” Đại lượng này được gọi là xác suất cĩ điều kiện hay
xác suất hậu nghiệm vì nĩ được rút ra từ giá trị được cho của 𝐵 Theo định lý Bayes, xác suất xảy ra 𝐴 khi biết 𝐵 sẽ phụ thuộc vào 3 yếu tố sau:
Xác suất xảy ra 𝐴 mà khơng quan tâm đến 𝐵 Ký hiệu là 𝑃(𝐴) và đọc là xác suất của 𝐴 Đây cịn được gọi là xác suất tiên nghiệm – nghĩa là nĩ khơng quan tâm đến bất kỳ thơng tin nào của 𝐵 (prior)
Xác suất xảy ra 𝐵 mà khơng quan tâm đến 𝐴 Ký hiệu là 𝑃(𝐵) và đọc là xác suất của B Đại lượng này là hằng số chuẩn hĩa, vì nĩ khơng phụ thuộc vào
sự kiện 𝐴 đang muốn biết (evidence)
Xác suất xảy ra 𝐵 khi biết 𝐴 xảy ra Ký hiệu 𝑃(𝐵|𝐴) và đọc là xác suất của
𝐵 nếu cĩ 𝐴 Đại lượng này là khả năng xảy ra 𝐵 khi biết 𝐴 đã xảy ra
Xác suất cĩ điều kiện mà 𝐴 xảy ra khi đã biết 𝐵 Ký hiệu 𝑃(𝐴|𝐵) Xác suất này cịn được gọi là xác suất sau (likelihood)
Khi biết ba đại lượng kể trên Xác suất của 𝐴 khi biết 𝐵 được cho bởi cơng thức: (Cơng thức định lý Bayes) (posterior)
𝑃(𝐴|𝐵) = 𝑃(𝐵|𝐴)𝑃(𝐴)
𝑃(𝐵) =
𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 ∗ 𝑝𝑟𝑖𝑜𝑟𝑒𝑣𝑖𝑑𝑒𝑛𝑐𝑒Bài tốn thực tế trong học máy sử dụng định lý Bayes: Vấn đề cần làm là tìm hiểu mơ hình của chúng ta từ một tập hợp các thuộc tính nhất định (dựa vào tập dữ liệu đặc trưng đã quan sát được), mỗi bộ dữ liệu lại cĩ một biến đại diện cho tập dữ liệu đĩ Sử dụng định lý Bayes để xây dựng xác suất của biến dữ đốn đáp ứng được bộ dữ liệu ban đầu và đưa ra tập các thuộc tính mới
Trang 9Giả thiết cho rằng số thuộc tính là 𝑛, số giá trị nĩ cĩ thể cĩ là
2 (đú𝑛𝑔 ℎ𝑜ặ𝑐 𝑠𝑎𝑖) Để huấn luyện phân loại và áp dụng định lý Bayes, ta cần tính tốn 𝑃(𝐵|𝐴), theo đĩ số lượng phép tính cần tính là xấp xỉ 2 ∗ (2𝑛− 1) các tham số cho mơ hình này Cĩ thể nhận thấy con số trên là một vấn đề khá lớn trong những bài tốn cĩ nhiều thuộc tính Để giải quyết bài tốn này, ta sẽ cần áp dụng thuật tốn Nạve Bayes
Naive Bayes được nghiên cứu rộng rãi từ những năm 1950, ứng dụng và đưa vào thực tế những năm 1960
Naive Bayes được xây dựng dựa trên định lý Bayes về lý thuyết xác suất để đưa ra các dự đốn cũng như phân loại dữ liệu dựa trên các dữ liệu quan sát được Hiện nay thuật tốn dược áp dụng nhiều trong lĩnh vực học máy dùng để đưa ra các dự đốn dựa trên tập dữ liệu thu thập được Nĩ thuộc bài tốn học dựa trên mẫu cĩ trước
Cĩ một số giả định được thực hiện trong Nạve Bayes Ngay cả khi những giả định này bị vi phạm một chút thì nĩ vẫn hoạt động rất tốt Giả định đầu tiên cũng được coi là khá quan trọng khi thực thi Nạve Bayes là tất cả các biến ngẫu nhiên đầu vào phải độc lập với nhau và được lấy từ một phân phối tương tự nhau Giả định thứ hai là tất cả những biến ngẫu nhiên kể trên đều cĩ điều kiện độc lập
Trên thực tế, đối với các mơ hình xác suất khác nhau mà cĩ những phương pháp phân loại dựa trên Nạve Bayes khác nhau để cĩ kết quả tốt nhất Thực tế cho thấy, một báo cáo năm 2006 đưa ra rằng phân loại Bayes vượt trội hơn so với các phương pháp khác như cây (trees) hoặc rừng ngẫu nhiên (random
forests)
2.1.2 Kỹ thuật Nạve Bayes
Ý tưởng cơ bản của cách tiếp cận Nạve Bayes là sử dụng xác suất cĩ điều kiện giữa các đặc trưng và nhãn để dự đốn xác suất nhãn của một văn bản cần phân loại Điểm quan trọng của phương pháp này chính là ở chỗ giả định rằng sự xuất hiện của tất cả các đặc trưng trong văn bản đều độc lập với nhau Giả định
đĩ làm cho việc tính tốn Nạve Bayes hiệu quả và nhanh chĩng hơn các phương pháp khác vì khơng sử dụng việc kết hợp các đặc trưng để đưa ra phán đốn nhãn Kết quả dự đốn bị ảnh hưởng bởi kích thước tập dữ liệu, chất lượng của khơng gian đặc trưng…
Trang 10Thuật tốn Nạve Bayes dựa trên định lý Bayes được phát biểu như sau:
𝑃(𝐶𝑘|𝒙) = 𝑃(𝐶𝑘)𝑃(𝒙|𝐶𝑘)
𝑃(𝒙)
Áp dụng trong bài tốn phân loại, các dữ kiện gồm cĩ:
D: tập dữ liệu huấn luyện đã được vec-tơ hĩa dưới dạng 𝑥⃗ = (𝑥1, 𝑥2, … , 𝑥𝑛)
Ci: phân loại i, với i = {1,2,…,m}
Các thuộc tính độc lập điều kiện đơi một với nhau
Theo định lý Bayes:
𝑃(𝐶𝑖|𝑋) =𝑃(𝑋|𝐶𝑖)𝑃(𝐶𝑖)
𝑃(𝑋)Theo tính chất độc lập điều kiện:
𝑃(𝑋|𝐶𝑖) = ∏ 𝑃(𝑥𝑘|𝐶𝑖)
𝑛
𝑘=1
Trong đĩ:
𝑃(𝐶𝑖|𝑋) là xác suất thuộc phân loại i khi biết trước mẫu X
𝑃(𝐶𝑖) xác suất là phân loại i
𝑃(𝑥𝑘|𝐶𝑖) xác suất thuộc tính thứ k mang giá trị xk khi đã biết X thuộc phân loại
i
Thuật tốn Nạve Bayes:
Input : Bộ dữ liệu đã huấn luyện
Dữ liệu đầu vào ví dụ ở bài tốn này là một ca kiểm thử (testcase)
Output : Nhãn phân loại của ca kiểm thử đầu vào
Bước 1: Huấn luyện Nạve Bayes (dựa vào tập dữ liệu), tính 𝑃(𝐶𝑖) và 𝑃(𝑥𝑘|𝐶𝑖) Bước 2: Phân loại 𝑋𝑛𝑒𝑤 = (𝑥1, 𝑥2, … , 𝑥𝑛), ta cần tính xác suất thuộc từng phân loại khi đã biết trước Xnew Xnew được gán vào lớp cĩ xác suất lớn nhất theo cơng thức
max
𝐶𝑖∈𝐶 (𝑃(𝐶𝑖) ∏ 𝑃(𝑥𝑘|𝐶𝑖)
𝑛 𝑘=1
)
2.1.3 Phân lớp dữ liệu với Nạve Bayes
Khi áp dụng thuật tốn Nạve Bayes vào bài tốn phân lớp thực tế, để ước tính các tham số phù hợp với phân phối của đối tượng cần phân lớp mà người ta
Trang 11sẽ phải giả định những phân phối các tính năng và được gọi là mơ hình sự kiện của bài tốn phân lớp dữ liệu với Nạve Bayes Tùy thuộc bộ dữ liệu đầu vào để
sử dụng những phân phối phù hợp nhất
Hình 2.1: Naive Bayes trong bài tốn phân lớp
- Gaussian Nạve Bayes:
Mơ hình này sử dụng phân phối chuẩn Gaussian, được áp dụng chủ yếu trong bài tốn cĩ dữ liệu là các biến liên tục
Với mỗi chiều dữ liệu 𝑖 và một phân lớp 𝑐, 𝑥𝑖 tuân theo một phân phối chuẩn (phân phối Gaussian) cĩ kỳ vọng 𝜇𝑐𝑖 và phương sai 𝜎𝑐𝑖2:
𝑃(𝑥𝑖|𝑐) = 𝑃(𝑥𝑖|𝜇𝑐𝑖, 𝜎𝑐𝑖2) = 1
√2𝜋𝜎𝑐𝑖2
𝑒−
(𝑥 𝑖 −𝜇 𝑐𝑖 )22𝜎𝑐𝑖2
- Multinomoal Nạve Bayes:
Mơ hình này chủ yếu được sử dụng trong bài tốn phân loại văn bản mà các vector tính năng (features) được biểu diễn bởi một vector cĩ cùng độ dài 𝑑, các vector này là tập từ điển của văn bản Giá trị của phần tử thứ 𝑖 trong mỗi vector chính là số lần từ thứ 𝑖 xuất hiện trong văn bản đĩ
Khi đĩ, giá trị 𝑃(𝑥𝑖|𝑐) được tính bằng cơng thức sau:
𝑃(𝑥𝑖|𝑐) = 𝑁𝑐𝑖
𝑁𝑐Trong đĩ:
Trang 12 𝑁𝑐𝑖 là tổng số lần từ thứ 𝑖 xuất hiện trong các văn bản của phân lớp thứ 𝑐, nĩ được tính là tổng các thành phần thứ 𝑖 của các vector tính năng ứng với phân lớp 𝑐
𝑁𝑐 là tổng số từ (kể cả lặp) xuất hiện trong phân lớp thứ 𝑐 Nĩi cách khác, nĩ bằng tổng độ dài của tồn bộ các văn bản thuộc phân lớp 𝑐
Hạn chế của phương pháp này là nếu cĩ một từ mới chưa bao giờ xuất hiện trong phân lớp 𝑐 thì biểu thức kể trên sẽ cĩ giá trị bằng 0, điều này dẫn đến kết quả của bài tốn khơng cịn chính xác nữa
- Bernoulli Nạve Bayes:
Mơ hình này được áp dụng cho các loại dữ liệu mà mỗi thành phần là một giá trị 0 hoặc 1 Khi đĩ, 𝑃(𝑥𝑖|𝑐) được tính bằng cơng thức sau:
𝑃(𝑥𝑖|𝑐) = 𝑃(𝑖|𝑐)𝑥 𝑖(1 − 𝑃(𝑖|𝑐)1−𝑥 𝑖) Với 𝑃(𝑖|𝑐) là xác suất từ thứ 𝑖 xuất hiện trong phân lớp thứ 𝑐
2.2 Kỹ thuật cây quyết định J48
2.2.1 Cây quyết định
Học bằng cây quyết định là một phương pháp thơng dụng trong khai phá
dữ liệu Khi đĩ, cây quyết định mơ tả một cấu trúc cây Trong đĩ, các lá đại diện cho các phân loại cịn cành đại diện cho các kết hợp của các thuộc tính dẫn tới phân loại đĩ Một cây quyết định cĩ thể được học bằng cách chia tập hợp nguồn thành các tập con dựa theo một kiểm tra giá trị thuộc tính Quá trình này được lặp lại một cách đệ quy cho mỗi tập con dẫn xuất Quá trình đệ quy hồn thành thì khơng thể tiếp tục thực hiện việc chia tách được nữa
Hình 2.2: Cây quyết định và luồng thực hiện