Phân cụm dữ liệu định tính sử dụng lý thuyết tập thô Phân cụm dữ liệu định tính sử dụng lý thuyết tập thô Phân cụm dữ liệu định tính sử dụng lý thuyết tập thô luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
bộ giáo dục đào tạo trường đại học bách khoa hµ néi Hoàng thị hà Phân cụm liệu định tính sử dụng lý thuyết tập thô Chuyên ngành : Công nghệ thông tin luận văn thạc sĩ công nghệ th«ng tin ngêi híng dÉn khoa häc : TS Ngun kim Anh Hµ NéI – 2008 DANH MỤC CÁC CHỮ VIẾT TẮT Từ cụm từ Từ viết tắt Từ tiếng Anh Cơ sở liệu Phân cụm liệu CSDL PCDL Database Data Clustering Công nghệ thông tin CNTT Khám phá tri thức KDD Information Technology Knowledge Discovery in Database Lý thuyết tập thô RST Rough Set Theory MỤC LỤC Trang DANH MỤC CÁC CHỮ VIẾT TẮT MỤC LỤC DANH MỤC CÁC BẢNG .5 DANH SÁCH HÌNH VẼ TỪ KHOÁ CHƯƠNG : TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ KHÁM PHÁ TRI THỨC TRONG CSDL 10 1.1 Tổng quan khai phá liệu 10 1.1.1 Giới thiệu chung 10 1.1.2 Lịch sử khai phá liệu 11 1.1.3 Các nhiệm vụ thách thức khai phá liệu 12 1.1.4 Các kỹ thuật tiếp cận khai phá liệu 12 1.1.5 Ứng dụng khai phá liệu 13 1.2 Quá trình khám phá tri thức CSDL 14 1.2.1 Khái niệm KDD 14 1.2.2 Quá trình khám phá tri thức CSDL 14 1.3 Phân cụm liệu vai trị khai phá liệu 16 CHƯƠNG 2: PHÂN CỤM DỮ LIỆU 17 2.1 Giới thiệu chung 17 2.2 Các giai đoạn phân cụm 19 2.3 Các ứng dụng phân cụm 20 2.4 Các kiểu thuộc tính độ đo chúng phân tích cụm 21 2.4.1 Phân loại thuộc tính dựa kích thước miền [4][3]: 21 2.4.2 Phân loại thuộc tính dựa thang đo 22 2.4.3 Tương tự phi tương tự 23 2.5 Các kỹ thuật phân cụm liệu 28 2.5.1 Các thuật toán phân hoạch 29 2.5.2 Các thuật toán phân cấp 29 2.5.3 Các thuật toán dựa mật độ 32 2.5.4 Các thuật toán dựa lưới 32 2.6 Các tiêu chí đánh giá thuật toán PCDL hiệu khai phá liệu 34 CHƯƠNG 3: THUẬT TOÁN PHÂN CỤM DỮ LIỆU ĐỊNH TÍNH SỬ DỤNG LÝ THUYẾT TẬP THƠ 36 3.1 Giới thiệu chung 36 3.2 Dữ liệu định tính vấn đề phân cụm liệu định tính 36 3.3 Khảo cứu số thuật toán phân cụm liệu định tính điển hình 37 3.3.1 Thuật toán k-modes 37 3.3.2 Thuật toán ROCK [13] 39 3.3.3 Thuật toán CACTUS [11] 39 3.3.4 Thuật toán phân cụm Squeezer [33] 40 3.3.5 Thuật toán phân cụm liệu mờ Fuzzy K-modes 41 3.3.6 Nhận xét chung thuật toán 43 3.4 Tiếp cận lý thuyết tập thơ phân cụm liệu định tính 44 3.4.1 Lý thuyết tập thô ứng dụng 44 3.4.1.1 3.4.1.2 Một số khái niệm [26] 45 Các ứng dụng RST .49 3.4.2.1 3.4.2.2 3.4.2.3 3.4.2.4 3.4.2.5 Ý tưởng thuật toán 50 Một số định nghĩa bổ trợ thuật toán 51 Thuật toán MIN-MIN-ROUGHNESS (MMR) 52 Ví dụ minh họa thuật tốn MMR 55 Độ phức tạp thuật toán MMR .58 3.4.2 Thuật toán phân cụm liệu định tính MMR 50 CHƯƠNG 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ GIẢI THUẬT MMR 59 4.1 Xây dựng chương trình thử nghiệm 59 4.1.1 Về môi trường lập trình 59 4.1.2 Về chương trình 59 4.2 Dữ liệu thử nghiệm 62 4.3 Kết thử nghiệm đánh giá giải thuật 63 TÀI LIỆU THAM KHẢO .71 PHỤ LỤC: MỘT SỐ MODUL CÀI ĐẶT 74 DANH MỤC CÁC BẢNG Bảng 2.1: Bảng kiện 25 Bảng 3.1: Tổng kết số đặc điểm thuật tốn phân cụm liệu định tính 43 Bảng 3.2 : Bảng thông tin triệu chứng bệnh nhân 45 Bảng 3.3 Một số ứng dụng RST 50 Bảng 3.4: Tập liệu mẫu 55 Bảng 3.5: Tính trung bình roughness cho thuộc tính a1 56 Bảng 3.6: Tính MMR 56 Bảng 4.1: Chi tiết file liệu thử nghiệm 62 Bảng 4.2 Kết phân cụm tập liệu Soybean 63 Bảng 4.3 Kết phân cụm tập liệu Zoo 64 Bảng 4.4: So sánh chất lượng phân cụm thuật toán MMR với ba thuật toán fuzzy centroid, K-modes, fuzzy K-modes 65 Bảng 4.5 : So sánh chất lượng phân cụm thuật toán MMR với Squeezer, K-mode 66 DANH SÁCH HÌNH VẼ Hình 1.1: Các lĩnh vực liên quan đến khai phá liệu 11 Hình 1.2: Các bước thực trình khám phá tri thức 14 Hình 2.1: Các bước xử lý phân cụm 20 Hình 2.2: Các chiến lược phân cụm phân cấp 31 Hình 2.3: Phương pháp PCDL cổ điển “phân hoạch” “phân cấp” 31 Hình 2.4: Mơ hình cấu trúc liệu lưới 33 Hình 3.1: Thuật tốn Fuzzy K-modes 41 Hình 3.2: Mối quan hệ xấp xỉ trên, xấp xỉ miền bao 48 Hình 3.3: Thuật tốn MMR 54 Hình 3.4: Phần chia sau lần lặp 57 Hình 4.1: Chức phân cụm 60 Hình 4.2: Chức hiển thị thời gian tiến trình tính tốn 61 Hình 4.3: Chức hiển thị Log q trình tính tốn 61 Hình 4.4 Biểu đồ biểu thị mối quan hệ chất lượng cụm số cụm62 Hình 4.5: Chất lượng phân cụm MMR tập liệu Zoo 64 TỪ KHOÁ Khai phá liệu, phân cụm liệu, phân cụm liệu định, lý thuyết tập thô MỞ ĐẦU Với bùng nổ CNTT nay, việc tìm thơng tin hữu ích, tiềm ẩn từ kho liệu lớn vấn đề quan trọng nhiều ứng dụng thực tiễn Quá trình tìm kiếm tri thức CSDL lớn nhiệm vụ khai phá liệu – lĩnh vực khoa học quan tâm nghiên cứu rộng rãi Trong nhiệm vụ khai phá liệu phân cụm liệu đóng vai trị quan trọng q trình khám phá tri thức Bài tốn phân cụm liệu thuộc lĩnh vực học không giám sát, nhằm phân tập liệu thành tập thỏa mãn điều kiện: đối tượng tập có độ tương đồng cao, đối tượng tập khác có độ tương đồng thấp Các kỹ thuật phân cụm ứng dụng nhiều lĩnh vực, chẳng hạn như: Y học, kinh doanh, tin sinh,…Tuy nhiên, hầu hết phương pháp phân cụm tập trung tập liệu có thuộc tính định lượng.Vì liệu giới thực đa dạng tồn nhiều thuộc tính định tính nên năm gần vấn đề phân cụm liệu định tính nhà khoa học quan tâm Thực tế, có số cơng trình nghiên cứu thành cơng liệu dạng Có thể kể đến số thuật tốn điển hình như: K-modes(1998), fuzzy K-mode (1999) Huang; ROCK (1999) Guha et al.; CACTUS (1999) Venkatesh Ganti, Johannes Gehrke Raghu Ramakrishnan; Squeezer(2000) HE Zengyou, XU Xiaofei DENG Shengchun,… Những thuật toán đóng góp lớn cho q trình phân cụm liệu định tính, phần lớn khơng thiết kế để điều khiển khơng chắn(uncertaily) q trình phân cụm, số có điều khiển mờ lại gặp phải vấn đề tính ổn định Điều quan trọng ứng dụng thực Vậy cần nghiên cứu cách tiếp cận khác ổn định mà điều khiển khơng chắn Sử dụng lý thuyết tập thô để phân cụm liệu giải hai vấn đề nêu Chính lý trên, tơi chọn hướng nghiên cứu “Phân cụm liệu định tính sử dụng lý thuyết tập thô” làm đề tài nghiên cứu cho luận văn Luận văn trình bày hệ thống khai phá liệu, PCDL nói chung khảo cứu số thuật tốn PCDL định tính nói riêng Đặc biệt, tập trung nghiên cứu thuật toán sử dụng lý thuyết tập thơ vào q trình phân cụm liệu định tính Trên sở phân tích, đánh giá, so sánh với hướng tiếp cận truyền thống PCDL dựa RST cách tiếp cận hoàn toàn lĩnh vực phân cụm Hiện nay, vấn đề nhà khoa học quan tâm nghiên cứu nhằm tìm giải pháp phân cụm đạt kết tốt định lượng lẫn định tính Luận văn bố cục sau: Chương tập trung trình bày tổng quan lĩnh vực khai phá liệu, đồng thời giai đoạn thực trình khám phá tri thức vai trò PCDL khai phá liệu Chương trình bày vấn đề PCDL, hướng tiếp cận khai phá liệu Trong đó, sâu tìm hiểu chi tiết vấn đề PCDL ý nghĩa PCDL, đặc điểm kiểu liệu thường sử dụng PCDL như: liệu có thuộc định lượng (number), liệu có thuộc tính định tính (Categorica)l,… Các khái niệm “tương tự” “phi tương tự” trình bày chương Phần cuối chương trình bày vắn tắt đặc trưng phương pháp PCDL sử dụng phổ biến như: Phương pháp phân cụm phân hoạch, phương pháp phân cụm phân cấp, phương pháp phân cụm dựa mật độ,…đồng thời nêu tiêu chí đánh giá kết PCDL Chương 3, khảo cứu số thuật toán phân cụm liệu định tính điển hình như: K-mode, ROCK, CACTUS, Squeezer, fuzzy K-mode có ưu điểm, nhược điểm thuật tốn Tiếp trình bày sở lý thuyết đại - lý thuyết tập thơ nội dung thuật tốn MMR áp dụng lý thuyết tập thô vào phân cụm liệu định tính Chương 4, thực cài đặt thử nghiệm thuật tốn MMR trình bày chương Trên sở phân tích, đánh giá so sánh với thuật tốn trình bày đầu chương Phần kết luận, phần trình bày tóm tắt nội dung thực luận văn này, đồng thời đưa vấn đề nghiên cứu cho tương lai Phần phụ lục trình bày số mơ đun chương trình cài đặt cho thuật toán MMR CHƯƠNG : TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ KHÁM PHÁ TRI THỨC TRONG CSDL 1.1 Tổng quan khai phá liệu 1.1.1 Giới thiệu chung Cùng với phát triển vượt bậc công nghệ điện tử truyền thông, có nhiều cơng cụ thu thập liệu tự động tổ chức sở liệu (CSDL) nên số lượng liệu lưu trữ CSDL khổng lồ Thông tin giới 20 tháng lại tăng lên gấp đơi [30] Kích cỡ số lượng CSDL không ngừng tăng lên theo hai hướng : - Tăng số ghi (hoặc đối tượng CSDL) - Tăng số trường (hoặc thuộc tính) đối tượng Tình trạng gây tượng ứng lụt liệu Vấn đề đặt phải xử lý thô để tìm thơng tin hữu ích (phát tri thức) Đây nhiệm vụ đặt cho lĩnh vực nghiên cứu quan tâm nhiều năm gần Đó lĩnh vực khai phá liệu (Khai phá liệu) Vậy Khai phá liệu gì? Khai phá liệu hướng nghiên cứu đời gần hai thập niên trở lại đây, kỹ thuật áp dụng lĩnh vực phần lớn thừa kế từ lĩnh vực CSDL, học máy, trí tuệ nhân tạo, lý thuyết thơng tin, xác suất thống kê Do phát triển nhanh khai phá liệu phạm vi áp dụng phương pháp tìm kiếm tri thức, nên có nhiều quan điểm khác khai phá liệu Tuy nhiên, mức trừu tượng định, định nghĩa khai phá liệu sau [14][8]: “Khai phá liệu trình tìm kiếm, phát tri thức mới, tiềm ẩn, hữu dụng CSDL lớn” Các lĩnh vực liên quan đến khai phá liệu (Hình 1.1) [30]: 10 { //update log txtLog.Text += "Thuộc tính cần chia là: a" + (ax + 1).ToString() + "\r\n"; //5.Xác định giá trị thuộc tính cần chia object [] next_spliter = min_of_meanroughness(A, X, n, ax); return next_spliter; } } //Cach tinh cach chia dua tren cach tinh to hop chia tat ca cac phuong an //So cach chia la to hop chap cua len(Ai) private object[] min_of_meanroughness(object[][] A, ArrayList X, int n, int ax) { //Tinh tat ca cac cach chia thuoc tinh a(ax) object[] result = null; object[] XA = X[ax] as object[]; float[][] meanroughness; ArrayList Partions; ArrayList consider = new ArrayList(); float min_of_mean_roughness_for_each_split = float.MaxValue; bool IsConsidered = false, isAdded = false; int ak = 0; int t; if (XA.Length>2) { BTree[] btrees = Combination.Parse(XA.Length); meanroughness = new float[btrees.Length - 1][]; txtLog.Text += " \r\n"; txtLog.Text += "Các phương án chia thuộc tính a" + (ax + 1) + " với thuộc tính:" + show(A[ax]) + "\r\n"; for (int r = 1; r < btrees.Length; r++) { float[] roughnessline = new float[n-1]; txtLog.Text += "Phương án chia a" + (ax + 1) + " thành:" + show(A[ax], btrees[r].left.getElements()) + " " + show(A[ax], btrees[r].right.getElements()) + "\t với đối tượng tương ứng là:\t"; 79 //txtLog.Text += "Phương án chia a" + ax + " thành:" + show(btrees[r].left.getElements()) + " " + show(btrees[r].right.getElements()) + "\t với đối tượng tương ứng là:\t"; //Voi moi cach chia, phai tim cac tap Ax tuong ung Partions = getPartionFromIndex(XA, btrees[r], 1); txtLog.Text += "\r\n"; txtLog.Text += "Giá trị roughness tương ứng là:"; isAdded = false; //Tinh roughness cho cac cach chia for (int j=0;jax) t = j-1; else t = j; roughnessline[t] = roughness(Partions.ToArray(), X[j] as object[]); //if (roughnessline[t]!=0) { if (roughnessline[t]phai duyet theo second min, third min, ArrayList tieds = new ArrayList(); bool tied = false; if (IsConsidered) { txtLog.Text += "Chú ý: Có nhiều giá trị meanroughness" + show(consider, 1) + "->Phải tiến hành so sánh dựa second min, third !\r\n"; //Sap xep cac mang theo thu tu tu thap den cao Quicksort q = new Quicksort(); float[] temp_meanroughness = null; for (int i=0;iLay random if (tied) { txtLog.Text += "Có nhiều giá trị nhau->Phải lấy random!\r\n"; tieds.Add(ak); int rnd = rand.Next(1, tieds.Count); ak = (int) tieds[rnd]; } txtLog.Text += "Như giá trị là:" + min_of_mean_roughness_for_each_split + "\r\n"; //return result Partions = getPartionFromIndex(XA, btrees[ak + 1], 0); 81 if ((Partions[0] as object[]).Length>(Partions[1] as object[]).Length) result = Partions[0] as object[]; else result = Partions[1] as object[]; } else { if (XA.Length==2) { //Chỉ có giá trị->Chia luôn->binary split object[] left = XA[0] as object[]; object[] right = XA[1] as object[]; int pos = -1; txtLog.Text += " \r\n"; if ((left.Length == 1) || (right.Length == 1)) { txtLog.Text += "Chú ý: Cụm chia nữa->Chọn cụm khác để thế!!!\r\n"; FinishCluster.Add(spliter); return null; } else { txtLog.Text += "Thuộc tính a" + (ax + 1) + " có thuộc tính->chia a" + (ax + 1) + " thành:" + A[ax][0] + " " + A[ax][1] + "\t với đối tượng tương ứng là:\t"; txtLog.Text += show(left) + " " + show(right) + "\r\n"; if (left.Length>right.Length) result = left; else result = right; } } else//Chi co gia tri->chia doi { txtLog.Text += "Thuộc tính a" + (ax + 1) + " có thuộc tính->chia đơi!\t"; object[] all = XA[0] as object[]; if (all.Length % 2==0) { result = new object[all.Length/2]; Array.Copy(all, result, all.Length/2); } else { result = new object[all.Length/2-1]; Array.Copy(all, result, all.Length/2-1); } 82 } } return result; } private float roughness(object[] xai, object[] xaj) { //Tra ve gia tri roughness cua thuoc tinh xai doi voi thuoc tinh xaj float minroughness = 0; //1.Tim cac gia tri roughness cua thuoc tinh xai doi voi thuoc tinh xaj for (int i=0;i