Xác định tham số cho thuật toán DBSCAN

Một phần của tài liệu Nghiên cứu, tìm hiểu một số thuật toán cơ bản về phân nhóm dữ liệu trên cơ sở dữ liệu không gian (Trang 67 - 96)

Thuật toán DBSCAN đƣợc đƣa ra để tìm cách phân nhóm dữ liệu và loại bỏ dữ liệu nhiễu trong dữ liệu không gian. Với định nghĩa về lớp và định nghĩa về dữ liệu nhiễu chúng ta có thể phân nhóm và loại bỏ dữ liệu nhiễu một cách lý tƣởng nếu nhƣ chúng ta có đƣợc tham số Eps (là tham số xác định bán kính cực đại vùng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ lân cận của một điểm) và MinPts (là tham số xác định số điểm tối thiểu trong vùng lân cận bán kính Eps của một điểm) thích hợp. Tuy nhiên, không dễ để có thể tìm đƣợc những tham số đó trƣớc khi xây dựng các lớp. Mặc dù vậy, thuật toán heuristic sau cho phép xác định đƣợc tham số Eps và MinPts khá hiệu quả cho cả những lớp ít điểm dữ liệu nhất và những lớp nhiều điểm dữ liệu nhất.

Để xác định 2 tham số Eps và MinPts cho tập dữ liệu vào, chúng ta xác định 2 tham số Eps và MinPts cho lớp có mật độ ít nhỏ nhất (“thinnest”) trong cơ sở dữ liệu dựa vào heuristic sau: Giả sử d là khoảng cách từ điểm p đến điểm gần nhất thứ k của nó. Lúc đó Nd(p) có ít nhất k+1 điểm. Nd(p) chỉ có thể có nhiều hơn k+1 điểm trong trƣờng hợp là nhiều điểm có cùng khoảng cách d từ p. Hơn nữa, sự thay đổi của k thƣờng không ảnh hƣởng lớn đến sự thay đổi của d trừ trƣờng hợp là các điểm trong cơ sở dữ liệu gần nhƣ nằm trên một đƣờng thẳng.

Với một giá trị k, định nghĩa một hàm k-dist từ tập dữ liệu D ánh xạ vào tập số thực, với giá trị chính là khoảng cách tới điểm gần nhất thứ k. Khi sắp xếp toàn bộ dữ liệu theo hàm k-dist đó theo thứ tự giảm dần sẽ cho một đồ thị và gọi là đồ thị khoảng cách k sắp xếp (sorted k-dist graph) (Hình 4.2 hiển thị đồ thị sắp xếp với k = 4). Nếu ta chọn bất cứ một điểm p nào đó và thiết lập Eps = k-dist của điểm p đó và MinPts = k, tất cả những điểm có k-dist nhỏ hơn hoặc bằng k-dist của p sẽ là nhân. Nếu chúng ta có thể tìm ra đƣợc điểm giới hạn đó cùng với giá trị k-dist là lớn nhất trong lớp nhỏ nhất chúng ta đã tìm thấy đƣợc tham số mong muốn. Những điểm bên trái của điểm giới hạn đó (những điểm có k-dist lớn hơn) là dữ liệu nhiễu. Còn tất cả những điểm bên phải (điểm có k-dist nhỏ hơn) là thuộc vào một trong các lớp. [5]

Hình 4.2. Đồ thị khoảng cách với k = 4. Dựa vào đồ thị khoảng cách đó ta có thể đƣa ra đƣợc khoảng cách Eps một cách chính xác

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Chúng ta sẽ rất khó khăn để tìm đƣợc điểm giới hạn đó. Tuy nhiên, ngƣời sử dụng có thể dựa vào biểu đồ đó để tìm ra điểm thích hợp một cách dễ dàng.

