Tổng bình phương sự khác biệt python

Bạn có thấy bài viết hữu ích không? . Vui lòng chia sẻ phản hồi có giá trị của bạn và giúp tôi đối xử với bạn bằng nội dung tốt hơn trong tương lai

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. Đối với , và 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

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

Tổng bình phương sự khác biệt python

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)

số 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...
7 rất lớn, 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 với

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

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)

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

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)

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

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

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

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

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

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

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 phần 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

phương pháp phân cụm (ngược lại với phương pháp phân cụm) không được thiết kế để áp dụng cho dữ liệu mới, chưa thấy

2. 3. 2. K-nghĩa

Thuật toán 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ư trước khi phân cụm k-mean có thể giảm bớt vấn đề này và tăng tốc độ tính toán

Tổng bình phương sự khác biệt python

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.

Tổng bình phương sự khác biệt python

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-means++, đã đượ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...
15). Đ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 để 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...
17. Đ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 về

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

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ố đề, vui lòng tham khảo ghi chú của chúng tôi

ví dụ

  • Chứng minh khi k-mean hoạt động trực quan và khi nào thì không

  • 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 việc 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. Phương tiện K hàng loạt nhỏ

Đây là một biến thể của thuật toán 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ộ. Ngược lại với các thuật toán khác làm giảm thời gian hội tụ của k-means, k-mean theo đợ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-means. Ở 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.

hội tụ nhanh hơn , 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

Tổng bình phương sự khác biệt python

ví dụ

  • So sánh KMeans và MiniBatchKMeans

  • Phân cụm tài liệu bằng MiniBatchKMeans thưa thớ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ệ

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

Tổng bình phương sự khác biệt python

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 chấn 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ụ

  • Tuyên truyền mối quan hệ trên bộ dữ liệu 2D tổng hợp với 3 lớp

  • 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 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...
36, 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...
37 đượ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

Tổng bình phương sự khác biệt python

ví dụ

  • 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ổ

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...
39 đượ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...
39 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 đồng. 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

Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python

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...
7

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

ví dụ

  • 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 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...
81 của. 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...
83 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...
84, 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...
85 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...
86 đượ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...
87

>>> 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...
88

>>> 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...
89

Tổng bình phương sự khác biệt python

Tổng bình phương sự khác biệt python

Tổng bình phương sự khác biệt python

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...
60

>>> 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

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 thứ 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 thực hiện phân cụm theo thứ 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

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ể

Việc 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. Nó là một công cụ giảm kích thước, xem

2. 3. 6. 1. Loại liên kết khác. Phường, liên kết đầy đủ, trung bình và đơn lẻ

hỗ trợ các chiến lược liên kết Phường, đơn lẻ, trung bình và đầy đủ

Tổng bình phương sự khác biệt python

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ụ

  • 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ỏ

Tổng bình phương sự khác biệt python

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

Một khía cạnh thú vị 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

Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python

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 để hạn chế hợp nhất với các pixel lân cận gần nhất như trong hoặc sử dụng để chỉ cho phép hợp nhất các pixel lân cận trên một hình ảnh, như trong ví dụ

ví dụ

  • Phân cụm phường để chia hình ảnh xu theo vùng miền

  • 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

  • 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ả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 cụm liên kết, đặc biệt nếu chúng được xây dựng với. 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. (xem phần thảo luận trong). Liên kết đơn là tùy chọn liên kết giòn nhất liên quan đến vấn đề này

Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python

2. 3. 6. 4. Thay đổi chỉ số

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

  • khoảng cách l1 thường tốt cho các tính năng thưa thớt hoặc tiếng ồn thưa thớt. tôi. e. nhiều tính năng bằng không, như trong khai thác văn bản bằng cách sử dụng các từ hiếm gặp

  • khoảng cách cosin rất thú vị vì nó bất biến đối với tỷ lệ toàn cầu của tín hiệu

Nguyên tắc chọn số liệu là sử dụng một số liệu tối đa hóa khoảng cách giữa các mẫu trong các lớp khác nhau và giảm thiểu khoảng cách đó trong mỗi lớp

Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python
Tổng bình phương sự khác biệt python

ví dụ

2. 3. 6. 5. Chia đôi phương tiện K

The là một biến thể lặp của , 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 đó. một cụm được chia thành hai cụm mới nhiều lần cho đến khi đạt được số cụm mục tiêu

hiệu quả hơn so với khi số lượng cụm lớn vì nó chỉ hoạt động trên một tập hợp con dữ liệu ở mỗi phần chia đôi trong khi luôn hoạt động trên toàn bộ tập dữ liệu

Mặc dù 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...
706 theo thiết kế, 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...
707 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...
14 với khởi tạo ngẫu nhiên

Biến thể này hiệu quả hơn đối với phân cụm kết tụ nếu số lượng cụm nhỏ so với số lượng điểm dữ liệu

Biến thể này cũng không tạo ra các cụm trống

Có hai chiến lược để chọn cụm để tách
  • >>> 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...
    
    709 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...
    
    710 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)

Chọn theo số lượng điểm dữ liệu lớn nhất trong hầu hết các trường hợp tạo ra kết quả chính xác như chọn theo quán tính và nhanh hơn (đặc biệt đối với số lượng điểm dữ liệu lớn hơn, trong đó lỗi tính toán có thể tốn kém)

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...
14 được biết là tạo ra các cụm có kích thước khác nhau

Có thể thấy sự khác biệt giữa Bisecting K-Means và K-Means thông thường. Mặc dù thuật toán K-Means thông thường có xu hướng tạo các cụm không liên quan, nhưng các cụm từ K-Means Chia đôi được sắp xếp hợp lý và tạo ra một hệ thống phân cấp rõ ràng

Người giới thiệu

  • “So sánh các kỹ thuật phân cụm tài liệu” Michael Steinbach, George Karypis và Vipin Kumar, Khoa Khoa học Máy tính và Kỹ thuật, Đại học Minnesota (tháng 6 năm 2000)

  • “Phân tích hiệu suất của K-Means và chia đôi thuật toán K-Means trong dữ liệu blog” K. Abirami và Tiến sĩ. P. Mayilvahanan, Tạp chí Quốc tế về Công nghệ Mới nổi trong Nghiên cứu Kỹ thuật (IJETER) Tập 4, Số 8, (Tháng 8 năm 2016)

  • “Thuật toán chia đôi phương tiện K dựa trên tối ưu hóa trung tâm phân cụm và tự xác định giá trị K” Jian Di, Trường Kiểm soát và Kỹ thuật Máy tính Xinyue Gou, Đại học Điện lực Bắc Trung Quốc, Bảo Định, Hà Bắc, Trung Quốc (tháng 8 năm 2017)

2. 3. 7. DBSCAN

Thuật toán 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. Do chế độ xem khá chung chung này, các cụm được tìm thấy bởi DBSCAN có thể có hình dạng bất kỳ, trái ngược với phương tiện k giả định rằng các cụm có hình dạng lồi. Thành phần trung tâm của DBSCAN là khái niệm về các mẫu lõi, là các mẫu nằm trong khu vực có mật độ cao. Do đó, một cụm là một tập hợp các mẫu lõi, mỗi mẫu gần nhau (được đo bằng một số thước đo khoảng cách) và một tập hợp các mẫu không phải lõi gần với mẫu lõi (nhưng bản thân chúng không phải là mẫu lõi). 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...
713 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...
714, 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.
>>> 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...
713 cao hơn hoặc thấp 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...
714 cho thấy mật độ cao hơn cần thiết để tạo thành một cụm

Chính thức hơn, chúng tôi định nghĩa một mẫu lõi là một mẫu trong tập dữ liệu sao cho tồn tạ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...
713 mẫu khác trong khoảng cách
>>> 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...
714, được định nghĩa là hàng xóm của mẫu lõi. Điều này cho chúng ta biết rằng mẫu lõi nằm trong vùng dày đặc của không gian vectơ. 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. Một cụm cũng có một tập hợp các mẫu không phải lõi, là các mẫu là hàng xóm của một mẫu lõi trong cụm nhưng bản thân chúng không phải là mẫu lõi. Theo trực giác, những mẫu này nằm ở rìa của một cụm

