Mã python thuật toán a*

Mỗi thuật toán phân cụm có hai biến thể. một lớp triển khai phương thức

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8 để tìm hiểu các cụm trên dữ liệu đào tạo và một hàm, với dữ liệu đào tạo đã cho, trả về một mảng các nhãn số nguyên tương ứng với các cụm khác nhau. Đối với lớp, các nhãn trên dữ liệu huấn luyện có thể được tìm thấy trong thuộc tính
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
9

Dữ liệu đầu vào

Một điều quan trọng cần lưu ý là các thuật toán được triển khai trong mô-đun này có thể lấy các loại ma trận khác nhau làm đầu vào. Tất cả các phương pháp chấp nhận ma trận dữ liệu tiêu chuẩn có hình dạng

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
0. Chúng có thể được lấy từ các lớp trong mô-đun
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
1. Đối với
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
2,
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
3 và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
4, người ta cũng có thể nhập ma trận tương tự của hình dạng
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
5. Chúng có thể được lấy từ các chức năng trong mô-đun
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
6

2. 3. 1. Tổng quan về các phương pháp phân cụm¶

So sánh các thuật toán phân cụm trong scikit-learning

Tên phương thức

Thông số

khả năng mở rộng

ca sử dụng

Hình học [số liệu được sử dụng]

K-Means

số cụm

_______ Rất lớn 27, trung bình ____28 với MiniBatch code

Mục đích chung, kích thước cụm đồng đều, hình học phẳng, không quá nhiều cụm, quy nạp

Khoảng cách giữa các điểm

lan truyền ái lực

giảm xóc, ưu tiên mẫu

Không thể mở rộng với n_samples

Nhiều cụm, kích thước cụm không đồng đều, hình học không phẳng, quy nạp

Vẽ đồ thị khoảng cách [e. g. đồ thị lân cận gần nhất]

dịch chuyển trung bình

băng thông

Không thể mở rộng với

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7

Nhiều cụm, kích thước cụm không đồng đều, hình học không phẳng, quy nạp

Khoảng cách giữa các điểm

phân cụm quang phổ

số cụm

Trung bình

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7, nhỏ
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8

Ít cụm, kích thước cụm đồng đều, hình học không phẳng, tải điện

Vẽ đồ thị khoảng cách [e. g. đồ thị lân cận gần nhất]

Cụm phân cấp phường

số cụm hoặc ngưỡng khoảng cách

Lớn

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7 và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8

Nhiều cụm, có thể là hạn chế kết nối, chuyển đổi

Khoảng cách giữa các điểm

phân cụm kết tụ

số lượng cụm hoặc ngưỡng khoảng cách, loại liên kết, khoảng cách

Lớn

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7 và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8

Nhiều cụm, có thể là hạn chế kết nối, khoảng cách phi Euclide, tải nạp

Bất kỳ khoảng cách theo cặp nào

DBSCAN

quy mô khu phố

Rất lớn

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7, trung bình
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8

Hình học không phẳng, kích thước cụm không đồng đều, loại bỏ ngoại lệ, tải điện

Khoảng cách giữa các điểm gần nhất

QUANG HỌC

thành viên cụm tối thiểu

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7 rất lớn, lớn
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8

Hình học không phẳng, kích thước cụm không đồng đều, mật độ cụm thay đổi, loại bỏ ngoại lệ, tải điện

Khoảng cách giữa các điểm

hỗn hợp Gaussian

nhiều

không thể mở rộng

Hình học phẳng, tốt cho ước tính mật độ, quy nạp

Khoảng cách Mahalanobis đến trung tâm

BẠCH DƯƠNG

yếu tố phân nhánh, ngưỡng, clusterer toàn cầu tùy chọn

Lớn

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8 và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7

Tập dữ liệu lớn, loại bỏ ngoại lệ, giảm dữ liệu, quy nạp

Khoảng cách Euclide giữa các điểm

Chia đôi K-Means

số cụm

Rất lớn

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
7, trung bình
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8

Mục đích chung, kích thước cụm đồng đều, hình học phẳng, không có cụm trống, quy nạp, phân cấp

Khoảng cách giữa các điểm

Phân cụm hình học không phẳng rất hữu ích khi các cụm có hình dạng cụ thể,. e. một đa tạp không phẳng và khoảng cách euclide tiêu chuẩn không phải là số liệu phù hợp. Trường hợp này phát sinh ở hai hàng trên cùng của hình trên

Các mô hình hỗn hợp Gaussian, hữu ích cho việc phân cụm, được mô tả trong một chương khác của tài liệu dành riêng cho các mô hình hỗn hợp. KMeans có thể được coi là một trường hợp đặc biệt của mô hình hỗn hợp Gaussian với hiệp phương sai bằng nhau trên mỗi thành phần.

Quy nạp [ngược lại với các phương pháp phân cụm quy nạp] không được thiết kế để áp dụng cho .

2. 3. 2. K-nghĩa¶

Thuật toán

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 phân cụm dữ liệu bằng cách cố gắng tách các mẫu thành n nhóm có phương sai bằng nhau, giảm thiểu một tiêu chí được gọi là quán tính hoặc tổng bình phương bên trong cụm [xem bên dưới]. Thuật toán này yêu cầu số lượng cụm được chỉ định. Nó chia tỷ lệ tốt cho số lượng lớn mẫu và đã được sử dụng trên nhiều lĩnh vực ứng dụng trong nhiều lĩnh vực khác nhau