DBSCAN cần 2 tham số là Eps và MinPts. Tuy nhiên, trong các trƣờng hợp thực tế với k > 4 không có sự sai khác đáng kể so với đồ thị sắp xếp với k = 4. Ngoài ra thời gian để tính với k > 4 là lớn hơn rất nhiều so với k = 4. Chính vì thế trong thực tế k thƣờng đƣợc chọn với giá trị là 4. Để xác định tham số Eps, lần lƣợt thực hiện các bƣớc sau:

 Hiện lên đồ thị k-dist đã sắp xếp với k = 4.

 Nếu ngƣời sử dụng có thể dự đoán đƣợc phần trăm dữ liệu nhiễu thì hệ thống có thể đƣa ra đƣợc điểm giới hạn.

 Nếu ngƣời sử dụng không thể dự đoán đƣợc phần trăm dữ liệu nhiễu thì sẽ cho phép ngƣời sử dụng chọn một điểm là điểm giới hạn và sử dụng tham số 4-dist của điểm đó làm giá trị Eps cho thuật toán DBSCAN. Ví dụ: Cho tập dữ liệu, mỗi điểm dữ liệu đƣợc biểu diễn bởi toạ độ (x,y) nhƣ hình 4.3.

- Để xác định tham số cho tập dữ liệu này, đầu tiên tính các khoảng cách láng giềng gần nhất thứ 3 của các điểm dữ liệu. Ta đƣợc:

Tập dữ liệu Khoảng cách láng giềng gần nhất thứ 3

(2,2) 4 (3,1) 4 (3,4) 3 (5,3) 4 (9,8) 3 (10,7) 3 (10,10) 4 (12,8) 4 (3,14) 9 (10,14) 5 (11,13) 5

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

(12,15) 3

(14,15) 5

Hình 4.3. Tập các dữ liệu đƣợc biểu diễn trong toạ độ 2 chiều

- Tiếp đến, sắp xếp các khoảng cách đó theo thứ tự giảm dần, vẽ đồ thị cho các điểm đó, ta đƣợc một đồ thị khoảng cách k-dist (k = 3) đƣợc sắp xếp nhƣ hình 4.4.

Hình 4.4. Đồ thị k-dist (k = 3)

- Xét các tập dữ liệu tồn tại nhiễu nhƣ hình 4.5 và hình 4.6

“thung lũng” (valley) đầu tiên định nghĩa các điểm nhiễu

Dựa vào đồ thị, chọn Eps nhỏ hơn khoảng cách đƣợc định nghĩa bởi thung lũng đầu tiên. (trong trƣờng hợp này, chọn Eps = 5) 2 4 8 10 12 14 16 18 20 2 4 8 10 12 14 16 18 20

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Hình 4.5 Hình 4.6

- Xây dựng đồ thị biểu diễn hàm khoảng cách của láng giềng gần nhất thứ 4 (chọn k = 4) đối với các tập dữ liệu ở hình 4.5 và hình 4.6 ở trên tƣơng ứng là hình 4.7 và hình 4.8

- Dựa vào đồ thị đó, ta có thể xác định đƣợc giá trị Eps là giá trị nhỏ hơn khoảng cách của láng giềng gần nhất thứ 4 của điểm nằm ở thung lũng đầu tiên.

Hình 4.7

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Hình 4.8 (adsbygoogle = window.adsbygoogle || []).push({});

Nhận xét và đánh giá tham số trên một số tập dữ liệu đặc thù

- Nhƣ vậy với thuật toán trên, dựa vào đồ thị hàm khoảng cách ta có thể xác định 2 tham số MinPts và Eps.

- Tuy nhiên việc xác định tham số cho thật chính xác là một vấn đề khó. Phƣơng pháp này sử dụng heuristic để xác định trên tập dữ liệu có mật độ nhỏ của cơ sở dữ liệu để đƣa ra tham số toàn cục, vì vậy trong trƣờng hợp mật độ các điểm dữ liệu giữa các lớp là không đồng đều nhƣ các tập dữ liệu ở hình 4.9, sử dụng cách xác định tham số toàn cục sẽ cho ra kết quả không chính xác. Thật vậy, xét tập dữ liệu ở hình H3 nếu chọn Eps và MinPts phù hợp cho việc phân nhóm các điểm dữ liệu ở các nhóm A và B thì những điểm dữ liệu thuộc nhóm C1, C2, C3 sẽ cùng thuộc 1 nhóm C. Và ngƣợc lại, thì các điểm dữ liệu ở nhóm A và B có thể trở thành các điểm nhiễu hoặc là sẽ đƣợc phân thành nhiều nhóm.

