Thuật toán DENCLUDE

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân cụm dữ liệu dựa trên mật độ và ứng dụng (Trang 56 - 70)

DENCLUDE (Density – base Clustering) do Hinneburg và Keim vào năm 1998 đưa ra cách tiếp cận khác với các thuật toán phân cụm dựa trên mật độ trước đó, cách tiếp cận này xem xét mô hình được sử dụng một công thức toán để mô tả mỗi điểm dữ liệu sẽ ảnh hưởng trong mô hình như thế nào được gọi là hàm ảnh hưởng có thế xem như một hàm mà mô tả ảnh hưởng của điểm dữ liệu với các đối tượng lân cận của nó. Ví dụ về hàm ảnh hưởng là các hàm Parabolic, hàm sóng ngang, hoặc hàm Gaussian.

Như vậy, DENCLUDE là phương pháp dựa trên một tập các hàm phân bổ mật độ và được xây dựng ý tưởng chính như sau :

 Ảnh hưởng của mỗi điểm dữ liệu có thế là hình thức được mô hình sử dụng một hàm tính toán, được gọi là hàm ảnh hưởng, mô tả tác động của điếm dữ liệu với các đối tượng lân cận của nó.

 Mật độ toàn cục của không gian dữ liệu được mô hình phân tích như là tổng các hàm ảnh hưởng của tất cả các điếm dữ liệu.

 Các cụm có thế xác định chính xác bởi việc xác định mật độ cao (density attractors), trong đó mật độ cao là các điếm cực đại hàm mật độ toàn cục. Sử dụng các ô lưới không chỉ giữ thông tin về các ô lưới mà thực tế nó còn chứa đựng cả các điểm dữ liệu. Nó quản lý các ô trong một cấu trúc truy cập dựa trên cây và như vậy nó nhanh hơn so với một số các thuật toán có ảnh hưởng như DBSCAN. Tuy nhiên, phương pháp này đòi hỏi chọn lựa kỹ lưỡng tham biến mật độ và ngưỡng nhiễu, việc chọn lựa tham số là quan trọng ảnh hưởng tới chất lượng của các kết quả phân cụm.

Định nghĩa : Cho x, y là hai đối tượng trong không gian d chiều ký hiệu là Fd. Hàm ảnh hưởng của đối tượng y ϵ Fd lên đối tượng x là một hàm

y d

B 0

f : F R mà được định nghĩa dưới dạng một hàm ảnh hưởng cơ bản

y

b B b

dụ về hàm ảnh hưởng như sau:

 Hàm ảnh hưởng sóng ngang : square

0 if d(x, y) f (x, y) 1 if d(x, y)           trong đó ô là một ngưỡng.  Hàm ảnh hưởng Gaussian : 2 2 d(x,y) 2 square f (x, y) e 

Mặt khác, hàm mật độ tại điểm x ϵ Fd được định nghĩa là tổng các hàm ảnh hưởng của tất cả các điếm dữ liệu. Cho n là các đối tượng dữ liệu được mô tả bởi một tập véctơ D = {xi, x2, ... , xn} ϵ Fd hàm mật độ được định nghĩa như sau: n D x (i) B B i 1 F (x) F (x)   

Hàm mật độ được thành lập dựa trên ảnh hưởng Gaussian được xác định như sau: 2 2 d( x,y) n D 2 Gauss i 1 F (d) e   

Ví dụ về kết quả phân cụm dữ liệu của thuật toán DENCLUE với hàm chi phối Gausian được biểu diễn như sau. Các cực đại mật độ là các giá trị tại đỉnh của đồ thị. Một cụm cho một cực đại mật độ x* là tập con C, khi các hàm mật độ tại x* không bé hơn δ.

DENCLUE phụ thuộc nhiều vào ngưỡng nhiễu và tham số mật độ nhưng DENCLUE có các lợi thế chính được so sánh với các thuật toán phân cụm khác sau đây :

 Có cơ sở toán học vững chắc và tổng quát hóa các phương pháp phân cụm khác, bao gồm các phương pháp phân cấp, dựa trên phân hoạch.

 Có các đặc tính phân cụm tốt cho các tập dữ liệu với số lượng lớn và nhiễu.

 Cho phép các cụm có hình dạng bất kỳ trong tập dữ liệu đa chiều được mô tả trong công thức toán.

Độ phức tạp tính toán của DENCLUDE là O(nlogn). Các thuật toán dựa trên mật độ không thực hiện kỹ thuật phân mẫu trên tập dữ liệu như trong các thuật toán phân cụm phân hoạch, vì điều này có thế làm tăng thêm độ phức tạp đã có sự khác nhau giữa mật độ của các đối tượng trong mẫu với mật độ của toàn bộ dữ liệu.

Trong chương này sẽ xây dựng một chương trình thực nghiệm để áp dụng phương pháp phân cụm dữ liệu dựa trên mật độ bằng thuật toán DBSCAN với ý tưởng bài toán thực tế là phân nhóm các điểm phát sóng viễn thông trong một khu vực. Do kiến thức và thời gian hạn chế nên trong khuân khổ luận văn em chỉ xây dựng chương trình thực nghiệm với tính chất mô phỏng, nên chương trình chưa có khả năng áp dụng vào trong thực tế. Rất mong nhận được sự đóng góp ý kiến của thầy cô để em có thể phát triển hoàn thiện chương trình đưa vào áp dụng trong thực tế.

3.1. Ý tưởng bài toán

Do nhu cầu nâng cao chất lượng dịch vụ viễn thông nên việc lắp đặt thêm các trạm phát sóng địa bàn của địa phương ngày càng tăng. Để đảm bảo việc theo dõi quản lý được tốt hơn chúng ta nên phân các điểm lắp đặt các trạm phát này thành các nhóm nhỏ để tiện cho việc phân công theo dõi, vận hành, bào trì, khai thác sử dụng.

3.2. Nguồn dữ liệu đầu vào

Giả sử ta có tọa độ các vị trí lắp đặt trạm phát sóng viễn thông trong một khu vực. Dựa vào các tọa độ đó ta mô phỏng các vị trí đó thành các điểm trên hệ thống bản đồ của chương trình.

Như vậy, dữ liệu đầu vào sử dụng trong bài toán chủ yếu là các lớp thông tin dạng điểm, phạm vi trong một khu vực trên bản đồ.

3.3. Phương pháp giải quyết bài toán

Lựa chọn phương pháp phân cụm:

Với đặc điểm của dữ liệu đầu vào ở trên ta lựa chọn phương pháp phân cụm dựa trên mật độ bởi:

- Đối tượng dữ liệu cần phân cụm chủ yếu là các điểm, tức là các đối tượng dạng điểm. Kiểu này khá phù hợp với phương pháp tiếp cận dựa trên mật độ.

- Không cần thiết phải biết trước số cụm sau khi phân cụm có được, do đó không sử dụng tiếp cận phân hoạch.

- Không cần lưu trữ thông tin các mức trung gian trong quá trình phân cụm, do đó không sử dụng tiếp cận theo lưới.

Lựa chọn độ đo sử dụng trong phân cụm:

Chúng ta quan tâm đến tính liên tục về mặt không gian của các điểm trong cụm và khoảng cách giữa các điểm này chứ không quan tâm đến hướng của chúng. Hơn nữa với các đối tượng dạng điểm, quan hệ về topology mang ít ý nghĩa ngoại trừ các đối tượng này mang thông tin về mạng lưới liên thông như: mạng lưới cột điện, mạng lưới cấp nước…Do vậy ta sử dụng độ đo

khoảng cách trong bài toán phân cụm đã đề ra (các độ đo đã được đề cập ở mục 1.2.6.2, chương 1).

3.4. Kết quả thực nghiệm

Giả sử ta có dữ liệu mẫu nhập vào là 60 điểm trên hệ thống bản đồ của chương trình, sau đó chạy thuật toán DBSCAN để phân cụm các điểm này với Eps = 37 & MinPts = 3 ta thu được 9 cụm tương ứng với 9 màu khác nhau thể hiện trên bản đồ.

Hình 3.1: Kết qua sau khi phân cụm của chương trình thực nghiệm Tổng có [60] điểm: (218, 192) (251, 197) (237, 215) (242, 249) (278, 275) (268, 233) (297, 212) (307, 254) (366, 267) (358, 220) (399, 209) (421, 181) (412, 139) (430, 118) (472, 124) (482, 90) (502, 77) (528, 114) (570, 151) (601, 193) (618, 235) (575, 266) (559, 220) (576, 187) (527, 180) (515, 148) (481, 206) (507, 238) (524, 271) (543, 312) (549, 360) (524, 382) (466, 364) (412, 368) (380, 344) (410, 308) (415, 261) (427, 255) (455, 319) (496, 354) (528, 352) (488, 290) (481, 270) (470, 244) (461, 220) (469, 162) (333, 233) (419, 339) (395, 246) (596, 226) (526, 297) (427, 325) (589, 241) (408, 117) (436, 143) (403, 92) (482, 188) (405, 336) (441, 345) (476, 105) Cụm [1] chứa [6] điểm: (218, 192) (251, 197) (237, 215) (242, 249) (268, 233) (297, 212) Cụm [2] chứa [4] điểm: (278, 275) (307, 254) (358, 220) (333, 233)

Cụm [3] chứa [6] điểm: (366, 267) (399, 209) (421, 181) (415, 261) (427, 255) (395, 246) Cụm [4] chứa [5] điểm: (412, 139) (430, 118) (408, 117) (436, 143) (403, 92) Cụm [5] chứa [4] điểm: (472, 124) (482, 90) (502, 77) (476, 105) Cụm [6] chứa [8] điểm: (570, 151) (601, 193) (618, 235) (575, 266) (559, 220) (576, 187) (596, 226) (589, 241) Cụm [7] chứa [3] điểm: (528, 114) (527, 180) (515, 148) Cụm [8] chứa [11] điểm: (481, 206) (507, 238) (524, 271) (543, 312) (488, 290) (481, 270) (470, 244) (461, 220) (469, 162) (526, 297) (482, 188) Cụm [9] chứa [13] điểm: (549, 360) (524, 382) (466, 364) (412, 368) (380, 344) (410, 308) (455, 319) (496, 354) (528, 352) (419, 339) (427, 325) (405, 336) (441, 345)

1. Những kết quả chính của luận văn

Luận văn tìm hiểu bài toán phân cụm dữ liệu và đi sâu tìm hiểu phân cụm dữ liệu dựa trên mật độ. Luận văn đã đạt được những kết quả chính là:

- Nghiên cứu tổng quan về khai phá dữ liệu và phân cụm dữ liệu. Các phương pháp, lĩnh vực và các hướng tiếp cận trong phân cụm dữ liệu. - Nghiên cứu chi tiết phương pháp phân cụm dữ liệu dựa trên mật độ và

các thuật toán liên quan. Tìm hiêu sâu thuật toán DBSCAN qua các đánh giá và so sánh.

- Xây dựng chương trình thực nghiệm áp dụng phương pháp phân cụm dữ liệu dựa trên mật độ bằng thuật toán DBSCAN với bài toán thực tế phân nhóm các trạm phát sóng viễn thông trong một khu vực.

Ý nghĩa khoa học của luận văn:

Qua quá trình thực nghiệm và nghiên cứu lý thuyết có thể đưa ra một số kết luận như sau:

- Mỗi một giải thuật phân cụm áp dụng cho một số mục tiêu và kiểu dữ liệu nhất định.

- Mỗi giải thuật có một mức độ chính xác riêng và khả năng thực hiện trên từng kích thước dữ liệu là khác nhau. Điều này còn tuỳ thuộc vào cách thức tổ chức dữ liệu ở bộ nhớ chính, bộ nhớ ngoài... của các giải thuật. - Khai phá dữ liệu sẽ hiệu quả hơn khi bước tiền xử lý, lựa chọn thuộc

2. Hướng nghiên cứu tiếp theo:

- Hướng nghiên cứu của luận văn có thể được mở rộng sang lớp dữ liệu không gian, sử dụng trong khai phá dữ liệu liên quan đến các đối tượng địa lý.

- Vấn đề phân cụm dữ liệu đa chiều có thể được thử nghiệm để so sánh với phương pháp hiện tại là phân cụm đơn chiều kết hợp với phân tích đa chiều dữ liệu không gian.

- Một số ràng buộc và trọng số có thể được đưa vào bài toán để có thể khai phá dữ liệu một cách mềm dẻo và linh hoạt trong các điều kiện cụ thể của bài toán.

- Phương pháp tiếp cận sử dụng phân cụm mờ có thể được thử nghiệm bởi tính tương đối cố hữu áp dụng với bài toán tối ưu.

Tiếng Việt

[1] Nguyễn Hoàng Tú Anh,“Khai thác dữ liệu và ứng dụng”, Giáo trình , Đại học KHTN Tp Hồ Chí Minh,2009.

