1. Trang chủ
  2. » Luận Văn - Báo Cáo

Á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 (Luận văn thạc sĩ)

54 156 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 1,42 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Á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Á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Á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Á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Á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Á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Á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Á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Á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Á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

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Trang 2

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi

Các số liệu, kết quả trong luận văn là trung thực và chưa từng được ai công

bố trong bất kỳ nghiên cứu nào khác

Hà Nội, ngày tháng năm

Tác giả luận văn

Lê Lê Na

Trang 4

Tôi xin chân thành cảm ơn các đồng nghiệp công ty đã tạo điều kiện để tôi được tiến hành nghiên cứu, cung cấp các thông tin đầy đủ và trung thực cho nghiên cứu này, luôn tạo điều kiện, quan tâm và động viên tôi hoàn thành luận văn

Cuối cùng, tôi xin chân thành cảm ơn đến gia đình, các anh chị và các bạn đồng nghiệp đã hỗ trợ cho tôi rất nhiều trong suốt quá trình học tập, nghiên cứu và thực hiện đề tài luận văn thạc sĩ một cách hoàn chỉnh

Hà Nội, ngày tháng năm

Tác giả luận văn

Lê Lê Na

Trang 5

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

DANH MỤC BẢNG v

DANH MỤC HÌNH VÀ BIỂU ĐỒ vi

MỞ ĐẦU 1

CHƯƠNG 1: KHAI PHÁ DỮ LIỆU VÀ BÀI TỐN PHÂN LỚP CÁC CA KIỂM THỬ 3

1.1 Khai phá dữ liệu 3

1.1.1 Tại sao lại cần khai phá dữ liệu 3

1.1.2 Khái niệm 3

1.1.3 Quá trình khai phá dữ liệu: 4

1.1.4 Các bài tốn thơng dụng trong Khai phá dữ liệu: 5

1.2 Kỹ thuật kiểm thử phần mềm 6

1.2.1 Một số phương thức thiết kế kiểm thử 6

1.2.2 Ví dụ thử nghiệm 7

1.3 Kết luận 9

CHƯƠNG 2: PHÂN LỚP DỮ LIỆU DỰA TRÊN NAIVE BAYES VÀ CÂY QUYẾT ĐỊNH J48 10

2.1 Kỹ thuật Naive Bayes cho phân lớp dữ liệu 10

2.1.1 Một số khái niệm cơ bản 10

2.1.2 Kỹ thuật Nạve Bayes 11

2.1.3 Phân lớp dữ liệu với Nạve Bayes 13

2.2 Kỹ thuật cây quyết định J48 15

2.2.1 Cây quyết định 15

2.2.2 Thuật tốn ID3: 17

2.2.4 Phân lớp dữ liệu dựa trên J48 19

2.3 Kết luận 20

CHƯƠNG 3: PHÂN LOẠI CÁC CA KIỂM THỬ, THỬ NGHIỆM VÀ ĐÁNH GIÁ 21

Trang 6

3.1 Phát biểu bài tốn 21

3.2 Xây dựng dữ liệu 21

3.2.1 Giới thiệu về file arff: 21

3.2.2 Xây dựng ứng dụng 22

3.2.3 Sinh các ca kiểm thử 24

3.2.4 Xây dựng bộ dữ liệu và tiền xử lý 27

3.3 Thống kê dữ liệu 28

3.4 Thử nghiệm và đánh giá 29

3.4.1 Sử dụng Weka để phân loại 29

3.4.2 Sử dụng thuật tốn Nạve Bayes 31

3.4.3 Sử dụng thuật tốn J48 35

3.5 Đánh giá, so sánh 39

3.6 Kết luận 42

KẾT LUẬN 43

TÀI LIỆU THAM KHẢO 44

Trang 7

DANH MỤC BẢNG

Bảng 1.1: Các ca kiểm thử phủ cấp 2 9

Bảng 3.1: Tổng quan ứng dụng máy tính bỏ túi 22