(H1) (H2) (H3)

Hình 4.9. Các tập dữ liệu với mật độ phân bố khác nhau giữa các lớp (nhóm)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

4.3.2. Tối ưu hoá việc lựa chọn các tham số và cho thuật toán DENCLUE

Một cách trực quan, ta thấy kết quả của thuật toán DENCLUE đƣa ra phụ thuộc vào sự lựa chọn 2 tham số đầu vào đó là tham số mật độ (density parameter) và ngƣỡng nhiễu (noise threshold) . Tham số xác định sự ảnh hƣởng của một điểm lên những điểm lân cận của nó. Trong khi đó ngƣỡng nhiễu thể hiện xác định các điểm hút mật độ. Nó cho phép thu nhỏ lại số điểm hút mật độ và nâng cao hiệu quả thực hiện.

Chọn một giá trị thích hợp có thể thực hiện đƣợc nhờ vào việc xem xét các giá trị khác nhau để xác định ra khoảng lớn nhất giữa max và min khi mà số điểm hút mật độ m( ) là một hằng số. Hình dƣới đây là một mô tả về sự ảnh hƣởng với m( ).

Hình 4.10: Đồ thị mô tả sự phụ thuộc m( ) vào .

Tham số là mức mật độ tối thiểu để một điểm hút mật độ đƣợc xác định. Nếu đƣợc đặt là 0, tất cả những điểm hút mật độ cùng với những điểm bị hút bởi nó đƣợc xem nhƣ là một lớp. Kết quả này không phải là kết quả mong muốn đặc biệt trong trƣờng hợp mà vùng với mật độ thấp thì mỗi điểm có thể trở thành một lớp. Với một lựa chọn tốt thuật toán cho phép làm tụ lại những điểm trong những vùng có mật độ điểm cao và giảm thời gian tính toán. Chú ý rằng chỉ có những điểm hút mật độ cần có mật độ điểm . Những điểm có thể thuộc vào một lớp kết quả cũng có thể có mật độ điểm rất thấp do thuật toán phải gán mọi điểm bị hút mật độ cho lớp. Tuy nhiên, vấn đề đặt ra là với lựa chọn nào là tốt nhất?

Giả sử nhƣ cơ sở dữ liệu D không có nhiễu và mọi điểm hút mật độ của D đƣợc xác định và có thể đƣợc chọn 0 min{ ( *)}

* f D x

D

x . Tuy nhiên, trong hầu hết m( )

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ các trƣờng hợp dữ liệu bao gồm cả nhiễu (D=DC DN) (DC và DN đƣợc định nghĩa trong phần 2.3.2.b chƣơng 2). Theo bổ đề 1 giới hạn lỗi có thể đƣợc miêu tả là một hằng số ||DN ||. 2 2 dvà vì thế nên đƣợc chọn trong khoảng:

*)} ( { min 2 . || || * 2 x f D Dc X x d N [11]

4.4. Cài đặt thử nghiệm và đánh giá kết quả

Nhƣ ta đã biết, có rất nhiều thuật toán phân nhóm và mỗi thuật toán đều có những ƣu điểm và nhƣợc điểm. Tuy nhiên tuỳ vào từng ứng dụng với các dạng dữ liệu đầu vào và mục đích khai thác dữ liệu của ngƣời sử dụng mà ta có các chọn lựa áp dụng các thuật toán khác nhau để đạt đƣợc hiệu quả tốt nhất.

Chƣơng này sẽ tiến hành cài đặt một số các thuật toán phân nhóm cho cơ sở dữ liệu không gian nhƣ DBSCAN, DBCLASD. Ngoài ra chƣơng trình còn cài đặt thuật toán K-MEANS là thuật toán đại diện cho hầu hết các thuật toán phân nhóm tốt trong trƣờng hợp dữ liệu thông thƣờng. Và chạy thử các thuật toán này với các dạng dữ liệu đầu vào tự tạo ở dạng là một tập các điểm phân bố trong không gian 2 chiều từ đó có những đánh giá so sánh về tính hiệu quả và khả năng thực hiện của các thuật toán với các dạng dữ liệu khác nhau.

4.4.1. Xây dựng chương trình cài đặt thuật toán phân nhóm

Chƣơng trình đánh giá các thuật toán thực hiện qua 3 khối chính (hình 4.11) gồm khối tạo lập dữ liệu đầu vào, khối thực hiện thuật toán và khối hiển thị kết quả. Khối tạo lập dữ liệu cho phép ngƣời sử dụng tự tạo các mẫu dữ liệu đặc trƣng hoặc đọc dữ liệu đầu vào từ các file ảnh dạng Bitmap. Khối xử lý thuật toán sẽ tiến hành nhận dữ liệu từ khối tạo lập dữ liệu và tiến hành xử lý thực hiện quá trình chia lớp dữ liệu. Khối hiển thị kết quả sẽ hiển thị các lớp dữ liệu sau khi xử lý và có thể lƣu lại dƣới dạng các file bitmap.

Hình 4.11: Sơ đồ thực hiện chƣơng trình

Khối tạo lập dữ liệu Khối thực hiện

thuật toán

Khối hiển thị kết quả

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

4.4.2. Tạo lập dữ liệu

Bộ tạo lập dữ liệu có tác dụng chuẩn bị dữ liệu là đầu vào cho các thuật toán. Bộ phận này cho phép đọc dữ liệu từ các file bitmap hoặc soạn thảo các ảnh bitmap dữ liệu. Quá trình này thực hiện dựa vào lớp đƣợc xây dựng là CBmp

Lớp này cho phép đọc một ảnh bitmap, lấy ra các thông tin về ảnh nhƣ kích thƣớc, bảng màu, hiển thị ảnh bitmap và lƣu trữ ảnh bitmap. Cấu trúc của lớp thao tác với ảnh bitmap CBmp đƣợc xây dựng nhƣ sau: (adsbygoogle = window.adsbygoogle || []).push({});

class CBmp : public CObject {

protected:

LPBYTE m_pBits;//mảng lƣu dữ liệu của ảnh

LPBITMAPINFO m_pBMI;//cấu trúc lƣu thông tin ảnh BOOL CreatePalette();//hàm nạp bảng màu hệ thống WORD PaletteSize() const;

void Free();

CBmp& operator = (CBmp& bmp); public:

CPalette* m_pPalette; CBmp();

virtual ~CBmp();

DWORD Width() const;//hàm lấy chiều rộng của ảnh DWORD Height() const;//hàm lấy chiều cao của ảnh WORD NumColors() const;//hàm lấy số màu

BOOL IsValid() const { return (m_pBMI != NULL); }

BOOL Paint(HDC,LPRECT,LPRECT) const;//hàm hiển thị ảnh DWORD Save(CFile& file) const;//hàm ghi ảnh

DWORD Read(CFile& file);//hàm đọc ảnh void Invalidate() { Free(); }

LPBYTE GetBitmap();

BOOL CreateDib8bit(DWORD width, DWORD height, LPBYTE pBits); };

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Trong đó 2 hàm quan trọng nhất trong lớp trên đó là hàm Read(Cfile& file) và hàm Save(Cfile& file).

4.4.3. Cài đặt thuật toán phân nhóm

Cấu trúc dữ liệu biểu diễn trong các thuật toán thƣờng là mảng động 1 chiều. Do số lƣợng các đối tƣợng trong mảng dữ liệu thƣờng rất lớn và quá trình xử lý thƣờng phải đọc toàn bộ mảng dữ liệu vào bộ nhớ nên cần sử dụng kỹ thuật cấp phát động để tiết kiệm bộ nhớ và tăng thời gian thực hiện.

a. Xác định khoảng cách giữa các đối tƣợng

Khoảng cách giữa các đối tƣợng trong dữ liệu là một trong những yếu tố quyết định đến hiệu quả và chất lƣợng của các thuật toán chia lớp. Tuỳ vào loại dữ liệu cụ thể và mục đích phân nhóm mà ta đƣa ra các độ đo khoảng cách khác nhau.

Trong chƣơng trình đánh giá các thuật toán với dữ liệu đầu vào ở dạng ảnh không gian 2 chiều, mỗi điểm đối tƣợng trong không gian đƣợc biểu diễn bằng tọa độ Đề các (x,y) ta sẽ sử dụng độ đo khoảng cách Euclide để tính khoảng cách giữa 2 đối tƣợng trong không gian. Cụ thể để tính độ đo khoảng cách giữa 2 điểm đối tƣợng có toạ độ (x1, y1) và (x2, y2) ta sử dụng công thức: 2 2 1 2 2 1 ) ( ) (x x y y D

b. Thuật toán K-means

Ý tƣởng chủ đạo của thuật toán là xác định các điểm đại diện của mỗi lớp sau đó ấn định các điểm đối tƣợng vào các lớp dựa vào khoảng cách của điểm đó đến điểm đại diện của lớp.

Thuật toán đƣợc thực hiện theo các bƣớc sau

Bƣớc 1: Khởi tạo các thông số: số lớp k cần chia, tập các đối tƣợng.

Bƣớc 2: Chọn ngẫu nhiên k đối tƣợng làm điểm đại diện của lớp, thƣờng chọn k đối tƣợng đầu tiên.

Bƣớc 3: Xét từng điểm dữ liệu: tính khoảng cách từ điểm này đến các điểm đại diện của lớp, ấn định điểm dữ liệu vào lớp có khoảng cách đến điểm đại diện là nhỏ nhất.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Bƣớc 4: Cập nhật lại điểm đại diện của mỗi lớp xác định bằng trung bình cộng tọa độ các điểm thuộc lớp. Cụ thể tọa độ của điểm đại diện đƣợc tính bằng:

Trong đó (xi,yi) là các điểm thuộc lớp t, i=1..n

Nếu có sự thay đổi tọa độ của các điểm đại diện của lớp quay lại bƣớc 3. (adsbygoogle = window.adsbygoogle || []).push({});

Bƣớc 5: Hiển thị kết quả. Kết thúc.

Dữ liệu và các hàm xử lý của thuật toán K-means đƣợc viết trong lớp CKMean nhƣ sau:

class CKMean {

public:

LPBYTE GetResult();

int GetClass(CPoint p, int top, int left); void Add(CPoint p, int top, int left); void Process();

void Init();

CKMean(int k, int w, int h, LPBYTE plistPoint); virtual ~CKMean();

protected:

int UpdateCenter();

void DistributeSample(int p); int Distance(int p1, int p2); LPBYTE listCluster; int *listCenter; int numCluster; int height; int width; LPBYTE listPoint; };

Dữ liệu thuộc lớp CKMeans bao gồm

n x x n i i t 1 n y y n i i t 1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Kích thƣớc vùng dữ liệu ảnh đƣợc biểu diễn bởi 2 biến width, height lƣu trữ chiều rộng và chiều cao của mảng dữ liệu.

Biến lƣu trữ tập các điểm dữ liệu là mảng một chiều listPoint. Các phần tử trong mảng nhận 2 giá trị: 1 xác định có điểm dữ liệu và 0 không có điểm dữ liệu. Một điểm trong không gian có tọa độ (x,y) đƣợc chuyển sang vị trí tƣơng ứng của nó trong mảng theo công thức: i = x+y*width

Biến listCluster là mảng một chiều sử dụng để lƣu giá trị lớp của các điểm tƣơng ứng trong mảng dữ liệu listPoint. Mỗi phần tử của mảng listCluster có giá trị là Id của lớp của điểm dữ liệu tƣơng ứng.

Một phần của tài liệu Nghiên cứu, tìm hiểu một số thuật toán cơ bản về phân nhóm dữ liệu trên cơ sở dữ liệu không gian (Trang 67 - 96)