[2] Vũ Lan Phương, “Nghiên cứu và cài đặt một số giải thuật phân cụm phân

lớp”, Luận văn thạc sĩ, Đại học Bách khoa Hà Nội, 2006.

Tiếng Anh

[3] Ester, M., Kriegel, H.-P., Sander, J., & Xu, X. (1996), “A density-based

algorithm for discovering clusters in large spatial databases with noise”,

Second Int. Conf. on Knowledge Discovery and Data Mining , (pp. 226-231). Portland, Oregon.

[4] Jiawei Han, Micheline Kamber, Data Mining: Concepts and techniques,

Second Edition, Elsevier Inc, 2011.

[5] M.Fayyad, Gregory Piatetsky-Shapiro, Padhraic Smyth, and Ramasamy Uthurusamy, Advances in Knowledge Discovery and Data Mining, AAAI

Press/ The MIT Press,1996.

[6] Oracle, Oracle Data Mining Concepts 10g Release 1 (10.1), Oracle

Corporation, 2003.

[7] P. Berkhin, Survey of Clustering Data Mining Techniques, Research paper. Accrue Software, Inc, http://www.accrue.com, 2009.

[8] http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/index.html [9] https://en.wikipedia.org/wiki/Cluster_analysis

PHỤ LỤC

Mã code chính của chương trình:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DBSCAN_GUI {

public class Algoritam

{

public const int NOISE = -1;

public const int UNCLASSIFIED = 0;

public List<Tocka> D = new List<Tocka>(); public double eps;

public int MinPts;

public List<List<Tocka>> klasteri; public String text;

public void dodajTocku(int x, int y) {

D.Add(new Tocka(x, y)); }

public int dist(Tocka p, Tocka q) {

return (int)Math.Sqrt(Math.Pow(q.X - p.X, 2) +

Math.Pow(q.Y - p.Y, 2)); }

public void pokreniAlgoritam(List<Tocka> D) {

klasteri = DBSCAN(D, eps, MinPts);

text += "Tổng có [" + D.Count + "] điểm:\n"; foreach (Tocka p in D) text += p;

int total = 0;

for (int i = 0; i < klasteri.Count; i++) {

int count = klasteri[i].Count; total += count;

}

total = D.Count - total; if (total > 0)

{

text += "\n\nCó [" + total + "] điểm không thuộc cụm nào:\n"; foreach (Tocka p in D) { if (p.C == NOISE) text += p; } } else {

text += "\n\nNo points that represent noise.\n"; }

}

public List<List<Tocka>> DBSCAN(List<Tocka> D, double eps,

int MinPts) {

if (D == null) return null;

List<List<Tocka>> klasteri = new List<List<Tocka>>(); int C = 1;

for (int i = 0; i < D.Count; i++) {

Tocka p = D[i];

if (p.C == UNCLASSIFIED)

if (expandCluster(D, p, C, eps, MinPts)) C++; }

int total = D.OrderBy(p => p.C).Last().C; if (total < 1) return klasteri;

for (int i = 0; i < total; i++) klasteri.Add(new

List<Tocka>());

foreach (Tocka p in D) {

if (p.C > UNCLASSIFIED) klasteri[p.C - 1].Add(p); }

return klasteri; }

public bool expandCluster(List<Tocka> NeighborPts, Tocka

p, int C, double eps, int MinPts) {

List<Tocka> seeds = regionQuery(NeighborPts, p, eps); if (seeds.Count < MinPts) { p.C = NOISE; return false; } else {

for (int i = 0; i < seeds.Count; i++) seeds[i].C = C;

seeds.Remove(p);

while (seeds.Count > 0) {

Tocka currentP = seeds[0];

List<Tocka> result = regionQuery(NeighborPts, currentP, eps);

if (result.Count >= MinPts) {

for (int i = 0; i < result.Count; i++) {

Tocka resultP = result[i];

if (resultP.C == UNCLASSIFIED || resultP.C == NOISE) { if (resultP.C == UNCLASSIFIED) seeds.Add(resultP); resultP.C = C; } } } seeds.Remove(currentP); } return true; } }

public List<Tocka> regionQuery(List<Tocka> D, Tocka p,

{

if (dist(p, D[i]) <= eps) okolina.Add(D[i]); }

return okolina; }

} }

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân cụm dữ liệu dựa trên mật độ và ứng dụng (Trang 56 - 70)

Tải bản đầy đủ (PDF)

(70 trang)