Khai phá dữ liệu sử dụng giải thuật di truyền và ứng dụng

83 239 0
Khai phá dữ liệu sử dụng giải thuật di truyền và ứng dụng

Đ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

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG Hoàng Hà Đức KHAI PHÁ DỮ LIỆU SỬ DỤNG GIẢI THUẬT DI TRUYỀN ỨNG DỤNG Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍ NH Người hướng dẫn khoa học TS Nguyễn Huy Đức Thái Nguyên - 2016 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn LỜI CAM ĐOAN Sau trình học tập Trường Đại học công nghệ thông tin & truyền thông, với kiến thức lý thuyết thực hành tích lũy được, với việc vận dụng kiến thức vào thực tế, em tự nghiên cứu tài liệu, công trình nghiên cứu, đồng thời có phân tích, tổng hợp, đúc kết phát triển để hoàn thành luận văn thạc sĩ Em xin cam đoan luận văn công trình thân em tự tìm hiểu, nghiên cứu hoàn thành hướng dẫn tận tình thầy giáo TS Nguyễn Huy Đức Thái Nguyên, tháng năm 2016 Học viên Hoàng Hà Đức Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn LỜI CÁM ƠN Trong thời gian hai năm chương trình đào tạo thạc sỹ, gần nửa thời gian dành cho môn học, thời gian lại dành cho việc lựa chọn đề tài, giáo viên hướng dẫn, tập trung vào nghiên cứu, viết, chỉnh sửa hoàn thiện đề tài Với quỹ thời gian với vị trí công việc phải đảm nhận, không riêng thân em mà hầu hết sinh viên cao học muốn hoàn thành tốt luận văn trước hết phải có xếp thời gian hợp lý, có tập trung học tập nghiên cứu với tinh thần nghiêm túc, nỗ lực hết mình; tiếp đến cần có ủng hộ tinh thần, giúp đỡ chuyên môn điều kiện thiếu định đến việc thành công đề tài Để hoàn thành đề tài trước tiên em xin gửi lời cảm ơn đến thầy giáo hướng dẫn TS Nguyễn Huy Đức, người có định hướng cho em nội dung hướng phát triển đề tài, người có đóng góp quý báu cho em vấn đề chuyên môn đề tài, giúp em tháo gỡ kịp thời vướng mắc trình làm luận văn Em xin cảm ơn Thầy Cô giáo Trường Đại học Công nghệ thông tin Truyền thông Thái Nguyên, bạn bè lớp có ý kiến đóng góp bổ sung cho đề tài luận văn em Xin cảm ơn gia đình, người thân đồng nghiệp quan tâm, ủng hộ hỗ trợ mặt tinh thần suốt thời gian từ nhận đề tài đến hoàn thiện đề tài Trong nội dung luận văn chắn nhiều thiếu sót Em mong Thầy Cô bạn bè đóng góp để luận văn Em hoàn thiện Em xin trân trọng cảm ơn Thái Nguyên, tháng năm 2016 Học viên Hoàng Hà Đức Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỤC LỤC LỜI CAM ĐOAN LỜI CÁM ƠN CHƯƠNG TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU PHÂN CỤM DỮ LIỆU 11 1.1 Tổng quan khám phá tri thức khai phá liệu 11 1.1.1 Giới thiệu chung khám phá tri thức khai phá liệu 11 1.1.2 Quá trình khám phá tri thức 11 1.1.3 Quá trình khai phá liệu 13 1.2 Các phương pháp khai phá liệu 13 1.2.1 Phân lớp dự đoán (Classification & Prediction) 14 1.2.2 Luật kết hợp (Association Rules) 14 1.2.3 Khai thác mẫu (Sequential / Temporal patterns) 14 1.2.4 Phân nhóm- đoạn (Clustering / Segmentation) 15 1.2.5 Hồi quy (Regression) 15 1.2.6 Tổng hợp hóa (Summarization) 15 1.2.7 Mô hình hóa phụ thuộc (dependency modeling) 16 1.2.8 Phát biến đổi độ lệch (Change and deviation detection) 16 1.3 Phân cụm liệu 16 1.3.1 Phân cụm liệu 16 1.3.2 Các mục tiêu phân cụm liệu 18 1.3.4 Các phương pháp phân cụm liệu 19 1.3.4.1 Phương pháp phân cụm phân cấp 19 1.3.4.2 Phương pháp phân cụm dựa mật độ 20 1.3.4.3 Phương pháp phân cụm phân hoạch 21 1.3.4.4 Phương pháp phân cụm dựa lưới 22 1.3.4.5 Phương pháp phân cụm dựa mô hình 23 1.3.4.6 Phương pháp phân cụm có liệu ràng buộc 23 CHƯƠNG 2: THUẬT TOÁN PHÂN CỤM DỮ LIỆU DỰA TRÊN GIẢI THUẬT DI TRUYỀN 25 2.1 Giải thuật di truyền 25 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 2.1.1 Lịch sử giải thuật di truyền 25 2.1.2 Tóm tắt giải thuật di truyền 25 2.1.3 Cách biểu diễn toán giải thuật di truyền (hay chọn cách biểu diễn cấu trúc liệu cho toán) 29 2.1.4 Mã hóa (encoding) 35 2.1.5 Các phương pháp chọn(Selection) 37 2.1.6 Chọn lọc Roulette (Roulette Wheel Selection) 37 2.1.7 Các toán tử giải thuật di truyền 41 2.1.8 Các tham số cần sử dụng giải thuật di truyền 44 2.1.9 Điều kiện kết thúc thuật giải di truyền 44 2.1.10 Nguyên lý hoạt động giải thuật di truyền 44 2.1.11 Ứng dụng thuật giải di truyền 44 2.2 Thuật toán phân cụm sử dụng giải thuật di truyền 44 2.2.1 Một số giải thuật phân cụm liệu 44 2.2.2 Giải thuật phân cụm dựa giải thuật di truyền 57 2.3 So sánh hiệu thuật toán Kmeans thuật toán Kmeans sử dụng giải thuật di truyền 61 2.3.1 Thuật Toán K-Means 61 2.3.2 Thuật toán Kmean sử dụng giải thuật di truyền 66 2.3.3 So sánh k-means k-means sử dụng giải thuật di truyền: 69 CHƯƠNG 3: THỰC NGHIỆM PHÂN CỤM DỮ LIỆU VỀ SINH VIÊN CỦA TRƯỜNG CAO ĐẲNG Y TẾ YÊN BÁI 70 3.1 Mô tả toán 70 3.1.1 Cơ sở liệu 70 3.2 Xây dựng chương trình 71 3.2.2 Các chức chương trình 71 3.2.3 Giao diện chương trình 71 3.2.3 Kết thực nghiệm 73 KẾT LUẬN 75 TÀI LIỆU THAM KHẢO 76 PHẦN PHỤ LỤC 78 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn DANH SÁCH HÌNH VẼ Hình 1.1: Quá trình khám phá tri thức 12 Hình 1.2: Quá trình khai phá liệu 13 Hình 1.3: Ví dụ phân cụm liệu 17 Hình 1.4: Ví dụ phân cụm nhà dựa khoảng cách 18 Hình 1.5: Ví dụ phân cụm nhà dựa kích cở 19 Hình 1.6 Các chiến lược phân cụm phân cấp 20 Hình 1.7: Ví dụ phân cụm theo mật độ (1) 21 Hình 1.8: Ví dụ phân cụm theo mật độ (2) 21 Hình 1.9: Cấu trúc phân cụm dựa lưới 22 Hình 1.10: Ví dụ phân cụm dựa mô hình 23 Hình 1.11: Các cách mà cụm đưa 24 Hình 2.1:Sơ đồ tổng quát giải thuật di truyền 28 Hình 2.2: Nhiễm sắc thể 37 Hình 2.2 Minh họa trường hợp tách liệu thành cụm 45 Hình 2.3 Khái quát giải thuật CURE 48 Hình 2.3 Các cụm liệu khám phá CURE 49 Hình 2.4 Lân cận P với ngưỡng Eps 50 Hình 2.5: Mật độ - đến trực tiếp 51 Hình 2.6: Mật độ đến 51 Hình 2.7: Mật độ liên thông 51 Hình 2.8: Cụm nhiễu 52 Hình 2.9: Hình dạng cụm khám phá giải thuật DBSCAN 53 Hình 3.1 Cơ sở liệu học sinh sinh viên 71 Hình 3.2 Giao diện chương trình 71 Hình 3.3 Màn hình khởi động 73 Hình 3.4 Màn hình phân cụm liệu 73 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn DANH SÁCH TỪ VIẾT TẮT Từ viết tắt KPDL KPTT PCDL CSDL Ý nghĩa Khai phá liệu Khai phá tri thức Phân cụm liệu Cơ sở liệu GA Giải thuật di truyền Genetic Algorithm DE Giải thuật tiến hóa vi phân Differential Evolution NST CDL CNTT Nhiễm sắc thể Cụm liệu Công nghệ thông tin Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỞ ĐẦU Phân cụm liêu trình nhóm tập đối tượng tương tự tập liêu vào cụm cho đối tượng thuộc cụm tương đồng đối tượng thuộc cụm khác không tương đồng Phân cụm liêu không đòi hỏi phải định nghĩa trước mẫu liêu huấn luyện Vì thế, coi phân cụm liêu cách học không giám sát (unsupervised learning) Các Kỹ thuật phân cụm ứng dụng nhiều lĩnh vực tài ngân hành để phân lọai nhóm khách hàng khác Ngoài phân cụm liêu sử dụng bước tiền xử lý cho giải thuật khai phá liệu khác phân loại mô tả đặc điểm, có tác dụng phát cụm Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho toán vấn đề nhà khoa học máy tính đặc biệt quan tâm Mục đích thuật toán tìm kiếm thuật giải chất lượng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải toán có không gian tìm kiếm lớn Giải thuật di truyền (Genetic Algorithm GA) kỹ thuật tìm kiếm lời giải tối ưu đáp ứng yêu cầu nhiều toán ứng dụng Hiện nay, thuật toán di truyền ứng dụng rộng rãi lĩnh vực phức tạp Thuật toán di truyền chứng tỏ hiệu vấn đề khó giải phương pháp thông thường hay phương pháp cổ điển, toán cần có lượng giá, đánh giá tối ưu kết thu Chính vậy, phạm vi đề tài này, chọn hướng phân cụm liệu dựa giải thuật di truyền Luận văn gồm có chương: Chương I: Tổng quan khai phá liệu phân cụm liệu Phần giới thiệu cách tổng quát trình khám phá tri thức nói chung khai phá liệu nói riêng Các phương pháp khai phá liệu phân cụm liệu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Chương II: Thuật toán phân cụm liệu dựa giải thuật di truyền Trong chương trình bày giải thuật di truyền, thuật toán phân cụm sử dụng giải thuật di truyền so sánh hiệu thuật toán Kmeans thuật toán Kmeans sử dụng giải thuật di truyền Chương III: Thực nghiệm phân cụm liệu sinh viên trường Cao đẳng Y tế Yên Bái Phần mô tả toán, xây dựng chương trình Cài đặt chương trình thử nghiệm ứng dụng kỹ thuật phân cụm công tác học sinh sinh viên Trường Cao đẳng Y tế Yên Bái kết thu 10 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 2.3.3 So sánh k-means k-means sử dụng giải thuật di truyền: Bảng đưa so sánh hai giải thuật trên: K-means - Đầu vào: k, liệu, k cụm trung tâm lựa chọn ngẫu nhiên K-means sử dụng giải thuật di truyền - Đầu vào: k, liệu, p, P nhiễm sắc thể chọn ngẫu nhiên, Tmax - Mục tiêu: Giảm thiểu tổng bình phương khoảng cách - Mục tiêu: Giảm thiểu tổng khoảng cách từ điểm liệu đến trọng tâm cụm - Điều kiện dừng: Không có thay đổi trung tâm cụm - Điều kiện dừng: Số lần lặp đạt giá trị tối đa - Cuối nhóm hội - Giải thuật di truyền tảng phương pháp tiếp cận toàn cục với giá tụ giá trị tối ưu cục trị tiềm ẩn song song - Độ phức tạp: O(n*k*d*i) Trong đó: - Độ phức tạp: O(Tmax*p*n*k*d) Trong đó: + n: số điểm liệu + k: số cụm + d: kích thước liệu + i: số lần lặp + n: số điểm liệu + k: số cụm + d: kích thước liệu + Tmax: số lần lặp + P: kích cỡ dân số So sánh K-means K-means có sử dụng giải thuật di truyền Từ bảng đưa số nhận xét sau: - Thuật toán di truyền thực không gian tìm kiếm với số cá thể nhiều hơn, thuật toán bị rơi vào lời giải tối ưu cục phương pháp khác - Thuật toán di truyền dễ thực Chúng ta phải biểu diễn NST để giải toán khác toán có phương pháp mã hóa NST cần viết lại hàm tính độ thích nghi cho toán - Thời gian tính toán thuật toán di truyền chậm phương pháp khác 69 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn CHƯƠNG 3: THỰC NGHIỆM PHÂN CỤM DỮ LIỆU VỀ SINH VIÊN CỦA TRƯỜNG CAO ĐẲNG Y TẾ YÊN BÁI 3.1 Mô tả toán Hiện công tác kiểm tra đánh giá điểm rèn luyện học sinh, sinh viên trường quan tâm nội dung quan trọng Công tác đánh giá trình điểm rèn luyện thể thông qua kết khảo sát, đánh giá, thống kê tỷ lệ phân loại học sinh, sinh viên qua trình học tập, rèn luyện từ trường tự đánh giá trình độ học vấn, rèn luyện đạo đức học sinh, sinh viên trường Cao đẳng Y tế Yên Bái Dữ liệu thu thập dựa vào báo cáo chi tiết điểm rèn luyện học sinh, sinh viên nhà trường theo Quyết định số 42/2007/QĐGD&ĐT ngày 13/8/2007 Quy chế học sinh, sinh viên trường Đại học, Cao đẳng trung cấp chuyên nghiệp hệ quy Các tiêu chí đánh sau: - Đánh giá Ý thức học tập - Đánh giá thực nội quy, quy chế - Đánh giá ý thức kết tham gia hoạt động xã hội, văn nghệ thể dục thể thao phòng chống tệ nạn xã hội - Phẩm chất công dân quan hệ tốt cộng đồng - Ý thức, tham gia phụ trách lớp tổ chức khác 3.1.1 Cơ sở liệu Cơ sở liệu lưu trữ SQL Server 2008 - HOCSINHSINHVIEN(MaHocSinh, TenHocSinh, GioiTinh, NgaySinh, NoiSinh ) lưu trữ Lý lịch học sinh - LOP(MaLop, TenLop, MaKhoiLop, MaNamHoc, SiSo) lưu trữ Danh sách lớp - DIEM(ID, HovaTen, M_1, M_2, M_3, M_4, M_5) lưu trữ điểm rèn luyện 70 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Hình 3.1 Cơ sở liệu học sinh sinh viên 3.2 Xây dựng chương trình - Nhập liệu vào SQL Server 2008 trở lên - Chương trình chạy Visual Studio 2012 trở lên 3.2.1 Các chức chương trình Trong luận văn sử dụng viết ngôn ngữ lập trình C# xây dựng chương trình sử dụng giải thuật di truyền để phân cụm liệu sinh viên trường Cao Đẳng Y Tế Yên Bái: - Đọc số liệu phân cụm - Xây dựng cấu trúc liệu - Chọn số cụm đánh giá - Chọn môn đánh giá điểm rèn luyện - Hiển thị kết - Phân tích kết để đưa nhận xét, đánh giá 3.2.2 Giao diện chương trình Từ việc khảo sát, thống kê tập hợp liệu điểm rèn luyện học sinh, sinh viên luận văn xây dựng chương trình tương đối hoàn chỉnh để giải toán khảo sát, đánh giá, thống kê đảm bảo yêu cầu đề ban đầu Sau giao diện kết chương trình ứng dụng cài đặt chạy chương trình: Hình 3.2 Giao diện chương trình 71 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 72 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Màn hình khởi động Hình 3.3 Màn hình khởi động Phân cụm liệu: thực việc phân cụm liệu Hình 3.4 Màn hình phân cụm liệu Gồm chức chính: • Chọn số cụm • Phân cụm theo điểm đánh giá rèn luyện • Hai đánh giá hai nhóm đánh giá lúc 3.2.3 Kết thực nghiệm Dữ liệu đầu vào dựa 24 học sinh, sinh viên trường Cao đẳng Y tế Yên Bái để phân cụm đánh giá ý thức học tập, ta chia cụm, “Đánh giá ý thức học tập” sau: Cụm 1: Trong cụm điểm trung bình phần tử học sinh, sinh viên đạt điểm học tập với tâm cụm 7.95, chiếm tỷ lệ 25% 73 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Cụm 2: Ở ta thấy có phần tử học sinh, sinh viên đạt điểm học tập với tâm cụm 7.97, chiếm tỷ lệ 29,1% Cụm 3: Ta thấy có 11 phần tử học sinh, sinh viên đạt điểm học tập với tâm cụm 8.14 điểm cao chiếm tỷ lệ 45,8% Theo bảng phân tích ta đánh giá học sinh, sinh viên với điểm ý thức học tập rèn luyện, tìm học sinh sinh viên yếu bồi dưỡng, học tập lại để đạt kết cao 74 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn KẾT LUẬN Những kết luận văn - Trình bày khái niệm sở lý thuyết khai phá liệu phân cụm liệu - Giới thiệu giải thuật chung cho giải thuật phân cụm sử dụng giải thuật di truyền - Thực cài đặt thử nghiệm giải thuật phân cụm Kmeans sử dụng giải thuật di truyền Hướng phát triển luận văn Trên sở kết đạt được, tiếp tục nghiên cứu số vấn đề sau: - Xây dựng tiếp chương trình thử nghiệm thuật toán phân cụm giải thuật phân cụm có sử dụng giải thuật di truyền - Tìm thêm ứng dụng giải thuật vào thực tiễn Mặc em cố gắng thời gian hiểu biết lĩnh vực khai phá liệu hạn chế nên luận văn chắn không tránh khỏi khuyết điểm định Trong tương lai, em cố gắng khắc phục hạn chế, tiếp tục nghiên cứu vấn đề nêu Rất mong nhận ý kiến đóng góp quý thầy cô độc giả để luận văn hoàn thiện 75 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn TÀI LIỆU THAM KHẢO I TÀI LIỆU TIẾNG VIỆT [1] Nguyễn Đình Thúc (2000) “Trí tuệ nhân tạo - Lập trình tiến hóa” NXB Giáo [2] dục Nguyễn Đình Thúc (2000) “Mạng Nơ ron phương pháp ứng dụng” Nhà XB Giáo dục [3] An Hồng Sơn, (2008) “Nghiên cứu số phương pháp phân cụm mờ ứng dụng”, Luận văn thạc sĩ, Trường Đại học Thái Nguyên [4] PGS.TS Đỗ Phúc (2006) “Giáo trình Khai thác Dữ liệu, Trường Đại học [5] Công nghệ thông tin TP Hồ Chí Minh” Đại học Quốc gia TP Hồ Chí Minh Nguyễn Nhật Quang (2011) “Khai Phá Dữ Liệu, Trường Đại học Bách khoa Hà Nội” II TÀI LIỆU TIẾNG ANH [7] David A.Coley, “an introduction to genetic algorithms for scientists and enginer”, Copyright Q 1999 by World Scientific Publishing Co Pte Ltd [8] Han J, M Kamber, J Pei, (2012) “Data Mining: Concepts and Techniques” [9] [10] [11] [12] [13] [14] [15] Third Edition, Morgan Kaufmann Publishers is an imprint of Elsevier, USA Goldberg D E., (1989) “Genetic algorithm in search, optimization and machine learning” Addison-Wesley, Reading, Massachusets Qin Ding and Jim Gasvoda (2005) “A Genetic Algorithm for Clustering image data” Luiz Antonio Nogueira Lorena Luiz Antonio Nogueira Lorena “Using Genetic Algorithms in Clustering Problems” Jay N Bhuyan, Vijay V Raghavan, Venkatesh K Elayavalli “Genetic Algorithm for Clustering with an Ordered Representation” Miki AOYAGI and Kumiko Tsuji (2004), “ A modified genetic algorithm for image segmentation based on feature clustering” Dr (Mrs.) R.Sukanesh, R Harikumar Member, IAENG (2007) “A Comparison of Genetic Algorithm & Neural Network (MLP) In Patient Specific Classification of Epilepsy Risk Levels from EEGSignals” S Rajasekaran, G A Vijayalakshmi Pai (2004) “ Neural Networks, Fuzzy Logic and Genetic Algorithms” [16] Schaffer, J.D Whitley, D Eshelman, L.J.Philips Labs., Briarcliff Manor, 76 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn NY (2002) “ Combinations of genetic algorithms and neural networks” [17] Richard S Segall , Qingyu Zhang (2006), “Applications of Neural Network and Genetic Algorithm Data Mining Techniques in Bioinformatics Knowledge Discovery - A Preliminary Study” [18] Shoa-Yei Yeong, Al-Salihy (2009) “Combination of neural network based clustering and genetic algorithm for multi-objective 802.11n planning” [19] Zhan-hong Xin, Hai-jun Zhang (2002) “Neural Network and Genetic Algorithms for Topology Optimization of the CCS7 Network” [20] Guojun Gan, Chaoqun Ma, Jianhong Wu (2007) “Data Clustering Theory, Algorithms, and Applications” ASA-SIAM Series on Statistics and Applied Probability, SIAM, Philadelphia, ASA, Alexandria, VA 77 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn PHẦN PHỤ LỤC Chương trình nguồn namespace GAs_KMean { class GAs { //Thuật toán phân cụm liệu, đầu vào mảng chiều số cụm, đầu mảng cụm public static int[] Cluster(double[][] rawData, int numClusters) { double[][] data = Normalized(rawData); // so large values don't dominate bool changed = true; // was there a change in at least one cluster assignment? bool success = true; // were all means able to be computed? (no zerocount clusters) int[] clustering = InitClustering(data.Length, numClusters, 0); // semirandom initialization double[][] means = Allocate(numClusters, data[0].Length); // small convenience int maxCount = 100; // sanity check int ct = 0; while (changed == true && success == true && ct < maxCount) { ++ct; // k-means typically converges very quickly success = UpdateMeans(data, clustering, means); changed = UpdateClustering(data, clustering, means); } return clustering; } public static double[][] Normalized(double[][] rawData) { // normalize raw data by computing (x - mean) / stddev // primary alternative is min-max: // v' = (v - min) / (max - min) // make a copy of input data double[][] result = new double[rawData.Length][]; for (int i = 0; i < rawData.Length; ++i) 78 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn { result[i] = new double[rawData[i].Length]; Array.Copy(rawData[i], result[i], rawData[i].Length); } for (int j = 0; j < result[0].Length; ++j) // each col { double = 10000, max = -1; double colSum = 0.0; for (int i = 0; i < result.Length; ++i) { colSum += result[i][j]; if (result[i][j] > max) max = result[i][j]; if (result[i][j] < min) = result[i][j]; } if (colSum != 0&& min< max) { //double mean = colSum / result.Length; //double sum = 0.0; //for (int i = 0; i < result.Length; ++i) // sum += (result[i][j] - mean) * (result[i][j] - mean); //double sd = sum / result.Length; for (int i = 0; i < result.Length; ++i) { //result[i][j] = (result[i][j] - mean) / sd; result[i][j] = (result[i][j] - min) / (max - min); } } } return result; } private static int[] InitClustering(int numTuples, int numClusters, int randomSeed) { Random random = new Random(randomSeed); int[] clustering = new int[numTuples]; for (int i = 0; i < numClusters; ++i) // make sure each cluster has at least one tuple clustering[i] = i; for (int i = numClusters; i < clustering.Length; ++i) clustering[i] = random.Next(0, numClusters); // other assignments random return clustering; } private static double[][] Allocate(int numClusters, int numColumns) { 79 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn // convenience matrix allocator for Cluster() double[][] result = new double[numClusters][]; for (int k = 0; k < numClusters; ++k) result[k] = new double[numColumns]; return result; } private static bool UpdateMeans(double[][] data, int[] clustering, double[][] means) { int numClusters = means.Length; int[] clusterCounts = new int[numClusters]; for (int i = 0; i < data.Length; ++i) { int cluster = clustering[i]; ++clusterCounts[cluster]; } for (int k = 0; k < numClusters; ++k) if (clusterCounts[k] == 0) return false; // bad clustering no change to means[][] // update, zero-out means so it can be used as scratch matrix for (int k = 0; k < means.Length; ++k) for (int j = 0; j < means[k].Length; ++j) means[k][j] = 0.0; for (int i = 0; i < data.Length; ++i) { int cluster = clustering[i]; for (int j = 0; j < data[i].Length; ++j) means[cluster][j] += data[i][j]; // accumulate sum } for (int k = 0; k < means.Length; ++k) for (int j = 0; j < means[k].Length; ++j) means[k][j] /= clusterCounts[k]; // danger of div by return true; } private static bool UpdateClustering(double[][] data, int[] clustering, double[][] means) { int numClusters = means.Length; bool changed = false; int[] newClustering = new int[clustering.Length]; // proposed result Array.Copy(clustering, newClustering, clustering.Length); double[] distances = new double[numClusters]; // distances from curr tuple to each mean 80 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn for (int i = 0; i < data.Length; ++i) // walk thru each tuple { for (int k = 0; k < numClusters; ++k) distances[k] = Distance(data[i], means[k]); // compute distances from curr tuple to all k means int newClusterID = MinIndex(distances); // find closest mean ID if (newClusterID != newClustering[i]) { changed = true; newClustering[i] = newClusterID; // update } } if (changed == false) return false; // no change so bail and don't update clustering[][] // check proposed clustering[] cluster counts int[] clusterCounts = new int[numClusters]; for (int i = 0; i < data.Length; ++i) { int cluster = newClustering[i]; ++clusterCounts[cluster]; } for (int k = 0; k < numClusters; ++k) if (clusterCounts[k] == 0) return false; // bad clustering no change to clustering[][] Array.Copy(newClustering, clustering, newClustering.Length); // update return true; // good clustering and at least one change } private static double Distance(double[] tuple, double[] mean) { // Euclidean distance between two vectors for UpdateClustering() // consider alternatives such as Manhattan distance double sumSquaredDiffs = 0.0; for (int j = 0; j < tuple.Length; ++j) sumSquaredDiffs += Math.Pow((tuple[j] - mean[j]), 2); return Math.Sqrt(sumSquaredDiffs); } private static int MinIndex(double[] distances) { // index of smallest value in array // helper for UpdateClustering() 81 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn int indexOfMin = 0; double smallDist = distances[0]; for (int k = 0; k < distances.Length; ++k) { if (distances[k] < smallDist) { smallDist = distances[k]; indexOfMin = k; } } return indexOfMin; } // ============================================================================ // misc display helpers for demo static void ShowData(double[][] data, int decimals, bool indices, bool newLine) { for (int i = 0; i < data.Length; ++i) { if (indices) Console.Write(i.ToString().PadLeft(3) + " "); for (int j = 0; j < data[i].Length; ++j) { if (data[i][j] >= 0.0) Console.Write(" "); Console.Write(data[i][j].ToString("F" + decimals) + " "); } Console.WriteLine(""); } if (newLine) Console.WriteLine(""); } // ShowData static void ShowVector(int[] vector, bool newLine) { for (int i = 0; i < vector.Length; ++i) Console.Write(vector[i] + " "); if (newLine) Console.WriteLine("\n"); } static void ShowClustered(double[][] data, int[] clustering, int numClusters, int decimals) { for (int k = 0; k < numClusters; ++k) 82 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn { Console.WriteLine("==================="); for (int i = 0; i < data.Length; ++i) { int clusterID = clustering[i]; if (clusterID != k) continue; Console.Write(i.ToString().PadLeft(3) + " "); for (int j = 0; j < data[i].Length; ++j) { if (data[i][j] >= 0.0) Console.Write(" "); Console.Write(data[i][j].ToString("F" + decimals) + " "); } Console.WriteLine(""); } Console.WriteLine("==================="); } // k } } } 83 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn ... 2.1.11 Ứng dụng thuật giải di truyền 44 2.2 Thuật toán phân cụm sử dụng giải thuật di truyền 44 2.2.1 Một số giải thuật phân cụm liệu 44 2.2.2 Giải thuật phân cụm dựa giải thuật di. .. Học liệu – ĐHTN http://www.lrc.tnu.edu.vn CHƯƠNG THUẬT TOÁN PHÂN CỤM DỮ LIỆU DỰA TRÊN GIẢI THUẬT DI TRUYỀN 2.1 Giải thuật di truyền 2.1.1 Lịch sử giải thuật di truyền Trước tiên ý niệm thuật giải. .. tử giải thuật di truyền 41 2.1.8 Các tham số cần sử dụng giải thuật di truyền 44 2.1.9 Điều kiện kết thúc thuật giải di truyền 44 2.1.10 Nguyên lý hoạt động giải thuật di truyền

Ngày đăng: 23/06/2017, 17:24

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan