MÔN KHAI THÁC DỮ LIỆU VÀ LUẬT KẾT HỢ P LAB 2 – THUẬT TOÁN DBSCAN A. ÔN TẬP LÝ THUYẾT 1. M ộ t số khái niệ m Phân bố trong lân cận của một điểm được xác định bằng một hàm đo khoảng cách gi ữa hai đối tượ ng, ng, ký hiệu là dist(p,q) là dist(p,q) với p, q là hai điểm dữ liệu. Lân cận Eps của một điểm p (Eps-neighborhood) là t ập các điểm (mẫu tin) nằm trong lân c ận Eps c ủa p, ký hiệu là N là N Eps(p). Trong đó, Eps là bán kính tối đa dùng để tìm vùng lân c ận với điểm p .
N Eps Eps ( p) {q D | dist ( p, q) Eps} MinPts là số điểm dữ liệu tối thiểu trong lân cận Eps của một điểm dữ liệu. Đối tượ ng nòng c ố t (core point): là đối tượ ng ng mà lân c ận Eps của nó chứa ít nhất là MinPts đối tượ ng ng khác. Đối tượ ng biên (border point): không ph ải là đối tượ ng ng nòng cốt nhưng lại có phân b ố có thể đi đến đượ c từ một điểm nòng cốt trong cluster. Đối tượ ng nhiễ u (noise point): là nh ững đối tượ ng ng không ph ải đối tượ ng ng nòng cốt cũng không phải đối tượ ng ng biên. 2.
Các định nghĩa Định nghĩa 1: Phân bố có thể đi ể đi đế n trự c tiế p Một đối tượ ng ng p là phân b ố có thể đi đến trực tiếp từ một đối tượ ng ng q theo Eps và MinPts n ằm trong tập đối tượ ng ng D nếu: - p thuộ c N Eps(q) và - Card(N Eps(q)) >= MinPts (điều kiện cho đối tượ ng ng nòng cốt)
a.
Hình 2. 1 (a) Đối tượng biên p, đối tượng nòng cốt q (b) phân bố có thể đi đến trực tiếp từ q đến p
Định nghĩa 2: Phân bố có thể đi ể đi đến đượ c Một đối tượ ng ng p là phân b ố có thể đi đến đượ c từ một đối tượ ng ng q theo Eps và MinPts n ằm trong tập đối tượ ng ng D, ký hi ệu là p>Dq n ếu có một dây chuyền các đối tượ ng ng p1,p2, …, pn vớ i p1=q, pn=p sao cho pi thuộc D và pi+1 là phân b ố có thể đi đến trực tiếp từ pi theo Eps và MinPts.
b.
p q
p1
Hình 2. 2 a Phân bố có thể đi đến đượ c
p
q o
Hình 2.23b Phân b ố liên thông
Định nghĩa 3: Phân bố liên thông Một đối tượ ng p là phân b ố liên thông v ới đối tượ ng q theo Eps và MinPts trong t ập các đối tượ ng D nếu có một đối tượ ng o thuộc D sao cho c ả p và q đều là phân b ố có thể đi đến đượ c t ừ o theo Eps và
c.
MinPts. Ta có thể định nghĩa lại khái ni ệm cluster d ựa trên phân b ố như sau: Một cluster là một tập các đối tượ ng phân bố liên thông có độ phân bố có thể đi đến đượ c là lớ n nhất và nhiễu là tập các đối tượ ng không thu ộc vào b ất k ỳ cluster nào.
Định nghĩa 4: Cluster Cho D là một tập các đối tượ ng. Một cluster C theo Eps và MinPts trong D là m ột tập con khác r ỗng của D thõa các điều kiện sau: - Tính cực đại: vớ i mọi p,q thuộc D: nếu p thuộc C và q>Dp theo Eps và MinPts thì q thu ộc C. - Tính liên thông: v ớ i mọi p,q thuộc C: p là phân b ố liên thông v ớ i q theo Eps và MinPts trong D.
d.
Định nghĩa 5: Đối tượ ng l ạ c loài hay nhiễ u (noise) Cho C1,C2, …, Ck là các cluster theo Eps i và MinPtsi trong D với i=1,2,…,k. Ta định nghĩa nhiễ u là tập các đối tượng trong cơ sở dữ liệu D mà không thu ộc vào bất k ỳ cluster C i nào, nghĩa là e.
noise { p D | i : p C i } -
Cho hai tham s ố Eps và MinPts, chúng ta có th ể phát hiện một cluster qua hai bước như sau: Chọn một đối tượ ng tùy ý t ừ cơ sở dữ liệu thỏa mãn điều kiện đối tượ ng nòng c ốt làm hạt giống. Tìm tất cả các đối tượ ng có th ể đi đến đượ c từ hạt giống này và hình thành nên cluster.
3. Thuậ t toán DBSCAN a. Input – Output Input: tập dữ liệu D, Eps và MinPts Output: số cluster và t ập các điểm dữ liệu đã đượ c gom nhóm (gán nhãn) b. Giải thuật xử lý gồm các bước như sau: - Nếu Eps và MinPts đã được xác định, chọn ngẫu nhiên một đối tượ ng p - Tìm các vùng lân c ận của p (mọi đối tượ ng có th ể đi đến trực tiếp từ p theo Eps và MinPts) b ằng cách thực hiện truy v ấn vùng (region query) hay tìm ki ếm trên R*-Tree - Nếu lân cận của p thưa thớ t hay chứa ít hơn MinPts đối tượng thì p đượ c tạm gán nhãn là nhi ễu. Thuật toán sẽ xét đối tượ ng tiếp theo trong cơ sở dữ liệu.
- Ngượ c lại, một cluster đượ c hình thành và ch ứa tất cả các đối tượ ng trong lân c ận của p. Sau đó,
-
lân cận c ủa nh ững điểm này sẽ đượ c kh ảo sát để xem liệu nó có đượ c thêm ti ếp vào cluster này hay không. Nếu cluster không th ể mở rộng thêm đượ c nữa, thuật toán ch ọn ngẫu nhiên một đối tượ ng p khác chưa xét và lặp lại quá trình trên. Thuật toán sẽ lặp cho đến khi mọi đối tượng đều được gom nhóm hay được đánh dấu là nhi ễu. Vớ i một cơ sở dữ liệu có n mẫu tin, cần phải truy vấn vùng n l ần.
B. BÀI TẬP THỰ C HÀNH RecordSet, cài đặ t hàm truy vấ n vùng (Epsilon range query) Bài tậ p 1: Trong l ớ p public List RangeQuery(double epsilon, Record core, IDistance dfunc)
DbscanAlgo : BaseClusterer Bài tậ p 2: Cài đặ t thuậ t toán DBSCAN. T ạ o l ớ p Thuộc tính o Int MinPoints; // Số record tối thiểu để xác định đối tượ ng core o Int CurrentID; // Lưu chỉ số cluster hi ện thờ i o Double Epsilon; // Bán kính c ủa vùng lân cận Phương thức o Void UpdateMinMax(Record rec) // C ập nhật giá trị min-max trên t ừng thuộc tính o Double Normalize(double x, int attIndex) // Chu ẩn hóa 1 giá tr ị x. attIndex = ch ỉ số T/tính // Xác định một mẫu tin thuộc vào cluster nào o Int ClusterInstance(Record rec) o Void BuildCluster(RecordSet dataset) // Th ực hiện việc gom nhóm Bool ExpandCluster(Record rec) // Hàm m ở rộng cluster o
Mã giả Function BuildCluster (DataSet , Eps , MinPts )
// tấ t cả các đối tượng chưa đượ c phân lớp Begin clusid = 0; // biế n toàn cục, trả v ề số cluster FORALL đối tượng o IN DataSet DO IF o.ClusId == UNCLASSIFIED THEN
// gọi hàm expand_cluster để xây dự ng cluster wrt.Eps và MinPts chứ a o. IF expand_cluster(o,D,Eps,MinPts) THEN clusid = next(clusid); RETURN clusid; end
// Hàm xây dự ng cluster FUNCTION expand_cluster (obj, DataSet , Eps , MinPts ) : boolean begin
// truy vấ n lân cận Eps của obj: N Eps (obj ); seeds = Dataset.RangeQuery(obj, Eps); IF seeds.Count < MinPts THEN // Nghĩa là không phải đối tượ ng nòng c ốt
obj.SetClusID( NOISE ); RETURN false ; ELSE // là đối tượ ng nòng c ốt
obj.SetClusID( clusid ); // gán nhãn là số hiệu cluster seeds.Delete(obj); // xóa khỏi hàng đợi WHILE NOT seeds.empty() DO
currentObject := seeds.first(); // Truy vấ n các lân cận N Eps (currentObject ) của currentObject ; Results = Dataset.RangeQuery(currentObject, Eps); // Nếu là đối tượng nòng cố t IF Results.Count >= MinPts THEN // duyệt qua mọi điể m tìm thấ y FOR index=1 TO Results.Count DO datapoint = Results.GetPoint(index); // Lưu vào hàng đợi nếu nó chưa gán nhãn IF (datapoint.ClusID IN {UNCLASSIFIED,NOISE}) THEN IF (datapoint.ClusID = UNCLASSIFIED) THEN seeds .AddPoint(datapoint); End IF
// và gán nhãn cho nó datapoint.SetClusID( clusid ); End IF End FOR End IF
// Loại bỏ đối tượng khỏi hàng đợi seeds.Delete( currentObject ); End WHILE RETURN true;
// Hình thành xong một cluster.
End IF end
Bài tậ p 3: Viết chương trình để kiể m tra kế t quả gom nhóm và vi ế t báo cáo kế t quả .
C. BÀI TẬP VỀ NHÀ 1.
Độ phức tạp của thuật toán DBSCAN chịu ảnh hưở ng nhiều bở i việc thực hiện các truy vấn vùng. Độ phức tạp của mỗi truy vấn vùng là O(N). Vì th ế, độ phức tạp của thuật toán DBSCAN trong trườ ng hợ p này là O( N 2). Nếu sử dụng cấu trúc dữ liệu R*-Tree, độ phức tạp trung bình cho m ột truy vấn vùng là O(log( N )), theo đó, độ phức tạp giảm xuống còn O( N * log( N )). Hãy tìm hiểu và cài đặt cấu trúc dữ liệu R*-Tree để cải tiến tốc độ thự c hiện truy vấn vùng.
2. Theo kinh nghi ệm của các chuyên gia, MinPts thường đượ c gán giá tr ị là 4, 5 ho ặc 6, thông d ụng nhất là MinPts = 4. Vì thế, ta chỉ còn phải xác định Eps. Để thực hiện điều này, vớ i mỗi điểm p trong cơ sở dữ liệu, ta tìm MinPts hàng xóm g ần nhất của p. Gọi k-dist là kho ảng cách t ừ điểm p đến hàng xóm gần nhất th ứ MinPts của nó. Ta s ắp x ếp các giá tr ị k-dist của các điểm dữ liệu theo thứ tự giảm (hoặc tăng) dần và biểu diễn chúng lên m ột đồ thị. Trục hoành bi ểu diễn các điểm dữ liệu và trục tung biểu diễn khoảng cách k-dist tương ứng. Khi đó, ta có một đồ thị có dạng như sau:
Để ý th ấy đồ thị chia làm 2 ph ần. M ột ph ần bi ểu di ễn nh ững giá trị có v ẻ rờ i rạc và lớ n, m ột ph ần biểu diễn các giá tr ị có vẻ liên tục. Giá trị ngưỡng Eps đượ c chọn là điểm mà tại đó có sự thay đổi đột ngột theo k-dist và tách riêng hai phần trên. Điểm này thường đượ c gọi là “thung lũng - valley”. Những điểm có giá trị k-dist lớn hơn ngưỡng Eps đượ c xem là nhiễu, ngượ c l ại, những điểm có giá trị k-dist nhỏ hơn hoặc b ẳng Eps sẽ hình thành nên các cluster.
Hãy cài đặt chức năng hỗ trợ ngườ i dùng lự a chọn giá trị Eps thích hợ p dự a vào phương pháp biểu diễn đồ thị như trên.