Theo định nghĩa, bất kỳ mẫu lõi nào cũng là một phần của cụm. 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...
714, đều được coi là ngoại lệ theo thuật toán

Mặc dù 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...
713 chủ yếu kiểm soát mức độ chịu đựng của thuật toán đối với nhiễu (đối với tập dữ liệu lớn và nhiễu, có thể nên tăng tham số này), 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...
714 rất quan trọng để chọn phù hợp cho tập dữ liệu và chức năng khoảng cách và thường không thể bỏ qua . Nó kiểm soát vùng lân cận địa phương của các điểm. Khi được chọn quá nhỏ, hầu hết dữ liệu sẽ không được nhóm lại (và được gắn nhã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...
722 cho “tiếng ồn”). 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. Một số kinh nghiệm để chọn tham số này đã được thảo luận trong tài liệu, ví dụ dựa trên đầu gối trong biểu đồ khoảng cách lân cận gần nhất (như được thảo luận trong tài liệu tham khảo bên dưới)

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. Các vòng tròn nhỏ hơn là các mẫu không phải lõi vẫn là một phần của cụm. Hơn nữa, các ngoại lệ được biểu thị bằng các điểm đen bên dưới

Tổng bình phương sự khác biệt python

ví dụ

Thực hiện

Thuật toán DBSCAN mang tính xác định, luôn tạo ra các cụm giống nhau khi được cung cấp cùng một dữ liệu theo cùng một thứ tự. Tuy nhiên, kết quả có thể khác khi dữ liệu được cung cấp theo thứ tự khác. Đầu tiên, mặc dù các mẫu lõi sẽ luôn được gán cho cùng một cụm, nhãn của các cụm đó sẽ phụ thuộc vào thứ tự mà các mẫu đó gặp phải trong dữ liệu. Thứ hai và quan trọng hơn, các cụm mà các mẫu không phải lõi được chỉ định có thể khác nhau tùy thuộc vào thứ tự dữ liệu. Điều này sẽ xảy ra khi một mẫu không phải lõi có khoảng cách thấp 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...
714 đến hai mẫu lõi ở các cụm khác nhau. Theo bất đẳng thức tam giác, hai mẫu lõi đó phải cách xa nhau 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...
714 hoặc chúng sẽ nằm trong cùng một cụm. Mẫu không phải lõi được chỉ định cho bất kỳ cụm nào được tạo trước khi truyền dữ liệu và do đó, kết quả sẽ phụ thuộc vào thứ tự dữ liệu

Việc triển khai hiện tại sử dụng cây bóng và cây kd để xác định vùng lân cận của các điểm, giúp tránh tính toán ma trận khoảng cách đầy đủ (như đã được thực hiện trong các phiên bản scikit-learning trước 0. 14). Khả năng sử dụng số liệu tùy chỉnh được giữ lại;

Tiêu thụ bộ nhớ cho kích thước mẫu lớn