Thuật toán k-means chia một tập hợp \[N\] mẫu \[X . Các phương tiện thường được gọi là cụm "trung tâm"; . into \[K\] disjoint clusters \[C\], each described by the mean \[\mu_j\] of the samples in the cluster. The means are commonly called the cluster “centroids”; note that they are not, in general, points from \[X\], although they live in the same space.

Thuật toán K-means nhằm mục đích chọn các trọng tâm giảm thiểu quán tính hoặc tiêu chí tổng bình phương trong cụm

\[\sum_{i=0}^{n}\min_{\mu_j \in C}[. x_i - \mu_j. ^2]\]

Quán tính có thể được coi là thước đo mức độ liên kết bên trong của các cụm. Nó bị nhiều nhược điểm

  • Quán tính đưa ra giả định rằng các cụm là lồi và đẳng hướng, điều này không phải lúc nào cũng đúng. Nó phản ứng kém với các cụm kéo dài hoặc đa tạp với hình dạng không đều

  • Quán tính không phải là một số liệu chuẩn hóa. chúng tôi chỉ biết rằng các giá trị thấp hơn sẽ tốt hơn và 0 là tối ưu. Nhưng trong không gian rất nhiều chiều, khoảng cách Euclide có xu hướng bị thổi phồng [đây là một ví dụ về cái gọi là “lời nguyền của chiều”]. Chạy thuật toán giảm kích thước, chẳng hạn như Phân tích thành phần chính [PCA] trước khi phân cụm k-means có thể giảm bớt vấn đề này và tăng tốc độ tính toán.

K-means thường được gọi là thuật toán của Lloyd. Về cơ bản, thuật toán có ba bước. Bước đầu tiên chọn trọng tâm ban đầu, với phương pháp cơ bản nhất là chọn \[k\] mẫu từ tập dữ liệu \[X\]. After initialization, K-means consists of looping between the two other steps. The first step assigns each sample to its nearest centroid. The second step creates new centroids by taking the mean value of all of the samples assigned to each previous centroid. The difference between the old and the new centroids are computed and the algorithm repeats these last two steps until this value is less than a threshold. In other words, it repeats until the centroids do not move significantly.

K-means tương đương với thuật toán tối đa hóa kỳ vọng với ma trận hiệp phương sai đường chéo nhỏ, hoàn toàn bằng nhau

Thuật toán cũng có thể được hiểu thông qua khái niệm sơ đồ Voronoi. Đầu tiên, sơ đồ Voronoi của các điểm được tính bằng các trọng tâm hiện tại. Mỗi phân đoạn trong sơ đồ Voronoi trở thành một cụm riêng biệt. Thứ hai, các trọng tâm được cập nhật thành giá trị trung bình của từng phân khúc. Thuật toán sau đó lặp lại điều này cho đến khi thỏa mãn tiêu chí dừng. Thông thường, thuật toán dừng khi mức giảm tương đối của hàm mục tiêu giữa các lần lặp nhỏ hơn giá trị dung sai đã cho. Đây không phải là trường hợp trong việc thực hiện này. lặp lại dừng lại khi trọng tâm di chuyển ít hơn dung sai

Nếu có đủ thời gian, K-means sẽ luôn hội tụ, tuy nhiên điều này có thể ở mức tối thiểu cục bộ. Điều này phụ thuộc nhiều vào việc khởi tạo các centroid. Kết quả là, việc tính toán thường được thực hiện nhiều lần, với các khởi tạo khác nhau của trọng tâm. Một phương pháp giúp giải quyết vấn đề này là sơ đồ khởi tạo k-mean++, đã được triển khai trong scikit-learning [sử dụng tham số

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
65]. Điều này khởi tạo các trọng tâm [thường] cách xa nhau, dẫn đến kết quả có thể tốt hơn so với khởi tạo ngẫu nhiên, như thể hiện trong tài liệu tham khảo

K-mean++ cũng có thể được gọi độc lập để chọn hạt giống cho các thuật toán phân cụm khác, xem

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
66 để biết chi tiết và ví dụ sử dụng

Thuật toán hỗ trợ trọng số mẫu, có thể được cung cấp bởi tham số

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
67. Điều này cho phép gán nhiều trọng số hơn cho một số mẫu khi tính toán trung tâm cụm và giá trị quán tính. Ví dụ: gán trọng số 2 cho một mẫu tương đương với việc thêm một bản sao của mẫu đó vào tập dữ liệu \[X\] .

K-means có thể được sử dụng để lượng tử hóa véc tơ. Điều này đạt được bằng cách sử dụng phương pháp biến đổi của một mô hình được đào tạo của

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64

2. 3. 2. 1. Song song cấp thấp¶

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 lợi ích từ tính song song dựa trên OpenMP thông qua Cython. Các khối dữ liệu nhỏ [256 mẫu] được xử lý song song, ngoài ra còn mang lại dung lượng bộ nhớ thấp. Để biết thêm chi tiết về cách kiểm soát số lượng luồng, vui lòng tham khảo ghi chú Song song của chúng tôi.

ví dụ

  • Thể hiện các giả định về phương tiện k . Chứng minh khi nào k-mean hoạt động trực quan và khi nào thì không

  • Bản minh họa về phân cụm K-Means trên dữ liệu chữ số viết tay . Nhóm các chữ số viết tay

Người giới thiệu

  • “k-có nghĩa là ++. Ưu điểm của gieo hạt cẩn thận” Arthur, David và Sergei Vassilvitskii, Kỷ yếu của hội nghị chuyên đề ACM-SIAM hàng năm lần thứ mười tám về các thuật toán rời rạc, Hiệp hội Toán học Công nghiệp và Ứng dụng [2007]

2. 3. 2. 2. K-Means hàng loạt nhỏ¶

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
20 là một biến thể của thuật toán
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 sử dụng các lô nhỏ để giảm thời gian tính toán, trong khi vẫn cố gắng tối ưu hóa cùng một hàm mục tiêu. Lô nhỏ là tập hợp con của dữ liệu đầu vào, được lấy mẫu ngẫu nhiên trong mỗi lần lặp đào tạo. Các lô nhỏ này giảm đáng kể lượng tính toán cần thiết để hội tụ thành một giải pháp cục bộ. Trái ngược với các thuật toán khác làm giảm thời gian hội tụ của k-mean, k-means hàng loạt nhỏ tạo ra kết quả thường chỉ kém hơn một chút so với thuật toán tiêu chuẩn

Thuật toán lặp lại giữa hai bước chính, tương tự như vanilla k-mean. Ở bước đầu tiên, \[b\] các mẫu được lấy ngẫu nhiên từ tập dữ liệu để tạo thành một lô nhỏ. Chúng sau đó được gán cho trọng tâm gần nhất. Trong bước thứ hai, các trọng tâm được cập nhật. Trái ngược với k-means, điều này được thực hiện trên cơ sở từng mẫu. Đối với mỗi mẫu trong lô nhỏ, trọng tâm được chỉ định được cập nhật bằng cách lấy trung bình phát trực tuyến của mẫu và tất cả các mẫu trước đó được chỉ định cho trọng tâm đó. Điều này có tác dụng làm giảm tốc độ thay đổi của trọng tâm theo thời gian. Các bước này được thực hiện cho đến khi đạt được sự hội tụ hoặc số lần lặp được xác định trước.

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
20 hội tụ nhanh hơn
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64, nhưng chất lượng của kết quả bị giảm. Trong thực tế, sự khác biệt về chất lượng này có thể khá nhỏ, như thể hiện trong ví dụ và tài liệu tham khảo được trích dẫn

ví dụ

  • So sánh thuật toán phân cụm K-Means và MiniBatchKMeans . So sánh KMeans và MiniBatchKMeans

  • Phân cụm tài liệu văn bản bằng k-means . Phân cụm tài liệu bằng MiniBatchKMeans thưa thớt

  • Học trực tuyến từ điển các bộ phận của khuôn mặt

Người giới thiệu

  • “Phân cụm K-Means quy mô web” D. Sculley, Kỷ yếu của hội nghị quốc tế lần thứ 19 về World wide web [2010]

2. 3. 3. Lan truyền mối quan hệ¶

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
2 tạo các cụm bằng cách gửi tin nhắn giữa các cặp mẫu cho đến khi hội tụ. Sau đó, một bộ dữ liệu được mô tả bằng cách sử dụng một số lượng nhỏ các mẫu, được xác định là những mẫu đại diện nhất cho các mẫu khác. Các thông báo được gửi giữa các cặp thể hiện sự phù hợp để một mẫu trở thành mẫu của mẫu kia, được cập nhật để phản hồi các giá trị từ các cặp khác. Quá trình cập nhật này diễn ra lặp đi lặp lại cho đến khi hội tụ, tại thời điểm đó các mẫu cuối cùng được chọn và do đó, phân cụm cuối cùng được đưa ra

Tuyên truyền mối quan hệ có thể thú vị vì nó chọn số lượng cụm dựa trên dữ liệu được cung cấp. Với mục đích này, hai tham số quan trọng là tùy chọn, kiểm soát số lượng mẫu được sử dụng và hệ số giảm xóc làm giảm các thông báo trách nhiệm và tính khả dụng để tránh dao động số khi cập nhật các thông báo này

Nhược điểm chính của Tuyên truyền mối quan hệ là sự phức tạp của nó. Thuật toán có độ phức tạp về thời gian theo thứ tự \[O[N^2 T]\] , trong đó \ . Ngoài ra, độ phức tạp của bộ nhớ theo thứ tự is the number of samples and \[T\] is the number of iterations until convergence. Further, the memory complexity is of the order \[O[N^2]\] nếu sử dụng ma trận tương tự dày đặc, nhưng có thể rút gọn nếu sử dụng ma trận thưa thớt . Điều này làm cho Tuyên truyền mối quan hệ phù hợp nhất cho các bộ dữ liệu có kích thước vừa và nhỏ.

ví dụ

  • Bản trình diễn thuật toán phân cụm lan truyền ái lực . Tuyên truyền mối quan hệ trên bộ dữ liệu 2D tổng hợp với 3 lớp.

  • Trực quan hóa cấu trúc thị trường chứng khoán Tuyên truyền mối quan hệ trên chuỗi thời gian tài chính để tìm các nhóm công ty

Mô tả thuật toán. Các tin nhắn được gửi giữa các điểm thuộc một trong hai loại. Đầu tiên là trách nhiệm \[r[i, k]\] , là bằng chứng tích lũy mà mẫu . Thứ hai là tính khả dụng should be the exemplar for sample \[i\]. The second is the availability \[a[i, k]\] là bằng chứng tích lũy mà mẫu \ . Theo cách này, các mẫu được chọn theo mẫu nếu chúng [1] đủ giống với nhiều mẫu và [2] được nhiều mẫu chọn để đại diện cho chính chúng. should choose sample \[k\] to be its exemplar, and considers the values for all other samples that \[k\] should be an exemplar. In this way, exemplars are chosen by samples if they are [1] similar enough to many samples and [2] chosen by many samples to be representative of themselves.

Chính thức hơn, trách nhiệm của mẫu \[k\] là gương mẫu của mẫu \[i\] is given by:

\[r[i, k] \leftarrow s[i, k] - max [ a[i, k'] + s[i, k'] \forall k' \neq k ]\]

Ở đâu \[s[i, k]\] là sự giống nhau giữa các mẫu \[ . Tính khả dụng của mẫu and \[k\]. The availability of sample \[k\] để làm mẫu cho mẫu \[i\] is given by:

\[a[i, k] \leftarrow min [0, r[k, k] + \sum_{i'~s. t. ~i' \notin \{i, k\}}{r[i', k]}]\]

Đầu tiên, tất cả các giá trị cho \[r\]\[a\] . Như đã thảo luận ở trên, để tránh dao động số khi cập nhật thông báo, hệ số giảm xóc are set to zero, and the calculation of each iterates until convergence. As discussed above, in order to avoid numerical oscillations when updating the messages, the damping factor \[\lambda\] được đưa vào quy trình lặp.

\[r_{t+1}[i, k] = \lambda\cdot r_{t}[i, k] + [1-\lambda]\cdot r_{t+1}[i, k]\]

\[a_{t+1}[i, k] = \lambda\cdot a_{t}[i, k] + [1-\lambda]\cdot a_{t+1}[i, k]\]

trong đó \[t\] cho biết thời gian lặp lại.

2. 3. 4. Ca trung bình¶

Phân cụm

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
25 nhằm mục đích khám phá các đốm màu trong mật độ mẫu mịn. Nó là một thuật toán dựa trên trọng tâm, hoạt động bằng cách cập nhật các ứng cử viên cho trọng tâm là giá trị trung bình của các điểm trong một khu vực nhất định. Những ứng cử viên này sau đó được lọc trong giai đoạn xử lý hậu kỳ để loại bỏ các bản sao gần như trùng lặp để tạo thành tập hợp các trọng tâm cuối cùng

Cho một ứng cử viên trọng tâm \[x_i\] để lặp lại \[t\], the candidate is updated according to the following equation:

\[x_i^{t+1} = m[x_i^t]\]

Ở đâu \[N[x_i]\] là vùng lân cận của các mẫu trong một khoảng cách nhất định xung quanh \[x_i\] and \[m\] is the mean shift vector that is computed for each centroid that points towards a region of the maximum increase in the density of points. This is computed using the following equation, effectively updating a centroid to be the mean of the samples within its neighborhood:

\[m[x_i] = \frac{\sum_{x_j \in N[x_i]}K[x_j - x_i]x_j}{\sum_{x_j \in N[x_i]}K[x_j - x_i]}\]

Thuật toán tự động đặt số lượng cụm, thay vì dựa vào tham số

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
26, cho biết kích thước của vùng cần tìm kiếm. Tham số này có thể được đặt thủ công, nhưng có thể được ước tính bằng cách sử dụng hàm
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
27 được cung cấp, được gọi nếu băng thông không được đặt

Thuật toán không có khả năng mở rộng cao, vì nó yêu cầu nhiều lần tìm kiếm hàng xóm gần nhất trong quá trình thực hiện thuật toán. Thuật toán được đảm bảo hội tụ, tuy nhiên thuật toán sẽ dừng lặp lại khi thay đổi về trọng tâm là nhỏ

Ghi nhãn một mẫu mới được thực hiện bằng cách tìm trọng tâm gần nhất cho một mẫu nhất định

ví dụ

  • Bản demo của thuật toán phân cụm dịch chuyển trung bình . Mean Shift phân cụm trên bộ dữ liệu 2D tổng hợp với 3 lớp.

Người giới thiệu

  • “Chuyển dịch trung bình. Một cách tiếp cận mạnh mẽ đối với phân tích không gian đặc trưng” D. Comaniciu và P. Meer, Giao dịch của IEEE về Phân tích mẫu và Máy thông minh [2002]

2. 3. 5. Phân cụm quang phổ¶

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
3 thực hiện nhúng ma trận ái lực có kích thước thấp giữa các mẫu, sau đó là phân cụm, e. g. , theo KMeans, của các thành phần của vectơ riêng trong không gian ít chiều. Nó đặc biệt hiệu quả về mặt tính toán nếu ma trận ái lực thưa thớt và bộ giải
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
29 được sử dụng cho bài toán giá trị riêng [Lưu ý, bộ giải
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
29 yêu cầu mô-đun pyamg được cài đặt. ]

Phiên bản hiện tại của SpectralClustering yêu cầu số lượng cụm phải được chỉ định trước. Nó hoạt động tốt đối với một số ít cụm, nhưng không được khuyên dùng cho nhiều cụm

Đối với hai cụm, SpectralClustering giải quyết vấn đề giãn lồi của bài toán cắt chuẩn hóa trên biểu đồ tương tự. cắt đồ thị thành hai để trọng số của các cạnh bị cắt nhỏ so với trọng số của các cạnh bên trong mỗi cụm. Tiêu chí này đặc biệt thú vị khi làm việc trên hình ảnh, trong đó các đỉnh của biểu đồ là các pixel và trọng số của các cạnh của biểu đồ tương tự được tính bằng hàm gradient của hình ảnh

Cảnh báo

Chuyển đổi khoảng cách thành những điểm tương đồng được cư xử tốt

Lưu ý rằng nếu các giá trị của ma trận tương tự của bạn không được phân phối tốt, e. g. với các giá trị âm hoặc với ma trận khoảng cách thay vì độ tương tự, bài toán quang phổ sẽ là số ít và bài toán không thể giải được. Trong trường hợp đó, nên áp dụng phép biến đổi cho các mục của ma trận. Chẳng hạn, trong trường hợp ma trận khoảng cách đã ký, người ta thường áp dụng hạt nhân nhiệt

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
3

Xem các ví dụ cho một ứng dụng như vậy

ví dụ

  • Phân cụm quang phổ để phân đoạn hình ảnh . Phân đoạn các đối tượng từ một nền nhiễu bằng cách sử dụng phân cụm quang phổ.

  • Phân đoạn bức tranh về đồng xu Hy Lạp theo khu vực . Phân cụm quang phổ để phân chia hình ảnh của đồng tiền theo vùng.

2. 3. 5. 1. Các chiến lược gán nhãn khác nhau¶

Có thể sử dụng các chiến lược gán nhãn khác nhau, tương ứng với tham số

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
41 của
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
3. Chiến lược
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
43 có thể phù hợp với các chi tiết tốt hơn, nhưng có thể không ổn định. Đặc biệt, trừ khi bạn kiểm soát
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
44, nó có thể không được sao chép từ lần chạy này sang lần chạy khác, vì nó phụ thuộc vào khởi tạo ngẫu nhiên. Chiến lược thay thế
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
45 có thể lặp lại 100%, nhưng có xu hướng tạo ra các bưu kiện có hình dạng hình học khá đồng đều. Tùy chọn
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
46 được thêm gần đây là một tùy chọn xác định có xu hướng tạo phân vùng trực quan tốt nhất trên ứng dụng ví dụ bên dưới

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
47

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
48

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
49

Người giới thiệu

  • “Phân cụm quang phổ đa lớp” Stella X. Yu, Jianbo Shi, 2003

  • “Phân cụm quang phổ đa chiều đơn giản, trực tiếp và hiệu quả” Anil Damle, Victor Minden, Lexing Ying, 2019

2. 3. 5. 2. Đồ thị phân cụm quang phổ¶

Phân cụm quang phổ cũng có thể được sử dụng để phân vùng biểu đồ thông qua các nhúng quang phổ của chúng. Trong trường hợp này, ma trận ái lực là ma trận kề của đồ thị và SpectralClustering được khởi tạo với

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
30

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
4

Người giới thiệu

  • “Hướng dẫn về phân cụm quang phổ” Ulrike von Luxburg, 2007

  • “Chuẩn hóa các vết cắt và phân đoạn hình ảnh” Jianbo Shi, Jitendra Malik, 2000

  • “A Random Walks View of Spectral Segmentation” Marina Meila, Jianbo Shi, 2001

  • “Về phân cụm quang phổ. Phân tích và thuật toán” Andrew Y. Ng, Micheal I. Jordan, Yair Weiss, 2001

  • “Phân cụm quang phổ được điều chỉnh trước cho Thử thách đồ thị phát trực tuyến phân vùng khối ngẫu nhiên” David Zhuzhunashvili, Andrew Knyazev

2. 3. 6. Phân cụm theo cấp bậc¶

Phân cụm theo thứ bậc là một họ chung của các thuật toán phân cụm xây dựng các cụm lồng nhau bằng cách hợp nhất hoặc tách chúng liên tiếp. Hệ thống phân cấp các cụm này được biểu diễn dưới dạng cây [hoặc dendrogram]. Gốc cây là cụm duy nhất tập hợp tất cả các mẫu, lá là cụm chỉ có một mẫu. Xem trang Wikipedia để biết thêm chi tiết

Đối tượng

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
31 thực hiện phân cụm theo cấp bậc bằng cách sử dụng cách tiếp cận từ dưới lên. mỗi quan sát bắt đầu trong cụm riêng của nó và các cụm được hợp nhất liên tiếp với nhau. Tiêu chí liên kết xác định số liệu được sử dụng cho chiến lược hợp nhất

  • Ward tối thiểu hóa tổng bình phương sự khác biệt trong tất cả các cụm. Đó là một cách tiếp cận giảm thiểu phương sai và theo nghĩa này tương tự như hàm mục tiêu k-means nhưng được giải quyết bằng cách tiếp cận phân cấp tổng hợp

  • Liên kết tối đa hoặc đầy đủ giảm thiểu khoảng cách tối đa giữa các quan sát của các cặp cụm

  • Liên kết trung bình giảm thiểu trung bình của khoảng cách giữa tất cả các quan sát của các cặp cụm

  • Liên kết đơn giảm thiểu khoảng cách giữa các quan sát gần nhất của các cặp cụm

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
31 cũng có thể mở rộng thành số lượng lớn mẫu khi nó được sử dụng cùng với ma trận kết nối, nhưng tốn kém về mặt tính toán khi không có ràng buộc kết nối nào được thêm vào giữa các mẫu. nó xem xét ở mỗi bước tất cả các hợp nhất có thể

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
33

____

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
33 sử dụng phân cụm kết tụ để nhóm các tính năng trông rất giống nhau lại với nhau, do đó làm giảm số lượng tính năng. Đây là công cụ giảm kích thước, xem Giảm kích thước không giám sát .

2. 3. 6. 1. Loại liên kết khác. Liên kết phường, hoàn chỉnh, trung bình và đơn lẻ¶

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
31 hỗ trợ các chiến lược liên kết Phường, đơn lẻ, trung bình và đầy đủ

Cụm kết tụ có hành vi “giàu càng giàu” dẫn đến kích thước cụm không đồng đều. Về vấn đề này, liên kết đơn lẻ là chiến lược tồi tệ nhất và Ward đưa ra các kích thước thông thường nhất. Tuy nhiên, mối quan hệ [hoặc khoảng cách được sử dụng trong phân cụm] không thể thay đổi với Ward, do đó, đối với các số liệu phi Euclide, liên kết trung bình là một lựa chọn thay thế tốt. Liên kết đơn, mặc dù không mạnh đối với dữ liệu nhiễu, nhưng có thể được tính toán rất hiệu quả và do đó có thể hữu ích để cung cấp phân cụm theo cấp bậc của các bộ dữ liệu lớn hơn. Liên kết đơn cũng có thể hoạt động tốt trên dữ liệu phi toàn cầu

ví dụ

  • Phân cụm kết tụ khác nhau khi nhúng các chữ số 2D . khám phá các chiến lược liên kết khác nhau trong một bộ dữ liệu thực.

2. 3. 6. 2. Trực quan hóa phân cấp cụm¶

Có thể hình dung cây đại diện cho sự hợp nhất theo thứ bậc của các cụm dưới dạng một dendrogram. Kiểm tra trực quan thường có thể hữu ích để hiểu cấu trúc của dữ liệu, mặc dù nhiều hơn thế trong trường hợp cỡ mẫu nhỏ

2. 3. 6. 3. Thêm hạn chế kết nối¶

Một khía cạnh thú vị của

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
31 là các ràng buộc kết nối có thể được thêm vào thuật toán này [chỉ các cụm liền kề mới có thể được hợp nhất với nhau], thông qua ma trận kết nối xác định cho từng mẫu các mẫu lân cận theo cấu trúc dữ liệu nhất định. Chẳng hạn, trong ví dụ cuộn swiss bên dưới, các ràng buộc kết nối cấm hợp nhất các điểm không liền kề trên cuộn swiss và do đó tránh hình thành các cụm kéo dài qua các nếp gấp chồng chéo của cuộn

Các ràng buộc này rất hữu ích để áp đặt một cấu trúc cục bộ nhất định, nhưng chúng cũng làm cho thuật toán nhanh hơn, đặc biệt khi số lượng mẫu cao

Các ràng buộc kết nối được áp đặt thông qua ma trận kết nối. một ma trận thưa thớt scipy chỉ có các phần tử ở giao điểm của một hàng và một cột với các chỉ số của tập dữ liệu sẽ được kết nối. Ma trận này có thể được xây dựng từ thông tin tiên nghiệm. chẳng hạn, bạn có thể muốn nhóm các trang web bằng cách chỉ hợp nhất các trang có liên kết trỏ từ trang này sang trang khác. Nó cũng có thể được học từ dữ liệu, chẳng hạn như sử dụng

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
37 để hạn chế hợp nhất với các hàng xóm gần nhất như trong ví dụ này hoặc sử dụng
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
38 để chỉ cho phép hợp nhất . coin example.

ví dụ

  • Bản minh họa về phân cụm theo cấp bậc Phường có cấu trúc trên hình ảnh các đồng xu . Phân cụm phường để chia hình ảnh xu theo vùng miền.

  • Phân cụm theo thứ bậc. phường có cấu trúc và không có cấu trúc . Ví dụ về thuật toán Ward trên swiss-roll, so sánh các cách tiếp cận có cấu trúc so với các cách tiếp cận không có cấu trúc.

  • Tính năng tích tụ so với. lựa chọn đơn biến . Ví dụ về giảm kích thước với sự tích tụ tính năng dựa trên phân cụm theo cấp bậc Ward.

  • Cụm kết tụ có và không có cấu trúc

Cảnh báo

Ràng buộc kết nối với liên kết đơn, trung bình và đầy đủ

Các ràng buộc về kết nối và liên kết đơn lẻ, hoàn chỉnh hoặc trung bình có thể nâng cao khía cạnh 'giàu ngày càng giàu' của phân cụm tổng hợp, đặc biệt là nếu chúng được xây dựng bằng

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
37. Trong giới hạn của một số lượng nhỏ các cụm, chúng có xu hướng đưa ra một số cụm bị chiếm đóng ở cấp độ vĩ mô và các cụm gần như trống rỗng. [see the discussion in Agglomerative clustering with and without structure ]. Single linkage is the most brittle linkage option with regard to this issue.

2. 3. 6. 4. Varying the metric¶

Liên kết đơn, trung bình và đầy đủ có thể được sử dụng với nhiều khoảng cách [hoặc ái lực], đặc biệt là khoảng cách Euclide [l2], khoảng cách Manhattan [hoặc Cityblock, hoặc l1], khoảng cách cosin hoặc bất kỳ ma trận ái lực được tính toán trước nào

  • l1 distance is often good for sparse features, or sparse noise. i. e. many of the features are zero, as in text mining using occurrences of rare words

  • cosine distance is interesting because it is invariant to global scalings of the signal

The guidelines for choosing a metric is to use one that maximizes the distance between samples in different classes, and minimizes that within each class

ví dụ

  • Agglomerative clustering with different metrics

2. 3. 6. 5. Bisecting K-Means¶

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
400 là một biến thể lặp lại của
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64, sử dụng phân cụm theo thứ bậc phân chia. Thay vì tạo tất cả các trọng tâm cùng một lúc, các trọng tâm được chọn dần dần dựa trên phân cụm trước đó. a cluster is split into two new clusters repeatedly until the target number of clusters is reached

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
400 is more efficient than
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 when the number of clusters is large since it only works on a subset of the data at each bisection while
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 always works on the entire dataset

Mặc dù theo thiết kế,

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
400 không thể hưởng lợi từ những lợi thế của việc khởi tạo
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
406, nhưng nó vẫn sẽ tạo ra kết quả tương đương với
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
407 về quán tính với chi phí tính toán rẻ hơn và có thể sẽ tạo ra kết quả tốt hơn so với
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 với khởi tạo ngẫu nhiên

This variant is more efficient to agglomerative clustering if the number of clusters is small compared to the number of data points

This variant also does not produce empty clusters

There exist two strategies for selecting the cluster to split
  • >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    409 chọn cụm có nhiều điểm nhất

  • >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    410 chọn cụm có quán tính lớn nhất [cụm có Tổng lỗi bình phương lớn nhất bên trong]

Picking by largest amount of data points in most cases produces result as accurate as picking by inertia and is faster [especially for larger amount of data points, where calculating error may be costly]

Chọn theo số lượng điểm dữ liệu lớn nhất cũng sẽ có khả năng tạo ra các cụm có kích thước tương tự trong khi

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
64 được biết là tạo ra các cụm có kích thước khác nhau

Difference between Bisecting K-Means and regular K-Means can be seen on example Bisecting K-Means and Regular K-Means Performance Comparison . While the regular K-Means algorithm tends to create non-related clusters, clusters from Bisecting K-Means are well ordered and create quite a visible hierarchy.

Người giới thiệu

  • “A Comparison of Document Clustering Techniques” Michael Steinbach, George Karypis and Vipin Kumar, Department of Computer Science and Egineering, University of Minnesota [June 2000]

  • “Performance Analysis of K-Means and Bisecting K-Means Algorithms in Weblog Data” K. Abirami and Dr. P. Mayilvahanan, International Journal of Emerging Technologies in Engineering Research [IJETER] Volume 4, Issue 8, [August 2016]

  • “Bisecting K-means Algorithm Based on K-valued Self-determining and Clustering Center Optimization” Jian Di, Xinyue Gou School of Control and Computer Engineering,North China Electric Power University, Baoding, Hebei, China [August 2017]

2. 3. 7. DBSCAN¶

Thuật toán

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
4 xem các cụm là các khu vực có mật độ cao được phân tách bằng các khu vực có mật độ thấp. Due to this rather generic view, clusters found by DBSCAN can be any shape, as opposed to k-means which assumes that clusters are convex shaped. The central component to the DBSCAN is the concept of core samples, which are samples that are in areas of high density. A cluster is therefore a set of core samples, each close to each other [measured by some distance measure] and a set of non-core samples that are close to a core sample [but are not themselves core samples]. Có hai tham số cho thuật toán,
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
413 và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414, xác định chính thức ý nghĩa của chúng tôi khi chúng tôi nói dày đặc. Higher
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
413 or lower
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 indicate higher density necessary to form a cluster

More formally, we define a core sample as being a sample in the dataset such that there exist

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
413 other samples within a distance of
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414, which are defined as neighbors of the core sample. This tells us that the core sample is in a dense area of the vector space. Một cụm là một tập hợp các mẫu lõi có thể được xây dựng bằng cách lấy đệ quy một mẫu lõi, tìm tất cả các mẫu lân cận của nó là các mẫu lõi, tìm tất cả các mẫu lân cận của chúng là các mẫu lõi, v.v. A cluster also has a set of non-core samples, which are samples that are neighbors of a core sample in the cluster but are not themselves core samples. Intuitively, these samples are on the fringes of a cluster

Any core sample is part of a cluster, by definition. Bất kỳ mẫu nào không phải là mẫu lõi và cách bất kỳ mẫu lõi nào ít nhất là

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414, đều được coi là ngoại lệ theo thuật toán

While the parameter

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
413 primarily controls how tolerant the algorithm is towards noise [on noisy and large data sets it may be desirable to increase this parameter], the parameter
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 is crucial to choose appropriately for the data set and distance function and usually cannot be left at the default value. It controls the local neighborhood of the points. When chosen too small, most data will not be clustered at all [and labeled as
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
422 for “noise”]. Khi được chọn quá lớn, nó sẽ khiến các cụm gần được hợp nhất thành một cụm và cuối cùng toàn bộ tập dữ liệu được trả về dưới dạng một cụm duy nhất. Some heuristics for choosing this parameter have been discussed in the literature, for example based on a knee in the nearest neighbor distances plot [as discussed in the references below]

Trong hình bên dưới, màu biểu thị tư cách thành viên cụm, với các vòng tròn lớn biểu thị các mẫu lõi được thuật toán tìm thấy. Smaller circles are non-core samples that are still part of a cluster. Moreover, the outliers are indicated by black points below

ví dụ

  • Demo of DBSCAN clustering algorithm

Implementation

The DBSCAN algorithm is deterministic, always generating the same clusters when given the same data in the same order. Tuy nhiên, kết quả có thể khác khi dữ liệu được cung cấp theo thứ tự khác. First, even though the core samples will always be assigned to the same clusters, the labels of those clusters will depend on the order in which those samples are encountered in the data. Second and more importantly, the clusters to which non-core samples are assigned can differ depending on the data order. This would happen when a non-core sample has a distance lower than

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 to two core samples in different clusters. By the triangular inequality, those two core samples must be more distant than
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 from each other, or they would be in the same cluster. The non-core sample is assigned to whichever cluster is generated first in a pass through the data, and so the results will depend on the data ordering

The current implementation uses ball trees and kd-trees to determine the neighborhood of points, which avoids calculating the full distance matrix [as was done in scikit-learn versions before 0. 14]. The possibility to use custom metrics is retained; for details, see

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
425

Memory consumption for large sample sizes

This implementation is by default not memory efficient because it constructs a full pairwise similarity matrix in the case where kd-trees or ball-trees cannot be used [e. g. , with sparse matrices]. This matrix will consume \[n^2\] floats. A couple of mechanisms for getting around this are.

  • Use OPTICS clustering in conjunction with the

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    426 method. OPTICS clustering also calculates the full pairwise matrix, but only keeps one row in memory at a time [memory complexity n].

  • Biểu đồ lân cận bán kính thưa thớt [trong đó các mục bị thiếu được cho là nằm ngoài eps] có thể được tính toán trước theo cách hiệu quả về bộ nhớ và có thể chạy dbscan trên biểu đồ này với

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    427. Xem
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    428

  • The dataset can be compressed, either by removing exact duplicates if these occur in your data, or by using BIRCH. Then you only have a relatively small number of representatives for a large number of points. You can then provide a

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    67 when fitting DBSCAN

Người giới thiệu

  • “Thuật toán dựa trên mật độ để khám phá các cụm trong cơ sở dữ liệu không gian lớn có tiếng ồn” Ester, M. , H. P. Kriegel, J. Sander, and X. Xu, In Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, pp. 226–231. 1996

  • “DBSCAN revisited, revisited. why and how you should [still] use DBSCAN. ” Schubert, E. , Sander, J. , este, M. , Kriegel, H. P. , & Xu, X. [2017]. Trong Giao dịch ACM trên Hệ thống cơ sở dữ liệu [TODS], 42[3], 19

2. 3. 8. QUANG HỌC¶

The

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
430 algorithm shares many similarities with the
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
4 algorithm, and can be considered a generalization of DBSCAN that relaxes the
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 requirement from a single value to a value range. The key difference between DBSCAN and OPTICS is that the OPTICS algorithm builds a reachability graph, which assigns each sample both a
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
433 distance, and a spot within the cluster
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
434 attribute; these two attributes are assigned when the model is fitted, and are used to determine cluster membership. Nếu OPTICS được chạy với giá trị mặc định của inf được đặt cho
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
435, thì việc trích xuất cụm kiểu DBSCAN có thể được thực hiện lặp lại trong thời gian tuyến tính cho bất kỳ giá trị
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 đã cho nào bằng phương pháp
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
437. Setting
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
435 to a lower value will result in shorter run times, and can be thought of as the maximum neighborhood radius from each point to find other potential reachable points

The reachability distances generated by OPTICS allow for variable density extraction of clusters within a single data set. Như được hiển thị trong biểu đồ trên, việc kết hợp khoảng cách có thể tiếp cận và tập dữ liệu

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
434 tạo ra một biểu đồ về khả năng tiếp cận, trong đó mật độ điểm được biểu thị trên trục Y và các điểm được sắp xếp theo thứ tự sao cho các điểm lân cận liền kề nhau. ‘Cutting’ the reachability plot at a single value produces DBSCAN like results; all points above the ‘cut’ are classified as noise, and each time that there is a break when reading from left to right signifies a new cluster. The default cluster extraction with OPTICS looks at the steep slopes within the graph to find clusters, and the user can define what counts as a steep slope using the parameter
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
440. There are also other possibilities for analysis on the graph itself, such as generating hierarchical representations of the data through reachability-plot dendrograms, and the hierarchy of clusters detected by the algorithm can be accessed through the
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
441 parameter. The plot above has been color-coded so that cluster colors in planar space match the linear segment clusters of the reachability plot. Note that the blue and red clusters are adjacent in the reachability plot, and can be hierarchically represented as children of a larger parent cluster

ví dụ

  • Demo of OPTICS clustering algorithm

Comparison with DBSCAN

Các kết quả từ phương pháp OPTICS

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
437 và DBSCAN rất giống nhau, nhưng không phải lúc nào cũng giống nhau; . This is in part because the first samples of each dense area processed by OPTICS have a large reachability value while being close to other points in their area, and will thus sometimes be marked as noise rather than periphery. This affects adjacent points when they are considered as candidates for being marked as either periphery or noise

Note that for any single value of

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414, DBSCAN will tend to have a shorter run time than OPTICS; however, for repeated runs at varying
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 values, a single run of OPTICS may require less cumulative runtime than DBSCAN. It is also important to note that OPTICS’ output is close to DBSCAN’s only if
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
414 and
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
435 are close

Computational Complexity

Cây chỉ mục không gian được sử dụng để tránh tính toán ma trận khoảng cách đầy đủ và cho phép sử dụng bộ nhớ hiệu quả trên các tập hợp mẫu lớn. Different distance metrics can be supplied via the

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
447 keyword

For large datasets, similar [but not identical] results can be obtained via HDBSCAN. The HDBSCAN implementation is multithreaded, and has better algorithmic runtime complexity than OPTICS, at the cost of worse memory scaling. For extremely large datasets that exhaust system memory using HDBSCAN, OPTICS will maintain \[n\] [as opposed to \[n^2\] ] memory scaling; however, tuning of the

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
435 parameter will likely need to be used to give a solution in a reasonable amount of wall time.

Người giới thiệu

  • “OPTICS. ordering points to identify the clustering structure. ” Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel và Jörg Sander. In ACM Sigmod Record, vol. 28, no. 2, pp. 49-60. ACM, 1999

2. 3. 9. BIRCH¶

The

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
449 builds a tree called the Clustering Feature Tree [CFT] for the given data. The data is essentially lossy compressed to a set of Clustering Feature nodes [CF Nodes]. The CF Nodes have a number of subclusters called Clustering Feature subclusters [CF Subclusters] and these CF Subclusters located in the non-terminal CF Nodes can have CF Nodes as children

The CF Subclusters hold the necessary information for clustering which prevents the need to hold the entire input data in memory. Thông tin này bao gồm

  • Number of samples in a subcluster

  • Linear Sum - An n-dimensional vector holding the sum of all samples

  • Squared Sum - Sum of the squared L2 norm of all samples

  • Centroids - To avoid recalculation linear sum / n_samples

  • Squared norm of the centroids

Thuật toán BIRCH có hai tham số là ngưỡng và hệ số phân nhánh. The branching factor limits the number of subclusters in a node and the threshold limits the distance between the entering sample and the existing subclusters

Thuật toán này có thể được xem như một thể hiện hoặc phương pháp giảm dữ liệu, vì nó giảm dữ liệu đầu vào thành một tập hợp các cụm con được lấy trực tiếp từ các lá của CFT. Dữ liệu giảm này có thể được xử lý thêm bằng cách đưa nó vào một cụm toàn cầu. Bộ phân cụm toàn cầu này có thể được đặt bởi

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8. Nếu
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
8 được đặt thành Không có, các cụm con từ lá được đọc trực tiếp, nếu không, bước phân cụm toàn cầu sẽ gắn nhãn các cụm con này thành các cụm [nhãn] toàn cầu và các mẫu được ánh xạ tới nhãn toàn cầu của cụm con gần nhất

Mô tả thuật toán

  • Một mẫu mới được chèn vào gốc của Cây CF là Nút CF. Sau đó, nó được hợp nhất với cụm con của gốc, có bán kính nhỏ nhất sau khi hợp nhất, bị hạn chế bởi ngưỡng và điều kiện hệ số phân nhánh. Nếu cụm con có bất kỳ nút con nào, thì điều này được thực hiện lặp đi lặp lại cho đến khi nó đạt đến một lá. Sau khi tìm thấy cụm con gần nhất trong lá, các thuộc tính của cụm con này và cụm con cha được cập nhật đệ quy

  • Nếu bán kính của cụm con thu được bằng cách hợp nhất mẫu mới và cụm con gần nhất lớn hơn bình phương của ngưỡng và nếu số lượng cụm con lớn hơn hệ số phân nhánh, thì một khoảng trống sẽ tạm thời được phân bổ cho mẫu mới này. Hai cụm con xa nhất được lấy và các cụm con được chia thành hai nhóm trên cơ sở khoảng cách giữa các cụm con này

  • Nếu nút phân tách này có một cụm con chính và có chỗ cho một cụm con mới, thì cụm mẹ được chia thành hai. Nếu không còn chỗ, thì nút này lại được chia thành hai và quá trình được tiếp tục một cách đệ quy, cho đến khi nó đạt đến gốc

BIRCH hay MiniBatchKMeans?

  • BIRCH không mở rộng quy mô rất tốt cho dữ liệu nhiều chiều. Theo nguyên tắc thông thường nếu

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    452 lớn hơn 20, thì thường tốt hơn là sử dụng MiniBatchKMeans

  • Nếu số lượng phiên bản dữ liệu cần giảm hoặc nếu một người muốn có một số lượng lớn các cụm con dưới dạng bước tiền xử lý hoặc cách khác, thì BIRCH sẽ hữu ích hơn MiniBatchKMeans

Làm cách nào để sử dụng một phần_fit?

Để tránh tính toán phân cụm toàn cầu, đối với mọi cuộc gọi của

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
453, người dùng nên

  1. Để đặt

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    454 ban đầu

  2. Huấn luyện tất cả dữ liệu bằng nhiều lệnh gọi đến partial_fit

  3. Đặt

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    8 thành giá trị bắt buộc bằng cách sử dụng
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    456

  4. Gọi

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    453 cuối cùng mà không có đối số, tôi. e.
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    458 thực hiện phân cụm toàn cầu

Người giới thiệu

  • Tian Zhang, Raghu Ramakrishnan, Maron Livny BIRCH. Một phương pháp phân cụm dữ liệu hiệu quả cho cơ sở dữ liệu lớn. https. //www. cs. sfu. ca/CourseCentral/459/han/papers/zhang96. pdf

  • Roberto Perdisci JBirch - Java triển khai thuật toán phân cụm BIRCH https. //mã số. Google. com/archive/p/jbirch

2. 3. 10. Đánh giá hiệu suất phân cụm¶

Đánh giá hiệu suất của thuật toán phân cụm không đơn giản như đếm số lỗi hoặc độ chính xác và thu hồi của thuật toán phân loại được giám sát. Cụ thể, bất kỳ số liệu đánh giá nào cũng không nên tính đến các giá trị tuyệt đối của nhãn cụm mà thay vào đó, nếu việc phân cụm này xác định sự phân tách dữ liệu tương tự như một số tập hợp sự thật cơ bản của các lớp hoặc đáp ứng một số giả định sao cho các thành viên thuộc cùng một lớp giống nhau hơn

2. 3. 10. 1. Chỉ số Rand¶

Dựa trên kiến ​​thức về các phép gán của lớp sự thật cơ bản

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
459 và các phép gán thuật toán phân cụm của chúng tôi cho cùng một mẫu
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
460, chỉ số Rand [đã điều chỉnh hoặc chưa điều chỉnh] là một hàm đo lường mức độ giống nhau của hai phép gán, bỏ qua các hoán vị

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
25

Chỉ số Rand không đảm bảo đạt giá trị gần bằng 0. 0 cho một nhãn ngẫu nhiên. Chỉ số Rand được điều chỉnh sửa chữa theo cơ hội và sẽ đưa ra đường cơ sở như vậy

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...

Như với tất cả các số liệu phân cụm, người ta có thể hoán vị 0 và 1 trong các nhãn được dự đoán, đổi tên 2 thành 3 và nhận được cùng một số điểm

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...

Hơn nữa, cả hai

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
461
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
462 đều đối xứng. hoán đổi đối số không thay đổi điểm số. Do đó, chúng có thể được sử dụng như các biện pháp đồng thuận

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
30

Dán nhãn hoàn hảo được chấm điểm 1. 0

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
6

Nhãn đồng ý kém [e. g. ghi nhãn độc lập] có điểm số thấp hơn và đối với chỉ số Rand được điều chỉnh, điểm số sẽ âm hoặc gần bằng không. Tuy nhiên, đối với chỉ số Rand chưa được điều chỉnh, điểm số, trong khi thấp hơn, sẽ không nhất thiết phải gần bằng không

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
2

2. 3. 10. 1. 1. Ưu điểm¶

  • khả năng diễn giải. Chỉ số Rand chưa điều chỉnh tỷ lệ thuận với số cặp mẫu có nhãn giống nhau ở cả

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    460 và
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    459 hoặc khác nhau ở cả hai

  • Các bài tập nhãn ngẫu nhiên [đồng nhất] có điểm chỉ số Rand được điều chỉnh gần bằng 0. 0 cho bất kỳ giá trị nào của

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    8 và
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    7 [không phải là trường hợp của chỉ số Rand chưa được điều chỉnh hoặc thước đo V chẳng hạn]

  • phạm vi giới hạn. Các giá trị thấp hơn biểu thị các nhãn khác nhau, các cụm tương tự có chỉ số Rand cao [được điều chỉnh hoặc không được điều chỉnh], 1. 0 là điểm phù hợp hoàn hảo. Phạm vi điểm là [0, 1] cho chỉ số Rand chưa điều chỉnh và [-1, 1] cho chỉ số Rand đã điều chỉnh

  • Không có giả định nào được đưa ra trên cấu trúc cụm. Chỉ số Rand [đã điều chỉnh hoặc chưa điều chỉnh] có thể được sử dụng để so sánh tất cả các loại thuật toán phân cụm và có thể được sử dụng để so sánh các thuật toán phân cụm như k-means giả định hình dạng đốm màu đẳng hướng với kết quả của thuật toán phân cụm quang phổ có thể tìm thấy cụm có “gấp

2. 3. 10. 1. 2. Hạn chế¶

  • Trái ngược với quán tính, chỉ số Rand [đã điều chỉnh hoặc chưa điều chỉnh] yêu cầu kiến ​​thức về các lớp chân lý cơ bản mà hầu như không bao giờ có sẵn trong thực tế hoặc yêu cầu gán thủ công bởi người chú thích con người [như trong cài đặt học có giám sát]

    Tuy nhiên, chỉ số Rand [đã điều chỉnh hoặc chưa điều chỉnh] cũng có thể hữu ích trong cài đặt hoàn toàn không được giám sát dưới dạng khối xây dựng cho Chỉ số đồng thuận có thể được sử dụng để lựa chọn mô hình phân cụm [TODO]

  • Chỉ số Rand chưa điều chỉnh thường gần bằng 1. 0 ngay cả khi bản thân các cụm khác nhau đáng kể. Điều này có thể được hiểu khi giải thích chỉ số Rand là độ chính xác của việc ghi nhãn cặp phần tử do phân cụm. Trong thực tế, thường có phần lớn các cặp phần tử được gán nhãn cặp

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    467 trong cả phân cụm dự đoán và phân cụm sự thật cơ bản, dẫn đến tỷ lệ cao các nhãn cặp đồng ý, điều này sau đó dẫn đến điểm số cao

ví dụ

  • Điều chỉnh để có cơ hội đánh giá hiệu suất phân cụm . Phân tích tác động của kích thước tập dữ liệu đến giá trị của các biện pháp phân cụm cho các bài tập ngẫu nhiên.

2. 3. 10. 1. 3. Công thức toán học¶

Nếu C là phép gán lớp chân lý cơ sở và K là phân cụm, hãy xác định \[a\]\[b\] as:

  • \[a\] , số cặp phần tử thuộc cùng một tập hợp trong C và trong cùng một tập hợp trong K

  • \[b\] , số cặp phần tử nằm trong các tập hợp khác nhau trong C và trong các tập hợp khác nhau trong K

Chỉ số Rand chưa điều chỉnh sau đó được đưa ra bởi

\[\text{RI} = \frac{a + b}{C_2^{n_{samples}}}\]

trong đó \[C_2^{n_{samples}}\] là tổng số cặp có thể có trong tập dữ liệu. Việc tính toán được thực hiện trên các cặp có thứ tự hay các cặp không có thứ tự không quan trọng miễn là phép tính được thực hiện một cách nhất quán.

Tuy nhiên, chỉ số Rand không đảm bảo rằng việc gán nhãn ngẫu nhiên sẽ nhận giá trị gần bằng 0 [đặc biệt. nếu số lượng cụm có cùng thứ tự độ lớn với số lượng mẫu]

Để chống lại hiệu ứng này, chúng ta có thể chiết khấu RI dự kiến ​​ \[E[\text{RI}]\] của các nhãn ngẫu nhiên bằng cách xác định .

\[\text{ARI} = \frac{\text{RI} - E[\text{RI}]}{\max[\text{RI}] - E[\text{RI}]}\]

Người giới thiệu

  • So sánh phân vùng L. Hubert và P. Arabie, Tạp chí Phân loại 1985

  • Thuộc tính của chỉ số Rand điều chỉnh Hubert-Arabie D. Steinley, Phương pháp tâm lý 2004

  • Mục nhập Wikipedia cho chỉ số Rand

  • Mục nhập Wikipedia cho chỉ số Rand đã điều chỉnh

2. 3. 10. 2. Điểm dựa trên thông tin lẫn nhau¶

Với kiến ​​thức về các phép gán của lớp sự thật cơ bản

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
459 và các phép gán thuật toán phân cụm của chúng tôi cho cùng một mẫu
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
460, Thông tin chung là một hàm đo lường sự thống nhất của hai phép gán, bỏ qua các hoán vị. Hiện có hai phiên bản chuẩn hóa khác nhau của thước đo này, Thông tin tương hỗ được chuẩn hóa [NMI] và Thông tin tương hỗ được điều chỉnh [AMI]. NMI thường được sử dụng trong tài liệu, trong khi AMI được đề xuất gần đây hơn và được chuẩn hóa theo cơ hội

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
4

Người ta có thể hoán vị 0 và 1 trong các nhãn được dự đoán, đổi tên 2 thành 3 và nhận được cùng số điểm

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
3

Tất cả,

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
470,
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
471 và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
472 đều đối xứng. hoán đổi đối số không thay đổi điểm số. Do đó, chúng có thể được sử dụng như một biện pháp đồng thuận

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
40

Dán nhãn hoàn hảo được chấm điểm 1. 0

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
41

Điều này không đúng với

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
470, do đó khó đánh giá hơn

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
42

Xấu [e. g. ghi nhãn độc lập] có điểm số không tích cực

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
43

2. 3. 10. 2. 1. Ưu điểm¶

  • Việc gán nhãn ngẫu nhiên [đồng nhất] có điểm AMI gần bằng 0. 0 cho bất kỳ giá trị nào của

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    8 và
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    7 [không phải là trường hợp đối với Thông tin chung thô hoặc thước đo V chẳng hạn]

  • Giới hạn trên của 1. Các giá trị gần bằng 0 biểu thị hai phép gán nhãn phần lớn là độc lập, trong khi các giá trị gần bằng một biểu thị sự đồng thuận đáng kể. Hơn nữa, AMI chính xác bằng 1 chỉ ra rằng hai lần gán nhãn bằng nhau [có hoặc không có hoán vị]

2. 3. 10. 2. 2. Hạn chế¶

  • Trái ngược với quán tính, các biện pháp dựa trên MI yêu cầu kiến ​​thức về các lớp sự thật cơ bản trong khi hầu như không có sẵn trong thực tế hoặc yêu cầu gán thủ công bởi người chú thích con người [như trong cài đặt học tập có giám sát]

    Tuy nhiên, các biện pháp dựa trên MI cũng có thể hữu ích trong cài đặt hoàn toàn không được giám sát dưới dạng khối xây dựng cho Chỉ số đồng thuận có thể được sử dụng để lựa chọn mô hình phân cụm

  • NMI và MI không được điều chỉnh theo cơ hội

ví dụ

  • Điều chỉnh để có cơ hội đánh giá hiệu suất phân cụm . Phân tích tác động của kích thước tập dữ liệu đến giá trị của các biện pháp phân cụm cho các bài tập ngẫu nhiên. Ví dụ này cũng bao gồm Chỉ số Rand đã Điều chỉnh.

2. 3. 10. 2. 3. Công thức toán học¶

Giả sử gán hai nhãn [của cùng N đối tượng], \[U\] . Entropy của chúng là lượng không chắc chắn cho một tập hợp phân vùng, được xác định bởi. . Their entropy is the amount of uncertainty for a partition set, defined by:

\[H[U] = - \sum_{i=1}^{. U. }P[i]\log[P[i]]\]

ở đâu \[P[i] =. U_i. / N\] là xác suất để một đối tượng được chọn ngẫu nhiên từ \[U\] rơi vào lớp < . Tương tự như vậy cho \[U_i\]. Likewise for \[V\] .

\[H[V] = - \sum_{j=1}^{. V. }P'[j]\log[P'[j]]\]

Với \[P'[j] =. V_j. / N\] . Thông tin chung [MI] giữa \[U\]\[V\] is calculated by:

\[\text{MI}[U, V] = \sum_{i=1}^{. U. }\sum_{j=1}^{. V. }P[i, j]\log\left[\frac{P[i,j]}{P[i]P'[j]}\right]\]

ở đâu \[P[i, j] =. U_i \cap V_j. / N\] là xác suất để một vật được chọn ngẫu nhiên rơi vào cả hai loại \[U_i\] và . \[V_j\].

Nó cũng có thể được thể hiện trong công thức cardinality thiết lập

\[\text{MI}[U, V] = \sum_{i=1}^{. U. } \sum_{j=1}^{. V. } \frac{. U_i \cap V_j. }{N}\log\left[\frac{N. U_i \cap V_j. }{. U_i. V_j. }\đúng]\]

Thông tin chung được chuẩn hóa được định nghĩa là

\[\text{NMI}[U, V] = \frac{\text{MI}[U, V]}{\text{mean}[H[U], H[V]]}\]

Giá trị này của thông tin lẫn nhau và cả biến thể chuẩn hóa không được điều chỉnh theo cơ hội và sẽ có xu hướng tăng lên khi số lượng nhãn [cụm] khác nhau tăng lên, bất kể lượng “thông tin chung” thực tế giữa các lần gán nhãn là bao nhiêu

Giá trị dự kiến ​​cho thông tin chung có thể được tính bằng phương trình sau [VEB2009] . Trong phương trình này, \[a_i =. U_i. \] [số phần tử trong \[U_i\] ] và \[b_j = |V_j|\] [số phần tử trong \[V_j\] ].

\[E[\text{MI}[U,V]]=\sum_{i=1}^{. U. } \sum_{j=1}^{. V. } \sum_{n_{ij}=[a_i+b_j-N]^+ }^{\min[a_i, b_j]} \frac{n_{ij}}{N}\log \left[ \frac{ N. n_{ij}}{a_i b_j}\right] \frac{a_i. b_j. [N-a_i]. [N-b_j]. }{N. n_{ij}. [a_i-n_{ij}]. [b_n_{in}]. [N-a_i-b_j+n_{ij}]. }\]

Khi sử dụng giá trị dự kiến, thông tin tương hỗ đã điều chỉnh sau đó có thể được tính toán bằng cách sử dụng biểu mẫu tương tự như biểu mẫu của chỉ số Rand đã điều chỉnh

\[\text{AMI} = \frac{\text{MI} - E[\text{MI}]}{\text{mean}[H[U], H[V]] - E[\text{MI

Đối với thông tin chung được chuẩn hóa và thông tin lẫn nhau được điều chỉnh, giá trị chuẩn hóa thường là một giá trị trung bình tổng quát nào đó của các entropi của mỗi cụm. Có nhiều phương tiện tổng quát khác nhau và không có quy tắc vững chắc nào tồn tại để ưu tiên cái này hơn cái kia. Quyết định phần lớn dựa trên cơ sở từng lĩnh vực; . Mỗi phương pháp chuẩn hóa cung cấp “các hành vi tương tự về mặt chất lượng” [YAT2016] . Trong triển khai của chúng tôi, điều này được kiểm soát bởi tham số

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
476.

Vinh và cộng sự. [2010] đặt tên cho các biến thể của NMI và AMI theo phương pháp tính trung bình của chúng [VEB2010] . Trung bình 'sqrt' và 'sum' của chúng là các phương tiện hình học và số học; .

Người giới thiệu

  • Strehl, Alexander và Joydeep Ghosh [2002]. “Cluster ensembles – một khung tái sử dụng kiến ​​thức để kết hợp nhiều phân vùng”. Tạp chí Nghiên cứu Máy học 3. 583–617. doi. 10. 1162/153244303321897735

  • Wikipedia entry for the [normalized] Mutual Information

  • Mục nhập Wikipedia cho Thông tin chung được điều chỉnh

[ VEB2009 ]

Vinh, Epps, và Bailey, [2009]. “Các biện pháp lý thuyết thông tin để so sánh cụm”. Proceedings of the 26th Annual International Conference on Machine Learning - ICML ‘09. doi. 10. 1145/1553374. 1553511. ISBN 9781605585161

[ VEB2010 ]

Vinh, Epps, and Bailey, [2010]. “Information Theoretic Measures for Clusterings Comparison: Variants, Properties, Normalization and Correction for Chance”. JMLR

[ YAT2016 ]

Yang, Algesheimer và Tessone, [2016]. “A comparative analysis of community detection algorithms on artificial networks”. Scientific Reports 6. 30750. doi. 10. 1038/srep30750

2. 3. 10. 3. Homogeneity, completeness and V-measure¶

Given the knowledge of the ground truth class assignments of the samples, it is possible to define some intuitive metric using conditional entropy analysis

In particular Rosenberg and Hirschberg [2007] define the following two desirable objectives for any cluster assignment

  • homogeneity. each cluster contains only members of a single class

  • completeness. all members of a given class are assigned to the same cluster

We can turn those concept as scores

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
477 and
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
478. Both are bounded below by 0. 0 and above by 1. 0 [higher is better]

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
44

Their harmonic mean called V-measure is computed by

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
479

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
45

This function’s formula is as follows

\[v = \frac{[1 + \beta] \times \text{homogeneity} \times \text{completeness}}{[\beta \times \text{homogeneity} + \text{completeness}]}\]

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
480 defaults to a value of 1. 0, but for using a value less than 1 for beta

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
46

more weight will be attributed to homogeneity, and using a value greater than 1

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
47

more weight will be attributed to completeness

The V-measure is actually equivalent to the mutual information [NMI] discussed above, with the aggregation function being the arithmetic mean [B2011] .

Homogeneity, completeness and V-measure can be computed at once using

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
481 as follows

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
48

The following clustering assignment is slightly better, since it is homogeneous but not complete

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
49

Note

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
479 is symmetric. it can be used to evaluate the agreement of two independent assignments on the same dataset

This is not the case for

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
478 and
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
477. both are bound by the relationship

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
250

2. 3. 10. 3. 1. Advantages¶

  • Bounded scores. 0. 0 is as bad as it can be, 1. 0 is a perfect score

  • Intuitive interpretation. clustering with bad V-measure can be qualitatively analyzed in terms of homogeneity and completeness to better feel what ‘kind’ of mistakes is done by the assignment

  • No assumption is made on the cluster structure. can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with “folded” shapes

2. 3. 10. 3. 2. Hạn chế¶

  • The previously introduced metrics are not normalized with regards to random labeling. this means that depending on the number of samples, clusters and ground truth classes, a completely random labeling will not always yield the same values for homogeneity, completeness and hence v-measure. In particular random labeling won’t yield zero scores especially when the number of clusters is large

    This problem can safely be ignored when the number of samples is more than a thousand and the number of clusters is less than 10. For smaller sample sizes or larger number of clusters it is safer to use an adjusted index such as the Adjusted Rand Index [ARI]

  • These metrics require the knowledge of the ground truth classes while almost never available in practice or requires manual assignment by human annotators [as in the supervised learning setting]

ví dụ

  • Điều chỉnh để có cơ hội đánh giá hiệu suất phân cụm . Phân tích tác động của kích thước tập dữ liệu đến giá trị của các biện pháp phân cụm cho các bài tập ngẫu nhiên.

2. 3. 10. 3. 3. Mathematical formulation¶

Homogeneity and completeness scores are formally given by

\[h = 1 - \frac{H[C. K]}{H[C]}\]

\[c = 1 - \frac{H[K. C]}{H[K]}\]

ở đâu \[H[C. K]\] là entropy có điều kiện của các lớp được gán cho cụm và được cho bởi.

\[H[C. K] = - \sum_{c=1}^{. C. } \sum_{k=1}^{. K. } \frac{n_{c,k}}{n} \cdot \log\left[\frac{n_{c,k}}{n_k}\right]\]

and \[H[C]\] là entropy của các lớp và được cho bởi.

\[H[C] = - \sum_{c=1}^{. C. } \frac{n_c}{n} \cdot \log\left[\frac{n_c}{n}\right]\]

với \[n\] tổng số mẫu, \[n_c\]< . and \[n_k\] the number of samples respectively belonging to class \[c\] and cluster \[k\], and finally \[n_{c,k}\] the number of samples from class \[c\] assigned to cluster \[k\].

Entropy có điều kiện của các cụm đã cho lớp \[H[K. C]\] và entropy của cụm \[H[K]\] được xác định theo cách đối xứng.

Rosenberg và Hirschberg định nghĩa thêm thước đo V là phương tiện điều hòa của tính đồng nhất và tính đầy đủ

\[v = 2 \cdot \frac{h \cdot c}{h + c}\]

Người giới thiệu

  • V-đo. Một biện pháp đánh giá cụm bên ngoài dựa trên entropy có điều kiện Andrew Rosenberg và Julia Hirschberg, 2007

[ B2011 ]

Xác định và mô tả đặc điểm của các sự kiện trong phương tiện truyền thông xã hội, Hila Becker, Luận án tiến sĩ

2. 3. 10. 4. Điểm số của Fowlkes-Mallows¶

Chỉ số Fowlkes-Mallows [

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
485] có thể được sử dụng khi đã biết các phép gán lớp chân lý cơ sở của các mẫu. Điểm FMI của Fowlkes-Mallows được định nghĩa là giá trị trung bình hình học của độ chính xác theo cặp và thu hồi

\[\text{FMI} = \frac{\text{TP}}{\sqrt{[\text{TO} + \text{FP}] [\text{TP} + \text{FN}]}}\

Trong đó

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
486 là số True positive [i. e. số lượng cặp điểm thuộc về cùng một cụm trong cả nhãn thực và nhãn dự đoán],
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
487 là số Tích cực Sai [i. e. số cặp điểm thuộc về cùng một cụm trong các nhãn thực chứ không phải trong các nhãn dự đoán] và
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
488 là số Âm tính Sai [i. e số cặp điểm thuộc cùng một cụm trong các nhãn được dự đoán và không có trong các nhãn thực]

Điểm nằm trong khoảng từ 0 đến 1. Giá trị cao cho thấy sự tương đồng tốt giữa hai cụm

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
251

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
252

Người ta có thể hoán vị 0 và 1 trong các nhãn được dự đoán, đổi tên 2 thành 3 và nhận được cùng số điểm

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
253

Dán nhãn hoàn hảo được chấm điểm 1. 0

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
254

Xấu [e. g. ghi nhãn độc lập] không có điểm

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
255

2. 3. 10. 4. 1. Ưu điểm¶

  • Việc gán nhãn ngẫu nhiên [đồng nhất] có điểm FMI gần bằng 0. 0 cho bất kỳ giá trị nào của

    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    8 và
    >>> labels_pred = [1, 1, 0, 0, 3, 3]
    >>> metrics.rand_score[labels_true, labels_pred]
    0.66...
    >>> metrics.adjusted_rand_score[labels_true, labels_pred]
    0.24...
    
    7 [không phải là trường hợp đối với Thông tin chung thô hoặc thước đo V chẳng hạn]

  • Giới hạn trên tại 1. Các giá trị gần bằng 0 biểu thị hai phép gán nhãn phần lớn là độc lập, trong khi các giá trị gần bằng một biểu thị sự đồng thuận đáng kể. Ngoài ra, các giá trị chính xác bằng 0 biểu thị các phép gán nhãn hoàn toàn độc lập và FMI chính xác bằng 1 biểu thị rằng hai phép gán nhãn bằng nhau [có hoặc không có hoán vị]

  • No assumption is made on the cluster structure. can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with “folded” shapes

2. 3. 10. 4. 2. Hạn chế¶

  • Trái ngược với quán tính, các biện pháp dựa trên FMI yêu cầu kiến ​​thức về các lớp sự thật cơ bản trong khi hầu như không có sẵn trong thực tế hoặc yêu cầu gán thủ công bởi người chú thích con người [như trong cài đặt học tập có giám sát]

Người giới thiệu

  • E. b. Fowles và C. l. Bụt, 1983. “Một phương pháp để so sánh hai cụm phân cấp”. Tạp chí của Hiệp hội Thống kê Hoa Kỳ. https. //www. tandfonline. com/doi/abs/10. 1080/01621459. 1983. 10478008

  • Mục nhập Wikipedia cho Chỉ mục Fowlkes-Mallows

2. 3. 10. 5. Hệ số bóng¶

Nếu không biết nhãn sự thật cơ bản, việc đánh giá phải được thực hiện bằng chính mô hình. Hệ số Hình bóng [_______5491] là một ví dụ về đánh giá như vậy, trong đó điểm Hệ số Hình bóng cao hơn liên quan đến một mô hình có các cụm được xác định rõ hơn. Hệ số Silhouette được xác định cho từng mẫu và bao gồm hai điểm

  • a. Khoảng cách trung bình giữa một mẫu và tất cả các điểm khác trong cùng một lớp

  • b. Khoảng cách trung bình giữa một mẫu và tất cả các điểm khác trong cụm gần nhất tiếp theo

Hệ số Silhouette s cho một mẫu đơn sau đó được đưa ra là

\[s = \frac{b - a}{max[a, b]}\]

Hệ số Hình bóng cho một tập hợp các mẫu được coi là giá trị trung bình của Hệ số Hình bóng cho mỗi mẫu

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
256

Trong cách sử dụng bình thường, Hệ số Silhouette được áp dụng cho kết quả phân tích cụm

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
257

Người giới thiệu

  • Peter J. Rousseeuw [1987]. “Bóng. Hỗ trợ đồ họa cho việc diễn giải và xác thực phân tích cụm”. Toán học và Toán ứng dụng 20. 53–65

2. 3. 10. 5. 1. Ưu điểm¶

  • Điểm được giới hạn giữa -1 đối với phân cụm không chính xác và +1 đối với phân cụm có mật độ cao. Điểm xung quanh số 0 cho thấy các cụm chồng chéo

  • Điểm cao hơn khi các cụm dày đặc và tách biệt tốt, liên quan đến khái niệm tiêu chuẩn về cụm

2. 3. 10. 5. 2. Hạn chế¶

  • Hệ số Silhouette thường cao hơn đối với các cụm lồi so với các khái niệm khác về cụm, chẳng hạn như các cụm dựa trên mật độ giống như các cụm thu được thông qua DBSCAN

ví dụ

  • Chọn số cụm có phân tích hình bóng trên phân cụm KMeans . Trong ví dụ này, phân tích hình bóng được sử dụng để chọn giá trị tối ưu cho n_cluster.

2. 3. 10. 6. Chỉ số Calinski-Harabasz¶

Nếu không biết nhãn sự thật cơ bản, thì chỉ số Calinski-Harabasz [

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
492] - còn được gọi là Tiêu chí tỷ lệ phương sai - có thể được sử dụng để đánh giá mô hình, trong đó điểm Calinski-Harabasz cao hơn liên quan đến mô hình có các cụm được xác định rõ hơn

Chỉ số là tỷ lệ của tổng độ phân tán giữa các cụm và độ phân tán bên trong cụm cho tất cả các cụm [trong đó độ phân tán được định nghĩa là tổng bình phương khoảng cách]

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
256

Trong cách sử dụng bình thường, chỉ số Calinski-Harabasz được áp dụng cho kết quả phân tích cụm

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
259

2. 3. 10. 6. 1. Ưu điểm¶

  • Điểm cao hơn khi các cụm dày đặc và tách biệt tốt, liên quan đến khái niệm tiêu chuẩn về cụm

  • Điểm số được tính toán nhanh chóng

2. 3. 10. 6. 2. Hạn chế¶

  • Chỉ số Calinski-Harabasz đối với các cụm lồi thường cao hơn so với các khái niệm khác về cụm, chẳng hạn như các cụm dựa trên mật độ giống như các cụm thu được thông qua DBSCAN

2. 3. 10. 6. 3. Công thức toán học¶

Đối với tập hợp dữ liệu \[E\] có kích thước \[n_E\]< . which has been clustered into \[k\] clusters, the Calinski-Harabasz score \[s\] is defined as the ratio of the between-clusters dispersion mean and the within-cluster dispersion:

\[s = \frac{\mathrm{tr}[B_k]}{\mathrm{tr}[W_k]} \times \frac{n_E - k}{k - 1}\]

trong đó \[\mathrm{tr}[B_k]\] là dấu vết của ma trận phân tán giữa nhóm và \[\mathrm{tr}[W_k]\] is the trace of the within-cluster dispersion matrix defined by:

\[W_k = \sum_{q=1}^k \sum_{x \in C_q} [x - c_q] [x - c_q]^T\]

\[B_k = \sum_{q=1}^k n_q [c_q - c_E] [c_q - c_E]^T\]

với \[C_q\] tập hợp các điểm trong cụm \[q\]< . , \[c_q\] the center of cluster \[q\], \[c_E\] the center of \[E\], and \[n_q\] the number of points in cluster \[q\].

Người giới thiệu

  • Caliński, T. , & Harabasz, J. [1974]. “Phương pháp Dendrite để phân tích cụm”. Truyền thông trong lý thuyết thống kê và phương pháp 3. 1-27

2. 3. 10. 7. Chỉ số Davies-Bouldin¶

Nếu không biết nhãn sự thật cơ bản, chỉ số Davies-Bouldin [

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
493] có thể được sử dụng để đánh giá mô hình, trong đó chỉ số Davies-Bouldin thấp hơn liên quan đến mô hình có sự phân tách tốt hơn giữa các cụm

Chỉ số này biểu thị 'độ tương tự' trung bình giữa các cụm, trong đó độ tương tự là thước đo so sánh khoảng cách giữa các cụm với kích thước của chính các cụm đó

Zero là số điểm thấp nhất có thể. Các giá trị gần bằng 0 cho biết phân vùng tốt hơn

Trong cách sử dụng bình thường, chỉ số Davies-Bouldin được áp dụng cho kết quả phân tích cụm như sau

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
0

2. 3. 10. 7. 1. Ưu điểm¶

  • Việc tính toán Davies-Bouldin đơn giản hơn so với điểm số Silhouette

  • Chỉ mục chỉ dựa trên số lượng và tính năng vốn có của tập dữ liệu vì tính toán của nó chỉ sử dụng khoảng cách theo điểm

2. 3. 10. 7. 2. Hạn chế¶

  • Chỉ số Davies-Boulding đối với các cụm lồi thường cao hơn so với các khái niệm khác về cụm, chẳng hạn như các cụm dựa trên mật độ như các cụm thu được từ DBSCAN

  • Việc sử dụng khoảng cách centroid giới hạn số liệu khoảng cách với không gian Euclide

2. 3. 10. 7. 3. Công thức toán học¶

Chỉ số được định nghĩa là mức độ tương đồng trung bình giữa mỗi cụm \[C_i\] cho \ . , k\] và cái tương tự nhất của nó \[C_j\] . Trong ngữ cảnh của chỉ số này, sự tương đồng được định nghĩa là thước đo \[R_{ij}\] đánh đổi.

  • \[s_i\] , khoảng cách trung bình giữa mỗi điểm của cụm \[i\] and the centroid of that cluster – also know as cluster diameter.

  • \[d_{ij}\] , khoảng cách giữa các trọng tâm cụm \[i\] and \[j\].

Một lựa chọn đơn giản để xây dựng \[R_{in}\] sao cho không âm và đối xứng là.

\[R_{ij} = \frac{s_i + s_j}{d_{ij}}\]

Sau đó, chỉ số Davies-Bouldin được định nghĩa là

\[DB = \frac{1}{k} \sum_{i=1}^k \max_{i \neq j} R_{ij}\]

Người giới thiệu

  • Davies, David L. ; . [1979]. “Đo lường phân tách cụm” Giao dịch của IEEE về Phân tích mẫu và Trí thông minh của máy. PAMI-1 [2]. 224-227

  • Halkidi, Maria; . “Về các kỹ thuật xác thực phân cụm” Tạp chí Hệ thống thông tin thông minh, 17[2-3], 107-145

  • Mục nhập Wikipedia cho chỉ mục Davies-Bouldin

2. 3. 10. 8. Ma trận dự phòng¶

Ma trận dự phòng [

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
494] báo cáo lực lượng giao nhau cho mỗi cặp cụm đúng/dự đoán. Ma trận dự phòng cung cấp số liệu thống kê đầy đủ cho tất cả các số liệu phân cụm trong đó các mẫu độc lập và được phân phối giống hệt nhau và không cần tính đến một số trường hợp không được phân cụm

Đây là một ví dụ

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
1

Hàng đầu tiên của mảng đầu ra chỉ ra rằng có ba mẫu có cụm thực sự là “a”. Trong số đó, 2 người thuộc cụm 0 được dự đoán, một người thuộc nhóm 1 và không có người nào thuộc nhóm 2. Và hàng thứ hai chỉ ra rằng có ba mẫu có cụm thực sự là “b”. Trong số đó, không có cái nào ở cụm dự đoán 0, một cái ở cụm 1 và hai cái ở cụm 2

A ma trận nhầm lẫn để phân loại là một ma trận ngẫu nhiên vuông trong đó thứ tự của các hàng và cột tương ứng với một danh sách các lớp.

2. 3. 10. 8. 1. Ưu điểm¶

  • Cho phép kiểm tra mức độ lan truyền của từng cụm thực trên các cụm được dự đoán và ngược lại

  • Bảng dự phòng được tính toán thường được sử dụng để tính toán thống kê tương tự [giống như các thống kê khác được liệt kê trong tài liệu này] giữa hai cụm

2. 3. 10. 8. 2. Hạn chế¶

  • Ma trận dự phòng dễ diễn giải đối với một số lượng nhỏ các cụm, nhưng trở nên rất khó diễn giải đối với một số lượng lớn các cụm

  • Nó không đưa ra một chỉ số nào để sử dụng làm mục tiêu cho việc tối ưu hóa phân cụm

Người giới thiệu

  • Mục nhập Wikipedia cho ma trận dự phòng

2. 3. 10. 9. Ma trận nhầm lẫn ghép nối¶

Ma trận nhầm lẫn cặp [

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.rand_score[labels_true, labels_pred]
0.66...
>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
495] là ma trận tương tự 2x2

\[\begin{split}C = \left[\begin{matrix} C_{00} & C_{01} \\ C_{10} & C_{11} \end{matrix}\right]\end{split}

giữa hai cụm được tính toán bằng cách xem xét tất cả các cặp mẫu và đếm các cặp được chỉ định vào cùng một cụm hoặc vào các cụm khác nhau theo cụm đúng và dự đoán

Nó có các mục sau

\[C_{00}\] . số cặp với cả hai cụm có các mẫu không được nhóm lại với nhau

\[C_{10}\] . số cặp với phân cụm nhãn thực có các mẫu được phân cụm cùng nhau nhưng phân cụm khác không có các mẫu được phân cụm cùng nhau

\[C_{01}\] . số cặp có cụm nhãn thực sự không có các mẫu được nhóm lại với nhau nhưng cụm khác có các mẫu được nhóm lại với nhau

\[C_{11}\] . số cặp với cả hai cụm có các mẫu được nhóm lại với nhau

Xét một cặp mẫu được nhóm lại với nhau thành một cặp dương tính, thì giống như trong phân loại nhị phân, số lượng âm tính thực sự là \[C_{00}\], false negatives is \[C_{10}\], true positives is \[C_{11}\] and false positives is \[C_{01}\].

Nhãn phù hợp hoàn hảo có tất cả các mục khác không trên đường chéo bất kể giá trị nhãn thực tế

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
2

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
3

Các nhãn gán tất cả các thành viên của lớp cho cùng một cụm đã hoàn thành nhưng có thể không phải lúc nào cũng thuần túy, do đó bị phạt và có một số mục nhập khác không theo đường chéo

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
4

Ma trận không đối xứng

>>> metrics.adjusted_rand_score[labels_true, labels_pred]
0.24...
5

Nếu các thành viên của lớp được phân chia hoàn toàn trên các cụm khác nhau, thì phép gán hoàn toàn không đầy đủ, do đó ma trận có tất cả các mục có đường chéo bằng 0

Chủ Đề