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

kỹ thuật gom cụm trong Khai phá dữ liệu

24 558 1

Đ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 24
Dung lượng 0,9 MB

Nội dung

TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU LỜI CẢM ƠN « Ngày nay, gom cụm dữ liệu là một nhiệm vụ chính trong môn học khai thác dữ liệu.Việc gom cụm dữ liệu có rất nhiều ý nghĩa trong khoa học máy tính và trong đời sống con người. Do vậy việc hiểu sâu sắc thuật toán gom cụm là điều vô cùng cần thiết cho những ai học ngành công nghệ sáng tạo này. Để tạo ra nhiều ứng dụng về khai thác dữ liệu có ý nghĩa cho ngành khoa học máy tính nói riêng và cho con người nói chung thì việc học kỹ lưỡng và hiểu cặn kẻ về môn khai thác dữ liệu là điều vô cùng cần thiết, và dĩ nhiên không thể thiếu kiến thức về gom cụm dữ liệu. Do vậy: Em xin chân thành cảm ơn nhà trường đã tạo mọi điều kiện thuận lợi cho chúng em được đến trường và được học tập. Em xin chân thành cảm ơn PGS.TS. Đỗ Phúc – Giảng viên môn học khai thác dữ liêu đã truyền đạt những kiến thức vô cùng quý báu, xin chân thành cám ơn ban cố vấn học tập và ban quản trị chương trình đào tạo thạc sĩ Công nghệ thông tin qua mạng của Đại Học Quốc Gia TPHCM đã tạo điều kiện về tài liệu tham khảo để em có thể hoàn thành môn học này. Em xin chân thành cảm ơn Nguyễn Thành Đệ HVTH: Nguyễn Thành Đệ Trang: 1 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU 1. Giới thiệu về kỹ thuật gom cụm trong Khai phá dữ liệu (Clustering Techniques in Data Mining) Gom cụm dữ liệu, quá trình nhóm những đối tượng tương tự, là một vấn đề nghiên cứu và nổi tiếng. Một vài ứng dụng ban đầu là về thông kê. Trong những năm gần đây, gom cụm dữ liệu là một kỹ thuật chính trong chuyên ngành khái thác dữ liệu. Hoạt động cơ bản này có thể được áp dụng trong nhiều nhiều vụ như phân đoạn, phân lớp, mổ xẻ không giám sát… Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp các phương pháp Unsupervised Learning trong Machine Learning. Có rất nhiều định nghĩa khác nhau về kỹ thuật này, nhưng về bản chất ta có thể hiểu phân cụm là các qui trình tìm cách nhóm các đối tượng đã cho vào các cụm (clusters), sao cho các đối tượng trong cùng 1 cụm tương tự (similar) nhau và các đối tượng khác cụm thì không tương tự (Dissimilar) nhau. Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu. Các thuật toán phân cụm (Clustering Algorithms) đều sinh ra các cụm (clusters). Tuy nhiên, không có tiêu chí nào là được xem là tốt nhất để đánh hiệu của của phân tích phân cụm, điều này phụ thuộc vào mục đích của phân cụm như: data reduction, “natural clusters”, “useful” clusters, outlier detection Kỹ thuật phân cụm có thể áp dụng trong rất nhiều lĩnh vực như: • Marketing: Xác định các nhóm khách hàng (khách hàng tiềm năng, khách hàng giá trị, phân loại và dự đoán hành vi khách hàng,…) sử dụng sản phẩm hay dịch vụ của công ty để giúp công ty có chiến lược kinh doanh hiệu quả hơn; • Biology: Phận nhóm động vật và thực vật dựa vào các thuộc tính của chúng; • Libraries: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả…; HVTH: Nguyễn Thành Đệ Trang: 2 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU • Insurance, Finance: Phân nhóm các đối tượng sử dụng bảo hiểm và các dịch vụ tài chính, dự đoán xu hướng (trend) của khách hàng, phát hiện gian lận tài chính (identifying frauds); • WWW: Phân loại tài liệu (document classification); phân loại người dùng web (clustering weblog);… Các kỹ thuật phân cụm được phân loại như sau (xem hình 1) Hình 1. Phân loại các kỹ thuật gom cụm 2. Thuật Toán K-Means K-Means là thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm. Tư tưởng chính của thuật toán K-Means là tìm cách phân nhóm các đối tượng (objects) đã cho vào K cụm (K là số các cụm được xác đinh trước, K nguyên dương) sao cho tổng bình phương khoảng cách giữa các đối tượng đến tâm nhóm (centroid ) là nhỏ nhất. Thuật toán K-Means được mô tả như sau HVTH: Nguyễn Thành Đệ Trang: 3 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 2: Mô tả thuật toán k-means Thuật toán K-Means thực hiện qua các bước chính sau: 1. Chọn ngẫu nhiên K tâm (centroid) cho K cụm (cluster). Mỗi cụm được đại diện bằng các tâm của cụm. 2. Tính khoảng cách giữa các đối tượng (objects) đến K tâm (thường dùng khoảng cách Euclidean) 3. Nhóm các đối tượng vào nhóm gần nhất 4. Xác định lại tâm mới cho các nhóm 5. Thực hiện lại bước 2 cho đến khi không có sự thay đổi nhóm nào của các đối tượng Ví dụ minh họa thuật toán K-Mean: HVTH: Nguyễn Thành Đệ Trang: 4 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Giả sử ta có 4 loại thuốc A,B,C,D, mỗi loại thuộc được biểu diễn bởi 2 đặc trưng X và Y như sau. Mục đích của ta là nhóm các thuốc đã cho vào 2 nhóm (K=2) dựa vào các đặc trưng của chúng. Bước 1. Khởi tạo tâm (centroid) cho 2 nhóm. Giả sử ta chọn A là tâm của nhóm thứ nhất (tọa độ tâm nhóm thứ nhất c1(1,1)) và B là tâm của nhóm thứ 2 (tạo độ tâm nhóm thứ hai c2 (2,1)). Hình 3. Vòng lặp 0 Bước 2. Tính khoảng cách từ các đối tượng đến tâm của các nhóm (Khoảng cách Euclidean) HVTH: Nguyễn Thành Đệ Trang: 5 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Mỗi cột trong ma trận khoảng cách (D) là một đối tượng (cột thứ nhất tương ứng với đối tượng A, cột thứ 2 tương ứng với đối tượng B,…). Hàng thứ nhất trong ma trận khoảng cách biểu diễn khoảng cách giữa các đối tượng đến tâm của nhóm thứ nhất (c1) và hàng thứ 2 trong ma trận khoảng cách biểu diễn khoảng cách của các đối tượng đến tâm của nhóm thứ 2 (c2). Ví dụ, khoảng cách từ loại thuốc C=(4,3) đến tâm c1(1,1) là 3.61 và đến tâm c2(2,1) là 2.83 được tính như sau: Bước 3. Nhóm các đối tượng vào nhóm gần nhất Ta thấy rằng nhóm 1 sau vòng lặp thứ nhất gồm có 1 đối tượng A và nhóm 2 gồm các đối tượng còn lại B,C,D. Bước 5. Tính lại tọa độ các tâm cho các nhóm mới dựa vào tọa độ của các đối tượng trong nhóm. Nhóm 1 chỉ có 1 đối tượng A nên tâm nhóm 1 vẫn không đổi, c1(1,1). Tâm nhóm 2 được tính như sau: HVTH: Nguyễn Thành Đệ Trang: 6 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 4. Vòng lặp 1 Bước 6. Tính lại khoảng cách từ các đối tượng đến tâm mới Bước 7. Nhóm các đối tượng vào nhóm HVTH: Nguyễn Thành Đệ Trang: 7 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Bước 8. Tính lại tâm cho nhóm mới Hình 5. Vòng lặp 2 Bước 8. Tính lại khoảng cách từ các đối tượng đến tâm mới HVTH: Nguyễn Thành Đệ Trang: 8 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Bước 9. Nhóm các đối tượng vào nhóm Ta thấy G 2 = G 1 (Không có sự thay đổi nhóm nào của các đối tượng) nên thuật toán dừng và kết quả phân nhóm như sau: Thuật toán K-Means có ưu điểm là đơn giản, dễ hiểu và cài đặt. Tuy nhiên, một số hạn chế của K-Means là hiệu quả của thuật toán phụ thuộc vào việc chọn số nhóm K (phải xác định trước) và chi phí cho thực hiện vòng lặp tính toán khoảng cách lớn khi số cụm K và dữ liệu phân cụm lớn. 3. Thuật toán k-means song song Trong phần trước đã nói về thuật toán k-means. Bây giờ em sẽ trình bày thuật toán k-means song song. Đầu tiên chúng ta bắt đầu với vòng lặp mainLoop như hình 6. Vòng lặp đầu tiên lý tưởng cho quá trình song song hóa của một đối tượng dựa trên phân phối dữ liệu. Tuy nhiên vòng lặp song song hóa là vô cùng khó khăn. Vấn đề nằm trong một liên kết giữa việc gọi hai hàm là getNearestMean và recalculateMean. Một đối tượng HVTH: Nguyễn Thành Đệ Trang: 9 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU được chọn để xử lý sẽ gọi tất cả ba hàm bên trong vòng lặp phải hoàn thành trước khi đối tượng khác được gọi. Do đó, đơn giản quá trình song song hóa trong mainLoop là không thể. Mỗi bộ vi xử lý có thể, phụ thuộc các bộ vi xử lý khác, tìm cụm gần nhất cho tất cả các đối tượng cục bộ. Thành viên của cụm cho mỗi đối tượng được định nghĩa, giá trị chính và giá trị của các thành viên thường phải cập nhật thường xuyên. Hình 6. Thuật toán K-Means song song 4. Cài đặt thuật toán k-means song song. N điểm được thực hiện bởi thuật toán gom cụm K-means. Thuật toán này được cài đặt bằng C# và có sử dụng thư viện xử lý song song(Task Parallel Library (TPL)). Lớp tĩnh KMeansFactory để cài đặt Kmeans trên một mảng của khoảng cách và trọng tâm. public static class KMeansFactory { #region Distance & Centroid Function for double[] public static double EuclideanDistace(double[] d1, double[] d2) //distance function { double dist = 0; for (int i = 0; i < d1.Length; i++) { HVTH: Nguyễn Thành Đệ Trang: 10 [...]... TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 7 Giao diện chương trình - Khởi tạo thuật toán(Bước 1) với số cụm 100, số điểm 12000: HVTH: Nguyễn Thành Đệ Trang: 18 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 8 Khởi tạo chương trình - Chạy từng bước có giao diện: HVTH: Nguyễn Thành Đệ Trang: 19 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 9 Vòng lặp 1 HVTH: Nguyễn Thành Đệ Trang: 20 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 10 Vòng... LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 11 Vòng lặp 4 HVTH: Nguyễn Thành Đệ Trang: 22 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Hình 12 Vòng lặp 49 5 Kết luận Em đã cài đặt một phiên bản xử lý song song của thuật toán gom cụm k-means Thuật toán này được thiết kế để sử dụng cho khối dữ liệu lớn Mỗi sự kiện trên môi trường máy tính phân phối đơn giản Thuật toán k-means có ưu điểm là tương đối nhanh Độ phức tạp của thuật. .. Trang: 23 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU đầu khác nhau để có thể đạt kết quả đủ tốt Trong thực tế, có thể áp dụng thuật giải - di truyền để phát sinh các bộ khởi đầu Cần phải xác định trước số cụm Khó xác định số cụm thực sự mà không gian dữ liệu có Do đó có thể phải thử với - các giá trị k khác nhau Khó phát hiện các loại cụm có hình dạng phức tạp và nhất là các dạng cụm không lồi Không thể xử lý nhiễu... các cụm có dạng hình cầu, trong đó: n: số điểm trong không gian dữ liệu k: Số cụm cần phân hoạch t: Số lần lặp (t là khá nhỏ so với n) Tuy nhiên, thuật toán k-means cũng có những khuyết điểm sau: - Không đảm bảo đạt được tối ưu toàn cục và kết quả đầu ra phụ thuộc nhiều vào việc chọn k điểm khởi đầu Do đó có thể phải chạy lại thuật toán với nhiều bộ khởi HVTH: Nguyễn Thành Đệ Trang: 23 TIỂU LUẬN MÔN KHAI. .. trúc dữ liệu riêng để giữ thông tin này Ở đây sử dụng một mảng của cấu trúc dữ liệu ‘ConcurrentBag’ Cấu trúc dữ liệu này được tối ưu cho hoạt động song song Nó là một túi thứ tự(unordered bag) trong đó duy trì một danh sách liên kết cho mỗi tiến trình đang chạy mà thực hiện các hoạt động của nó, như vậy khóa đòi hỏi chỉ trên các tình huống nơi một tiến trình cần phải nhìn vào khối lượng dữ liệu. .. MÔN KHAI THÁC DỮ LIỆU Đây là một phiên bản có hỗ trợ đầy đủ, cơ bản nhất và chấp nhận hai đại diện để tính toán khoảng cách giữa các đối tượng và tính toán trọng tâm Những thuận lợi là khả năng thực hiện gom cụm bất cứ một đối tượng nào và dễ dàng chuyển đổi từ thuật toán kmeans thành bất kỳ các thuật toán liên quan như k-median/k-mediod, hoặc sử dụng bất kỳ khoảng cách như khoảng cách Manhattan Thuật. .. các trọng tâm Bằng cách làm này, sẽ giảm số lượng khóa mà chỉ cần một đối tượng duy nhất nắm giữ Đối tượng giữ theo dõi toàn bộ thay đổi trong những trọng tâm, vì thế có thể biết được khi nào thuật toán hội tụ HVTH: Nguyễn Thành Đệ Trang: 14 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU Để giảm thêm nữa số lượng truy cập của đối tượng lồng nhau TPL cung cấp các biến cục bộ tiến trình và những tiến trình cuối cùng,... } } count++; for (int i = 0; i < vectorSize; i++) { newCentroid[i] /= count; } } return newCentroid; #endregion Factory tạo 2 đối tượng sử dụng thuật toán k-means song và thuật toán k-mean tuần tự: HVTH: Nguyễn Thành Đệ Trang: 16 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU seqKMeans = PointKMeansFactory.Create(false); parKMeans = PointKMeansFactory.Create(true); public static BaseKMeans CreateParallel()... vào ConcurrentBag cung cấp một điểm đơn truy cập cho tập đầu vào không phức tạp đối với các nhà phát triển Ở đây sử dụng cấu trúc data này để lữu trữ tập các tập đầu vào gần nhất cho mỗi trọng tâm Parallel.For( 0, resInput.Input.Length, ( i ) =>{ HVTH: Nguyễn Thành Đệ Trang: 13 TIỂU LUẬN MÔN KHAI THÁC DỮ LIỆU T curInput = resInput.Input[i]; double minDist = double.MaxValue; int meanIndex = -1; for(... nhau Khó phát hiện các loại cụm có hình dạng phức tạp và nhất là các dạng cụm không lồi Không thể xử lý nhiễu và mẫu cá biệt Chỉ có thể áp dụng khi tính được trọng tâm 6 Tài liệu tham khảo [1] PGS.TS Đỗ Phúc Giáo Trình Khai Thác Dữ Liệu [1] M.R Anderberg Cluster Analysis for Applications Academic Press, 1973 [2] John A Hatigan Clustering Algorithms John Wiley and Sons, 1975 [3] W Kloesgen and J.M Zytkow . MÔN KHAI THÁC DỮ LIỆU LỜI CẢM ƠN « Ngày nay, gom cụm dữ liệu là một nhiệm vụ chính trong môn học khai thác dữ liệu. Việc gom cụm dữ liệu có rất nhiều ý nghĩa trong khoa học máy tính và trong. sát… Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp các phương pháp Unsupervised Learning trong Machine Learning. Có rất nhiều định nghĩa khác nhau về kỹ thuật này,. ban đầu là về thông kê. Trong những năm gần đây, gom cụm dữ liệu là một kỹ thuật chính trong chuyên ngành khái thác dữ liệu. Hoạt động cơ bản này có thể được áp dụng trong nhiều nhiều vụ như

Ngày đăng: 09/04/2015, 22:43

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w