Bảng 3.2: Hoạt động của từng hàm trong ứng dụng 23

Bảng 3.3: Luồng thực thi của ứng dụng 24

Bảng 3.4: Hướng dẫn sử dụng randoop 25

Bảng 3.5 : Kết quả chạy Nạve Bayes với cross-validation 32

Bảng 3.6 : Kết quả chạy Nạve Bayes với kỹ thuật Percentage Split 34

Bảng 3.7 : Kết quả J48 với cross validation 36

Bảng 3.7: Kết quả J48 với Percentage split 38

Bảng 3.8: So sánh Nạve Bayes và J48 với cross validation 39

Bảng 3.9: So sánh Nạve Bayes và J48 với percentage split 40

Trang 8

DANH MỤC HÌNH VÀ BIỂ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 3

Hình 2 1: Naive Bayes trong bài tốn phân lớp 14

Hình 2 2: Cây quyết định và luồng thực hiện 16

Hình 2 3: Ví dụ về bài tốn phân lớp sử dụng cây quyết định J48 20

Hình 3.1: Mẫu file arff chuẩn dựa trên bộ dữ liệu iris 22

Hình 3.2: Thao tác với randoop bước 2 25

Hình 3.3: Thao tác với randoop bước 3 25

Hình 3.4: Kết quả chạy với randoop 25

Hình 3.5: Kết quả khi chạy Coverage với cơng cụ hỗ trợ là Eclemma 26

Hình 3.6: Kết quả JaCoCo Metrics 27

Hình 3.7: Bộ dữ liệu huấn luyện mẫu 27

Hình 3.9: Tiền xử lý dữ liệu bằng Weka 28

Hình 3.10: Các bước thực hiện đối với Weka 31

Hình 3.11: Kết quả thử nghiệm Nạve Bayes với n=5 31

Hình 3.12: Kết quả thử nghiệm Nạve Bayes với n=10 32

Hình 3.14: Kết quả chạy Nạve Bayes với tỷ lệ phân chia 50% 33

Hình 3.16: Kết quả chạy Nạve Bayes với tỷ lệ phân chia 75% 34

Hình 3.17: Kết quả chạy Nạve Bayes với tỷ lệ phân chia 80% 34

Hình 3.18: Kết quả J48 với n=5 36

Hình 3.19: Kết quả J48 với n=10 36

Hình 3.21: Kết quả J48 với tỷ lệ phân chia 50% 37

Hình 3.23: Kết quả J48 với tỷ lệ phân chia 75% 38

Hình 3.24: Kết quả J48 với tỷ lệ phân chia 80% 38

Trang 9

Biểu đồ 3.1: Lược đồ Nạve Bayes với cross-validation 33

Biểu đồ 3.2: Lược đồ Nạve Bayes với Percentage Split 35

Biểu đồ 3.3: Kết quả J48 với cross validation 37

Biểu đồ 3.4: Kết quả J48 với Percentage split 39

Biểu đồ 3.5: So sánh Nạve Bayes và J48 kỹ thuật Cross-validation 40

Biểu đồ 3.6: So sánh Nạve Bayes và J48 với Percentage Split 41

Trang 10

MỞ ĐẦU

Cùng với sự phát triển mạnh mẽ của công nghệ thông tin, các sản phẩm phần mềm sử dụng nguồn dữ liệu lớn xuất hiện không ngừng

Kĩ thuật phần mềm là lĩnh vực nghiên cứu liên quan đến thiết kế, triển khai

và sửa đổi để xây dựng một phần mềm phù hợp và duy trì lâu dài Kiểm thử là một trong những giai đoạn chính trong quy trình phát triển phần mềm, là một trong những giai đoạn không thể thiếu trong vòng đời phát triển phần mềm Kiểm thử thường tiến hành trên quy mô lớn để tìm ra lỗi trong phần mềm và cũng là để kiểm tra các kết quả thực tế của phần mềm đúng với mong muốn thiết kế hay không Điều này đòi hỏi phải xây dựng các trường hợp thử nghiệm mà khai thác hết tất cả các trường hợp có thể của phần mềm Sẽ là rất rủi ro và phức tạp nếu tất cả các trường hợp thử nghiệm đều được thực hiện bằng tay bởi vậy việc tạo mô hình thử nghiệm tự độ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 kiểm thử phần mềm, 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 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 đề đã được nhiều quan tâm nghiên cứu ([1],[2],[3],[4],[5] [15]) 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, luận văn đã 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 Luận văn tập trung áp dụng thuật toán Naive

Trang 11

Bayes, thuật toán cây quyết định J48 để phân tích các ca kiểm thử nhằm 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

Ngoài phần mở đầu và kết luận, luận văn bao gồm 3 chương chính:

Chương 1: Khai phá dữ liệu và bài toán phân lớp các ca kiểm thử

Chương này trình bày chung về khái niệm khai phá dữ liệu và một số ý về bài toán phân lớp Giới thiệu một số ví dụ về các trường hợp kiểm thử và độ bao quát của từng trường hợp kiểm thử

Chươ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 sẽ đi vào tìm hiểu một số thuật toán về phân lớp, cụ thể trong luận văn áp dụng thuật toán Naive Bayes và cây quyết định J48

Chương 3: Phân loại các ca kiểm thử, thử nghiệm và đánh giá

Chương này đi sâu phân tích dữ liệu và áp dụng dữ liệu thực tế vào Weka, áp dụng thuật toán với dữ liệu cụ thể Từ đó phân tích và đánh giá kết quả thu được

Trang 12

CHƯƠ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 đó

Trang 13

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

1.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ế

Trang 14

- 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

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.1.4 Các bài toán thông dụng trong Khai phá dữ liệu:

 Phân lớp (Classification): Với 1 tập dữ liệu huấn luyện cho trước và

sự huấn luyện của con người, các giải thuật sẽ học ra bộ phân loại (classiffier) dùng

để phân loại các dữ liệu mới vào trong những lớp đã được xác định trước

Giới thiệu một số thuật toán phân lớp điển hình:

- Support Vector Machine (SVM)

- Thuật toán Bayes

- Cây quyết định

 Dự đoán (Prediction): sẽ học ra các bộ dự đoán Khi có dữ liệu mới đến, bộ dự đoán sẽ dựa trên thông tin đang có để đưa ra một giá trị số học cho hàm cần dự đoán

 Tìm luật liên kết (Association Rule): tìm kiếm các mối liên kết giữa các thành phần từ dữ liệu

 Phân cụm (Clustering) sẽ nhóm các đối tượng dữ liệu có tính chất giống nhau vào cùng một nhóm

Trang 15

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

Đặ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:

Trang 16

- 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

1.2.2 Ví dụ thử nghiệm

Mỗi TPPM có từ 1 đến n (có thể rất lớn) đường thi hành khác nhau Mục tiêu của phương pháp kiểm thử luồng điều khiển là đảm bảo mọi đường thi hành của đơn vị phần mềm cần kiểm thử đều chạy đúng Rất tiếc trong thực tế, công sức và thời gian để đạt mục tiêu trên đây là rất lớn, ngay cả trên những đơn vị phần mềm nhỏ Thí dụ đoạn code sau :

for (i=1; i<=1000; i++)

Trang 17

Phủ kiểm thử (Coverage) : là tỉ lệ các thành phần thực sự được kiểm thử so với tổng thể sau khi đã kiểm thử các test case được chọn Phủ càng lớn thì độ tin cậy càng cao Thành phần liên quan có thể là lệnh thực thi, điểm quyết định, điều kiện con hay là sự kết hợp của chúng

Phủ cấp 0 : kiểm thử những gì có thể kiểm thử được, phần còn lại để người dùng phát hiện và báo lại sau Đây là mức độ kiểm thử không thực sự có trách nhiệm