Việc triển khai này theo mặc định không hiệu quả về bộ nhớ vì nó xây dựng một ma trận tương tự theo cặp đầy đủ trong trường hợp không thể sử dụng cây kd hoặc cây bóng (e. g. , với ma trận thưa thớt). Ma trận này sẽ sử dụng \(n^2\) float. Một vài cơ chế để giải quyết vấn đề này là.

  • Sử dụng phân cụm kết hợp với 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...
    
    726. Phân cụm OPTICS cũng tính toán toàn bộ ma trận theo cặp, nhưng mỗi lần chỉ giữ một hàng trong bộ nhớ (độ phức tạp của bộ nhớ 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...
    
    727. Nhìn thấy

  • Tập dữ liệu có thể được nén bằng cách loại bỏ các bản trùng lặp chính xác nếu những bản sao này xảy ra trong dữ liệu của bạn hoặc bằng cách sử dụng BIRCH. Sau đó, bạn chỉ có một số lượng tương đối nhỏ các đại diện cho một số lượng lớn các điểm. Sau đó, bạn có thể cung cấp mộ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...
    
    17 khi lắp 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 và X. Xu, Trong Kỷ yếu của Hội nghị Quốc tế lần thứ 2 về Khám phá Tri thức và Khai thác Dữ liệu, Portland, OR, AAAI Press, trang. 226–231. 1996

  • “DBSCAN xem lại, xem lại. tại sao và làm thế nào bạn nên (vẫn) sử dụng 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

Thuật toán chia sẻ nhiều điểm tương đồng với thuật toán và có thể được coi là sự tổng quát hóa của DBSCAN giúp nới lỏng yêu cầ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...
714 từ một giá trị thành một phạm vi giá trị. Sự khác biệt chính giữa DBSCAN và OPTICS là thuật toán OPTICS xây dựng một biểu đồ khả năng tiếp cận, chỉ định cho mỗi mẫu cả khoảng cách
>>> 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...
733 và một vị trí trong thuộc tính 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...
734; . 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...
735, 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...
714 đã 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...
737. Đặ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...
735 thành giá trị thấp hơn sẽ dẫn đến thời gian chạy ngắn hơn và có thể được coi là bán kính lân cận tối đa từ mỗi điểm để tìm các điểm có thể tiếp cận tiềm năng khác

Tổng bình phương sự khác biệt python

Khoảng cách khả năng tiếp cận do OPTICS tạo ra cho phép trích xuất mật độ thay đổi của các cụm trong một tập dữ liệu. Như được hiển thị trong biểu đồ trên, việc kết hợp khoảng cách khả năng 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...
734 tạo ra biểu đồ 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 sao cho các điểm lân cận liền kề nhau. 'Cắt' biểu đồ khả năng tiếp cận ở một giá trị duy nhất tạo ra kết quả giống như DBSCAN; . Trích xuất cụm mặc định với OPTICS xem xét độ dốc lớn trong biểu đồ để tìm cụm và người dùng có thể xác định độ dốc lớn bằng cách 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...
740. Ngoài ra còn có các khả năng khác để phân tích trên chính biểu đồ, chẳng hạn như tạo các biểu diễn dữ liệu theo thứ bậc thông qua các chương trình dendrogram vẽ sơ đồ khả năng tiếp cận và hệ thống phân cấp của các cụm được phát hiện bởi thuật toán có thể được truy cập thông qua 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...
741. Biểu đồ trên đã được mã hóa màu sao cho các màu của cụm trong không gian phẳng khớp với các cụm phân đoạn tuyến tính của biểu đồ khả năng tiếp cận. Lưu ý rằng các cụm màu xanh lam và đỏ nằm liền kề trong biểu đồ khả năng tiếp cận và có thể được biểu thị theo thứ bậc dưới dạng con của cụm mẹ lớn hơn

ví dụ

So sánh với 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...
737 và DBSCAN rất giống nhau, nhưng không phải lúc nào cũng giống nhau; . Điều này một phần là do các mẫu đầu tiên của từng khu vực dày đặc được OPTICS xử lý có giá trị khả năng tiếp cận lớn trong khi ở gần các điểm khác trong khu vực của chúng và do đó đôi khi sẽ được đánh dấu là nhiễu thay vì ngoại vi. Điều này ảnh hưởng đến các điểm liền kề khi chúng được coi là ứng cử viên để được đánh dấu là ngoại vi hoặc nhiễu

Lưu ý rằng đối với bất kỳ giá trị duy nhất 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...
714, DBSCAN sẽ có xu hướng có thời gian chạy ngắn hơn so với OPTICS; . Cũng cần lưu ý rằng đầu ra của OPTICS chỉ gần với DBSCAN 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...
714 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...
735 gần nhau

Độ phức tạp tính toán

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. Các số liệu khoảng cách khác nhau có thể được cung cấp thông qua từ khó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...
747

Đối với các bộ dữ liệu lớn, có thể thu được kết quả tương tự (nhưng không giống hệt nhau) qua HDBSCAN. Việc triển khai HDBSCAN là đa luồng và có độ phức tạp thời gian chạy thuật toán tốt hơn so với OPTICS, với chi phí mở rộng bộ nhớ kém hơn. Đối với các tập dữ liệu cực lớn làm cạn kiệt bộ nhớ hệ thống khi sử dụng HDBSCAN, OPTICS sẽ duy trì \(n\) (trái ngược với . ) 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...
735 parameter will likely need to be used to give a solution in a reasonable amount of wall time.

Người giới thiệu

  • “QUANG HỌC. sắp xếp các điểm để xác định cấu trúc phân cụm. ” Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel và Jörg Sander. Trong Bản ghi ACM Sigmod, tập. 28, không. 2, trang. 49-60. ĐHCĐ, 1999

2. 3. 9. BINH

Việc xây dựng một cây được gọi là Cây tính năng phân cụm (CFT) cho dữ liệu đã cho. Dữ liệu về cơ bản được nén không mất dữ liệu thành một tập hợp các nút Tính năng phân cụm (Nút CF). Các Nút CF có một số cụm con được gọi là Cụm con Tính năng Phân cụm (CF Subcluster) và các Cụm con CF này nằm trong Nút CF không đầu cuối có thể có Nút CF là con

Các cụm con CF giữ thông tin cần thiết để phân cụm, điều này ngăn cản nhu cầu giữ toàn bộ dữ liệu đầu vào trong bộ nhớ. Thông tin này bao gồm

  • Số lượng mẫu trong một nhóm con

  • Tổng tuyến tính - Một vectơ n chiều chứa tổng của tất cả các mẫu

  • Tổng bình phương - Tổng của định mức L2 bình phương của tất cả các mẫu

  • Centroids - Để tránh tính toán lại tổng tuyến tính/n_samples

  • Định mức bình phương của trọng tâm

Thuật toán BIRCH có hai tham số là ngưỡng và hệ số phân nhánh. Hệ số phân nhánh giới hạn số lượng cụm con trong một nút và ngưỡng giới hạn khoảng cách giữa mẫu đang vào và các cụm con hiện có

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ị ràng buộc bởi các điều kiện về ngưỡng và 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...
    
    752 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...
753, 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...
    
    754 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...
    
    756

  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...
    
    753 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...
    
    758 thực hiện phân cụm toàn cầu

Tổng bình phương sự khác biệt python

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 các 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ố xếp hạng

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...
759 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...
760, 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ị

>>> 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

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 đề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

>>> 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

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...
1

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...
3

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...
    
    760 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...
    
    759 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...
    
    767 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ụ

  • 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{TO} = \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

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...
759 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...
760, 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...
8

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...
6

Tất cả , , và là đố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...
70

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...
71

Đ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...
770, 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...
72

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...
73

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ụ

  • 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. 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_{in}}{a_i a_j}\right) \frac{a_ i. b_j. (N-a_i). (N-b_j). }{N. n_{ij}. (a_y_n_{in}). (b_n_{trong}). (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 lẫn nhau đượ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 số trung bình tổng quát của entropies 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”. 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...
776

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 trung bình của chúng. 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

  • Mục nhập Wikipedia cho Thông tin chung (chuẩn hóa)

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

[]

Vinh, Epps, và Bailey, (2009). “Các biện pháp lý thuyết thông tin để so sánh cụm”. Kỷ yếu của Hội nghị quốc tế thường niên lần thứ 26 về học máy - ICML ‘09. doi. 10. 1145/1553374. 1553511. ISBN 9781605585161

[]

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

[]

Yang, Algesheimer và Tessone, (2016). “Một phân tích so sánh các thuật toán phát hiện cộng đồng trên mạng nhân tạo”. Báo cáo khoa học 6. 30750. doi. 10. 1038/srep30750

2. 3. 10. 3. Tính đồng nhất, đầy đủ và thước đo chữ V

Với kiến ​​thức về các bài tập lớp sự thật cơ bản của các mẫu, có thể xác định một số số liệu trực quan bằng cách sử dụng phân tích entropy có điều kiện

Cụ thể, Rosenberg và Hirschberg (2007) xác định hai mục tiêu mong muốn sau đây cho bất kỳ nhiệm vụ cụm nào

  • sự đồng nhất. mỗi cụm chỉ chứa các thành viên của một lớp duy nhất

  • sự đầy đủ. tất cả các thành viên của một lớp nhất định được gán cho cùng một cụm

Chúng ta có thể biến những khái niệm đó thành điểm số và. Cả hai được giới hạn dưới bởi 0. 0 trở lên nhân 1. 0 (cao hơn là tốt 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...
74

Giá trị trung bình điều hòa của chúng được gọi là thước đo V được tính 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...
75

Công thức của hàm này như sau

\[v = \frac{(1 + \beta) \times \text{tính đồng nhất} \times \text{sự hoàn thiện}}{(\beta \times \text{sự đồng nhất} + \text{sự hoàn chỉ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...
780 mặc định có giá trị là 1. 0, nhưng để sử dụng giá trị nhỏ hơn 1 cho phiên bản 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...
76

nhiều trọng lượng hơn sẽ được quy cho tính đồng nhất và sử dụng giá trị lớn hơn 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...
77

trọng lượng hơn sẽ được quy cho sự hoàn chỉnh

Thước đo V thực sự tương đương với thông tin chung (NMI) đã thảo luận ở trên, với hàm tổng hợp là trung bình cộng

Tính đồng nhất, đầy đủ và thước đo V có thể được tính toán cùng một lúc bằng cách sử dụng như sau

>>> 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...
78

Bài tập phân cụm sau tốt hơn một chút, vì nó đồng nhất nhưng không đầy đủ

>>> 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...
79

Ghi chú

là đối xứng. nó có thể được sử dụng để đánh giá thỏa thuận của hai bài tập độc lập trên cùng một tập dữ liệu

Đây không phải là trường hợp cho và. cả hai đều bị ràng buộc bởi 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...
80

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

  • Điểm giới hạn. 0. 0 tệ nhất có thể, 1. 0 là điểm tuyệt đối

  • giải thích trực quan. phân cụm với thước đo V kém có thể được phân tích định tính về tính đồng nhất và đầy đủ để cảm nhận rõ hơn 'loại' lỗi nào được thực hiện bởi bài tập

  • Không có giả định nào được đưa ra trên cấu trúc cụm. có thể được sử dụng để so sánh các thuật toán phân cụm chẳng hạn như phương tiện k 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ó hình dạng "gấp lại"

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

  • Các số liệu được giới thiệu trước đây không được chuẩn hóa liên quan đến ghi nhãn ngẫu nhiên. điều này có nghĩa là tùy thuộc vào số lượng mẫu, cụm và lớp chân lý cơ sở, việc ghi nhãn hoàn toàn ngẫu nhiên sẽ không phải lúc nào cũng mang lại các giá trị giống nhau cho tính đồng nhất, tính đầy đủ và do đó là thước đo v. Cụ thể, việc ghi nhãn ngẫu nhiên sẽ không mang lại điểm 0, đặc biệt là khi số lượng cụm lớn

    Vấn đề này có thể được bỏ qua một cách an toàn khi số lượng mẫu lớn hơn một nghìn và số lượng cụm nhỏ hơn 10. Đối với cỡ mẫu nhỏ hơn hoặc số lượng cụm lớn hơn, sẽ an toàn hơn khi sử dụng chỉ số được điều chỉnh, chẳng hạn như Chỉ số Rand được điều chỉnh (ARI)

Tổng bình phương sự khác biệt python
  • Các chỉ số này 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)

ví dụ

  • 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. Công thức toán học

Điểm đồng nhất và đầy đủ được chính thức đưa ra bởi

\[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

[]

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 () 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...
786 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...
787 là số Tích cực Sai (i. e. số cặp điểm thuộc 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...
788 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

>>> 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...
81

>>> 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...
82

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...
83

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...
84

Xấu (e. g. ghi nhãn độc lập) không có đ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...
85

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ị)

  • Không có giả định nào được đưa ra trên cấu trúc cụm. có thể được sử dụng để so sánh các thuật toán phân cụm chẳng hạn như phương tiện k 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ó hình dạng "gấp lại"

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 () 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

>>> 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...
86

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

>>> 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...
87

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ụ

  • . 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 () - 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 số 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)

>>> 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...
86

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

>>> 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...
89

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 () 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 () 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 để 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 () 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