Phủ cấp 1 : kiểm thử sao cho mỗi lệnh được thực thi ít nhất 1 lần Phân tích hàm foo sau đây :

1 float foo(int a, int b, int c, int d) {

nhưng không phát hiện lỗi chia 0 ở hàng lệnh 8

Phủ cấp 2 : kiểm thử sao cho mỗi điểm quyết định luận lý đều được thực hiện ít nhất 1 lần cho trường hợp TRUE lẫn FALSE Ta gọi mức kiểm thử này là phủ các nhánh (Branch coverage) Phủ các nhánh đảm bảo phủ các lệnh

Trang 18

Test Case 2 foo(1, 1, 1, 1)

Trang 19

CHƯƠNG 2: PHÂN LỚP DỮ LIỆU DỰA TRÊN NAIVE

BAYES VÀ CÂY QUYẾT ĐỊNH J48

Trong 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ữ

Trang 20

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

Giả 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

Nạve Bayes là kỹ thuật phân loại phổ biến trong học máy cĩ giám sát Ý tưởng chính của kỹ thuật này dựa vào xác suất cĩ điều kiện giữa từ hay cụm từ và nhãn phân loại để dự đốn văn bản mới cần phần loại thuộc lớp nào Nạve Bayes

Trang 21

được ứng dụng nhiều trong giải quyết các bài tốn phân loại văn bản [6]; xây dựng

bộ lọc thư rác tự động [7],[8]; hay trong bài tốn khai phá quan điểm [9],[10] bởi tính dễ hiểu, đễ triển khai cũng như độ chính xác tốt

Ý 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…

Thuậ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:

𝑃(𝑋|𝐶𝑖) = ∏ 𝑃(𝑥𝑘|𝐶𝑖)

𝑛

𝑘=1Trong đĩ:

𝑃(𝐶𝑖|𝑋) 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

Trang 22

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

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ười ta sẽ 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

Trang 23

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:

𝑃(𝑥𝑖|𝑐) =𝑁𝑐𝑖

𝑁𝑐

Trang 24

Trong đĩ:

 𝑁𝑐𝑖 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

Trang 25

Hình 2 2: Cây quyết định và luồng thực hiện

Khi một phân loại đơn có thể được áp dụng cho từng phần tử của tập con dẫ xuất Một bộ phận loại rừng ngẫu nhiên (random forest) sử dụng một số cây quyết định để có thể cải thiện tỷ lệ phân loại

Cây quyết định có thể được mô tả như là sự kết hợp của các kỹ thuật toán học và tính toán nhằm hỗ trợ việc mô tả, phân loại và tổng quát hóa một tập dữ liệu cho trước

Có rất nhiều thuật toán phân lớp như ID3, J48, C4.5, … Việc chọn thuật toán nào để có hiệu quả phân lớp cao tùy thuộc vào rất nhiều yếu tố Trong đó cấu trúc

dữ liệu ảnh hưởng lớn đến kết quả của thuật toán

Ưu điểm của cây quyết định:

- Dễ hiểu

- Việc chuẩn bị dữ liệu cho một cây quyết định là không cần thiết

- Có thể xử lý cả dữ liệu có giá trị bằng số và dữ liệu bằng chữ

- Cây quyết định là một mô hình hộp trắng, có thể quan sát một tình huống cho trước trong mô hình, nên dễ dàng để giải thích, nhìn nhận và đánh giá

- Có thể thẩm định một mô hình bằng các kiểm tra thống kê

- Có thể xử lý một lượng dữ liệu trong một thời gian ngắn

Nhược điểm của cây quyết định:

- Khó giải quyết những vấn đề có dữ liệu phụ thuộc thời gian liên tục

- Dễ xảy ra lỗi khi có quá nhiều lớp chi phí tính toán để xây dựng mô hình cây quyết định cao

Trang 26

2.2.2 Thuật toán ID3:

ID3 là một thuật toán cây quyết định được áp dụng cho các bài toán phân loại mà các thuộc tính đều ở dạng quyết định (lựa chọn một quyết định rồi đi tiếp)

Ý tưởng then chốt trong thuật toán ID3 là xác định thứ tự của thuộc tính cần xem xét tại mỗi bước Tại mỗi bước, thuộc tính tốt nhất sẽ được chọn ra đầu tiên Việc chọn ra thuộc tính tốt nhất ở mỗi bước sẽ sử dụng thuật toán tham lam

Việc chọn nút con tốt nhất sẽ cần phụ thuộc vào lượng tin mà mỗi nút con cung cấp được liệu nó cung cấp được lượng tin nhiều hay ít để chọn được nút con tối ưu nhất Khái niệm lượng tin này trong lý thuyết thông tin gọi là entropy

Giả sử cho phân phối xác suất của một biến rời rạc 𝑥 có thể nhận 𝑛 giá trị khác nhau 𝑥1, 𝑥2, … , 𝑥𝑛

Xác suất để 𝑥 nhận các giá trị này là: 𝑝𝑖 = 𝑝(𝑥 = 𝑥𝑖) với 0 ≤ 𝑝𝑖 ≤ 1,

- log là logarit tự nhiên

- 𝐻(𝑝)𝑚𝑎𝑥 nếu và chỉ nếu 𝑝1 = 𝑝2 = ⋯ = 𝑝𝑛

Xét bài toán với 𝐶 phân lớp khác nhau Giả sử ta đang làm việc với một child node với các điểm dữ liệu tạo thành một tập 𝑆 với số phần tử là |𝑆| = 𝑁 Trong điểm dữ liệu này thì 𝑁𝑐, 𝑐 = 1,2, … , 𝐶 là điểm thuộc phân lớp 𝑐 Xác suất để một điểm dữ liệu rơi vào một phân lớp 𝑐 được tính xấp xỉ bằng 𝑁𝑐

𝑁 Như vậy, entropy tại nút này được tính bởi:

𝐻(𝑆) = − ∑𝑁𝑐

𝑁 log (

𝑁𝑐

𝑁)𝐶

𝑐=1

Trang 27

Giả sử thuộc tính được chọn là 𝑥 Dựa trên 𝑥, các điểm dữ liệu trong 𝑆 được phân ra thành 𝐾 nút con 𝑆1, 𝑆2, … , 𝑆𝐾 với số điểm trong mỗi nút con lần lượt là

𝑚1, 𝑚2, … , 𝑚𝑘 Ta định nghĩa tổng có trọng số entropy của mỗi nút con như sau:

𝑥∗ = 𝑎𝑟𝑔𝑚𝑎𝑥𝑥𝐺(𝑥, 𝑆) = 𝑎𝑟𝑔𝑚𝑖𝑛𝑥𝐻(𝑥, 𝑆) Tức là thuộc tính 𝑥∗ được chọn là thuộc tính khiến cho lượng tin tăng đạt giá trị lớn nhất

Điều kiện để việc phân chia nút kết thúc trong bài toán cây quyết định nói chung và bài toán sử dụng thuật toán ID3:

 Nếu nút đó có entropy bằng 0 tức là mọi điểm trong nút đó đều thuộc một phân lớp

 Nếu nút đó có số phần tử nhỏ hơn một ngưỡng nào đó Trong trường hợp này, ta chấp nhận một số điểm bị phân lớp sai để tránh trường hợp bị overfitting Phân lớp cho nút lá này có thể được xác định dựa trên phân lớp chiếm

đa số trong nút đó

 Nếu khoảng các từ nút đó đến nút gốc đạt tới một giá trị cực đại nào

đó Việc hạn chế chiều sâu của cây này làm giảm độ phức tạp của cây và phần nào giúp tránh overfitting

 Nếu tổng số nút lá vượt quá một ngưỡng nào đó

 Nếu việc phân chia nút đó không làm giảm entropy quá nhiều (lượng tin tăng nhỏ hơn một ngưỡng nào đó)

Ngày đăng: 14/03/2019, 23:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w