Tôi sẽ giới thiệu một số phương pháp này cho bạn trong bài viết này, hy vọng bạn có thể hiểu được một số cách lấy mẫu sau khi đọc bài viết này
Tại sao lấy mẫu?
Chúng tôi sử dụng phương pháp lấy mẫu để tiết kiệm thời gian và để có cái nhìn gần hơn về dân số
Nếu chúng ta chỉ nghiên cứu về dân số thì sẽ mất nhiều thời gian hơn, ví dụ như nghiên cứu về toàn bộ cư dân ở bang thống nhất…
Thuật toán phân cụm với Python
Ảnh của Lars Plougmann, bảo lưu một số quyền
Hướng dẫn tổng quan
Hướng dẫn này được chia thành ba phần;
- phân cụm
- Thuật toán phân cụm
- Ví dụ về thuật toán phân cụm
- Cài đặt thư viện
- Bộ dữ liệu phân cụm
- Tuyên truyền mối quan hệ
- Phân cụm kết tụ
- BẠCH DƯƠNG
- DBSCAN
- K-Means
- K-Means hàng loạt nhỏ
- trung bình thay đổi
- QUANG HỌC
- Phân cụm quang phổ
- Mô hình hỗn hợp Gaussian
phân cụm
Phân tích cụm hoặc phân cụm là một nhiệm vụ học máy không giám sát
Nó liên quan đến việc tự động khám phá nhóm tự nhiên trong dữ liệu. Không giống như học có giám sát (như mô hình dự đoán), các thuật toán phân cụm chỉ diễn giải dữ liệu đầu vào và tìm các nhóm hoặc cụm tự nhiên trong không gian đặc trưng
Các kỹ thuật phân cụm áp dụng khi không có lớp nào được dự đoán mà đúng hơn là khi các thể hiện được chia thành các nhóm tự nhiên
— Trang 141, Khai thác dữ liệu. Công cụ và kỹ thuật học máy thực tế, 2016
Một cụm thường là một vùng có mật độ trong không gian đặc trưng nơi các ví dụ từ miền (các quan sát hoặc hàng dữ liệu) gần cụm hơn các cụm khác. Cụm có thể có một trung tâm (tâm) là một mẫu hoặc một không gian đặc trưng điểm và có thể có một ranh giới hoặc phạm vi
Các cụm này có lẽ phản ánh một số cơ chế đang hoạt động trong miền mà từ đó các cá thể được rút ra, một cơ chế khiến một số cá thể có sự tương đồng mạnh mẽ hơn với nhau so với các cá thể còn lại
— Trang 141-142, Khai thác dữ liệu. Công cụ và kỹ thuật học máy thực tế, 2016
Phân cụm có thể hữu ích như một hoạt động phân tích dữ liệu để tìm hiểu thêm về miền vấn đề, được gọi là khám phá mẫu hoặc khám phá tri thức
Ví dụ
- Cây phát sinh loài có thể được coi là kết quả của phân tích phân cụm thủ công
- Việc tách dữ liệu bình thường khỏi các ngoại lệ hoặc bất thường có thể được coi là một vấn đề phân cụm
- Tách các cụm dựa trên hành vi tự nhiên của chúng là một vấn đề về phân cụm, được gọi là phân khúc thị trường
Phân cụm cũng có thể hữu ích như một loại kỹ thuật tính năng, trong đó các ví dụ mới và hiện có có thể được ánh xạ và gắn nhãn là thuộc về một trong các cụm được xác định trong dữ liệu
Việc đánh giá các cụm được xác định là chủ quan và có thể yêu cầu một chuyên gia miền, mặc dù có nhiều biện pháp định lượng dành riêng cho cụm. Thông thường, các thuật toán phân cụm được so sánh về mặt học thuật trên các bộ dữ liệu tổng hợp với các cụm được xác định trước mà một thuật toán sẽ khám phá ra
Phân cụm là một kỹ thuật học tập không giám sát, vì vậy rất khó để đánh giá chất lượng đầu ra của bất kỳ phương pháp nào
— Trang 534, Máy học. Một góc nhìn xác suất, 2012
Thuật toán phân cụm
Có nhiều loại thuật toán phân cụm
Nhiều thuật toán sử dụng các phép đo độ tương tự hoặc khoảng cách giữa các ví dụ trong không gian đặc trưng với nỗ lực khám phá các vùng quan sát dày đặc. Do đó, thông thường nên chia tỷ lệ dữ liệu trước khi sử dụng thuật toán phân cụm
Trọng tâm của tất cả các mục tiêu của phân tích cụm là khái niệm về mức độ giống nhau (hoặc không giống nhau) giữa các đối tượng riêng lẻ được phân cụm. Phương pháp phân cụm cố gắng nhóm các đối tượng dựa trên định nghĩa về độ tương tự được cung cấp cho nó
— Trang 502, Các yếu tố của học tập thống kê. Khai thác dữ liệu, suy luận và dự đoán, 2016
Một số thuật toán phân cụm yêu cầu bạn chỉ định hoặc đoán số lượng cụm cần khám phá trong dữ liệu, trong khi các thuật toán khác yêu cầu xác định khoảng cách tối thiểu giữa các quan sát trong đó các ví dụ có thể được coi là "gần" hoặc "được kết nối". ”
Như vậy, phân tích cụm là một quá trình lặp đi lặp lại trong đó đánh giá chủ quan của các cụm đã xác định được đưa trở lại các thay đổi đối với cấu hình thuật toán cho đến khi đạt được kết quả mong muốn hoặc phù hợp
Thư viện scikit-learning cung cấp một bộ thuật toán phân cụm khác nhau để lựa chọn
Dưới đây là danh sách 10 thuật toán phổ biến hơn
- Tuyên truyền mối quan hệ
- Phân cụm kết tụ
- BẠCH DƯƠNG
- DBSCAN
- K-Means
- K-Means hàng loạt nhỏ
- trung bình thay đổi
- QUANG HỌC
- Phân cụm quang phổ
- Hỗn hợp của Gaussian
Mỗi thuật toán đưa ra một cách tiếp cận khác nhau đối với thách thức khám phá các nhóm tự nhiên trong dữ liệu
Không có thuật toán phân cụm tốt nhất và không có cách nào dễ dàng để tìm ra thuật toán tốt nhất cho dữ liệu của bạn mà không sử dụng các thử nghiệm được kiểm soát
Trong hướng dẫn này, chúng tôi sẽ xem xét cách sử dụng từng thuật toán trong số 10 thuật toán phân cụm phổ biến này từ thư viện scikit-learning
Các ví dụ sẽ cung cấp cơ sở để bạn sao chép-dán các ví dụ và kiểm tra các phương pháp trên dữ liệu của riêng bạn
Chúng tôi sẽ không đi sâu vào lý thuyết đằng sau cách thức hoạt động của các thuật toán hoặc so sánh chúng một cách trực tiếp. Đối với một điểm khởi đầu tốt về chủ đề này, xem
- API phân cụm, scikit-learning
Hãy đi sâu vào
Ví dụ về thuật toán phân cụm
Trong phần này, chúng tôi sẽ xem xét cách sử dụng 10 thuật toán phân cụm phổ biến trong scikit-learning
Điều này bao gồm một ví dụ về điều chỉnh mô hình và một ví dụ về trực quan hóa kết quả
Các ví dụ được thiết kế để bạn sao chép-dán vào dự án của riêng bạn và áp dụng các phương pháp cho dữ liệu của riêng bạn
Cài đặt thư viện
Đầu tiên, hãy cài đặt thư viện
Đừng bỏ qua bước này vì bạn sẽ cần đảm bảo rằng mình đã cài đặt phiên bản mới nhất
Bạn có thể cài đặt thư viện scikit-learn bằng trình cài đặt pip Python, như sau
1
Sudo pip cài đặt scikit-learning
Để biết hướng dẫn cài đặt bổ sung dành riêng cho nền tảng của bạn, hãy xem
- Cài đặt scikit-learning
Tiếp theo, hãy xác nhận rằng thư viện đã được cài đặt và bạn đang sử dụng phiên bản hiện đại
Chạy tập lệnh sau để in số phiên bản thư viện
1
2
3
# kiểm tra phiên bản scikit-learning
nhập sklearn
in(sklearn. __version__)
Chạy ví dụ này, bạn sẽ thấy số phiên bản sau hoặc cao hơn
1
0. 22. 1
Bộ dữ liệu phân cụm
Chúng tôi sẽ sử dụng hàm make_classification() để tạo tập dữ liệu phân loại nhị phân thử nghiệm
Bộ dữ liệu sẽ có 1.000 ví dụ, với hai tính năng đầu vào và một cụm cho mỗi lớp. Các cụm hiển thị rõ ràng theo hai chiều để chúng ta có thể vẽ biểu đồ dữ liệu bằng biểu đồ phân tán và tô màu các điểm trong biểu đồ theo cụm được chỉ định. Điều này sẽ giúp xem, ít nhất là trong vấn đề thử nghiệm, các cụm được xác định “tốt” như thế nào
Các cụm trong vấn đề thử nghiệm này dựa trên Gaussian đa biến và không phải tất cả các thuật toán phân cụm đều hiệu quả trong việc xác định các loại cụm này. Do đó, các kết quả trong hướng dẫn này không nên được sử dụng làm cơ sở để so sánh các phương pháp nói chung.
Một ví dụ về việc tạo và tóm tắt bộ dữ liệu phân cụm tổng hợp được liệt kê bên dưới
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# bộ dữ liệu phân loại tổng hợp
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, y = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# tạo biểu đồ phân tán cho các mẫu từ mỗi lớp
cho class_value trong phạm vi(2):
# lấy chỉ mục hàng cho các mẫu với lớp này
row_ix = ở đâu(y == class_value)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ này sẽ tạo tập dữ liệu phân cụm tổng hợp, sau đó tạo biểu đồ phân tán của dữ liệu đầu vào với các điểm được tô màu theo nhãn lớp (cụm lý tưởng hóa)
Chúng ta có thể thấy rõ ràng hai nhóm dữ liệu riêng biệt ở hai chiều và hy vọng rằng thuật toán phân cụm tự động có thể phát hiện các nhóm này
Biểu đồ phân tán của tập dữ liệu phân cụm tổng hợp với các điểm được tô màu theo cụm đã biết
Tiếp theo, chúng ta có thể bắt đầu xem xét các ví dụ về thuật toán phân cụm được áp dụng cho tập dữ liệu này
Tôi đã thực hiện một số nỗ lực tối thiểu để điều chỉnh từng phương pháp cho tập dữ liệu
Bạn có thể nhận được kết quả tốt hơn cho một trong các thuật toán không?
Hãy cho tôi biết trong các ý kiến dưới đây
Tuyên truyền mối quan hệ
Tuyên truyền mối quan hệ liên quan đến việc tìm kiếm một tập hợp các mẫu tóm tắt dữ liệu tốt nhất
Chúng tôi đã nghĩ ra một phương pháp gọi là “lan truyền ái lực”, phương pháp này lấy đầu vào là thước đo độ tương tự giữa các cặp điểm dữ liệu. Các thông điệp có giá trị thực được trao đổi giữa các điểm dữ liệu cho đến khi một tập mẫu chất lượng cao và các cụm tương ứng dần xuất hiện
— Phân cụm bằng cách truyền tin nhắn giữa các điểm dữ liệu, 2007
Kỹ thuật này được mô tả trong bài báo
- Phân cụm bằng cách truyền tin nhắn giữa các điểm dữ liệu, 2007
Nó được triển khai thông qua lớp AffinityPropagation và cấu hình chính để điều chỉnh là “giảm xóc” được đặt giữa 0. 5 và 1, và có lẽ “sở thích. ”
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# phân cụm lan truyền ái lực
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập Tuyên truyền mối quan hệ
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
mô hình = Tuyên truyền mối quan hệ(giảm xóc=0.9)
#phù hợp với mô hình
mô hình. phù hợp(X)
# gán một cụm cho mỗi ví dụ
yhat = mô hình. dự đoán(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, tôi không thể đạt được kết quả tốt
Biểu đồ phân tán của tập dữ liệu với các cụm được xác định bằng cách sử dụng tuyên truyền mối quan hệ
Phân cụm kết tụ
Phân cụm kết tụ liên quan đến việc hợp nhất các ví dụ cho đến khi đạt được số lượng cụm mong muốn
Nó là một phần của lớp phương pháp phân cụm theo thứ bậc rộng hơn và bạn có thể tìm hiểu thêm tại đây
- Phân cụm theo thứ bậc, Wikipedia
Nó được triển khai thông qua lớp AgglomerativeClustering và cấu hình chính cần điều chỉnh là tập hợp “n_cluster”, ước tính số lượng cụm trong dữ liệu, e. g. 2
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# cụm kết tụ
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập Clustering kết tụ
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
model = AgglomerativeClustering(n_clusters=2)
# khớp mô hình và dự đoán cụm
yhat = mô hình. fit_predict(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, một nhóm hợp lý được tìm thấy
Biểu đồ phân tán của tập dữ liệu với các cụm được xác định bằng cách sử dụng phân cụm kết tụ
BẠCH DƯƠNG
Phân cụm BIRCH (BIRCH là viết tắt của Giảm lặp lại cân bằng và phân cụm bằng cách sử dụng
Hierarchies) liên quan đến việc xây dựng một cấu trúc cây mà từ đó các trọng tâm của cụm được trích xuất
BIRCH phân cụm động và tăng dần các điểm dữ liệu chỉ số đa chiều đến để cố gắng tạo ra phân cụm chất lượng tốt nhất với các tài nguyên có sẵn (i. e. , bộ nhớ khả dụng và các ràng buộc về thời gian)
— BẠCH DƯƠNG. Một phương pháp phân cụm dữ liệu hiệu quả cho cơ sở dữ liệu lớn, 1996
Kỹ thuật này được mô tả trong bài báo
- BẠCH DƯƠNG. Một phương pháp phân cụm dữ liệu hiệu quả cho cơ sở dữ liệu lớn, 1996
Nó được triển khai thông qua lớp Birch và cấu hình chính để điều chỉnh là siêu tham số “ngưỡng” và “n_cluster”, cấu hình thứ hai cung cấp ước tính số lượng cụm
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# cụm bạch dương
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập Birch
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
mô hình = Birch(ngưỡng=0.01, n_cluster=2)
#phù hợp với mô hình
mô hình. phù hợp(X)
# gán một cụm cho mỗi ví dụ
yhat = mô hình. dự đoán(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, một nhóm tuyệt vời được tìm thấy
Sơ đồ phân tán của tập dữ liệu với các cụm được xác định bằng phân cụm BIRCH
DBSCAN
Phân cụm DBSCAN (trong đó DBSCAN là viết tắt của Phân cụm ứng dụng có tiếng ồn dựa trên không gian dựa trên mật độ) liên quan đến việc tìm các khu vực có mật độ cao trong miền và mở rộng các khu vực đó của không gian đặc trưng xung quanh chúng dưới dạng các cụm
… chúng tôi trình bày thuật toán phân cụm mới DBSCAN dựa trên khái niệm cụm dựa trên mật độ được thiết kế để khám phá các cụm có hình dạng tùy ý. DBSCAN chỉ yêu cầu một tham số đầu vào và hỗ trợ người dùng xác định giá trị phù hợp cho tham số đó
— 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ó nhiễu, 1996
Kỹ thuật này được mô tả trong bài báo
- 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ó nhiễu, 1996
Nó được triển khai thông qua lớp DBSCAN và cấu hình chính để điều chỉnh là siêu tham số “eps” và “min_samples”
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# phân cụm dbscan
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập DBSCAN
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
model = DBSCAN(eps=0.30, min_samples=9)
# khớp mô hình và dự đoán cụm
yhat = mô hình. fit_predict(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, một nhóm hợp lý được tìm thấy, mặc dù cần điều chỉnh nhiều hơn
Biểu đồ phân tán của tập dữ liệu với các cụm được xác định bằng phân cụm DBSCAN
K-Means
K-Means Clustering có thể là thuật toán phân cụm được biết đến rộng rãi nhất và liên quan đến việc gán các ví dụ cho các cụm nhằm nỗ lực giảm thiểu phương sai trong mỗi cụm
Mục đích chính của bài viết này là mô tả một quá trình phân vùng một dân số N chiều thành k tập hợp trên cơ sở một mẫu. Quá trình, được gọi là 'k-mean', dường như cung cấp các phân vùng có hiệu quả hợp lý theo nghĩa phương sai trong lớp
— Một số phương pháp phân loại và phân tích các quan sát đa biến, 1967
Kỹ thuật này được mô tả ở đây
- k-nghĩa là phân cụm, Wikipedia
Nó được triển khai thông qua lớp KMeans và cấu hình chính để điều chỉnh là siêu tham số “n_cluster” được đặt thành số cụm ước tính trong dữ liệu
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# k-nghĩa là phân cụm
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập KMeans
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
model = KMeans(n_clusters=2)
#phù hợp với mô hình
mô hình. phù hợp(X)
# gán một cụm cho mỗi ví dụ
yhat = mô hình. dự đoán(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, một nhóm hợp lý được tìm thấy, mặc dù phương sai bằng nhau không bằng nhau ở mỗi chiều làm cho phương pháp ít phù hợp hơn với tập dữ liệu này
Sơ đồ phân tán của tập dữ liệu với các cụm được xác định bằng phân cụm K-Means
K-Means hàng loạt nhỏ
Mini-Batch K-Means là một phiên bản sửa đổi của k-means giúp cập nhật các trọng tâm của cụm bằng cách sử dụng các lô mẫu nhỏ thay vì toàn bộ tập dữ liệu, điều này có thể giúp các tập dữ liệu lớn nhanh hơn và có lẽ mạnh mẽ hơn đối với nhiễu thống kê
… chúng tôi đề xuất sử dụng tối ưu hóa lô nhỏ cho phân cụm k-mean. Điều này làm giảm chi phí tính toán theo các bậc độ lớn so với thuật toán hàng loạt cổ điển trong khi mang lại các giải pháp tốt hơn đáng kể so với giải pháp giảm dần độ dốc ngẫu nhiên trực tuyến
- Phân cụm K-Means quy mô web, 2010
Kỹ thuật này được mô tả trong bài báo
- Phân cụm K-Means quy mô web, 2010
Nó được triển khai thông qua lớp MiniBatchKMeans và cấu hình chính để điều chỉnh là siêu tham số “n_cluster” được đặt thành số cụm ước tính trong dữ liệu
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# mini-batch k-mean phân cụm
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập MiniBatchKMeans
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
model = MiniBatchKMeans(n_cluster=2)
#phù hợp với mô hình
mô hình. phù hợp(X)
# gán một cụm cho mỗi ví dụ
yhat = mô hình. dự đoán(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, một kết quả tương đương với thuật toán k-means tiêu chuẩn được tìm thấy
Biểu đồ phân tán tập dữ liệu với các cụm được xác định bằng cách sử dụng phân cụm K-Means hàng loạt nhỏ
trung bình thay đổi
Phân cụm dịch chuyển trung bình liên quan đến việc tìm và điều chỉnh trọng tâm dựa trên mật độ của các ví dụ trong không gian đặc trưng
Đối với dữ liệu rời rạc, chúng tôi chứng minh sự hội tụ của quy trình dịch chuyển trung bình đệ quy đến điểm dừng gần nhất của hàm mật độ cơ bản và do đó tiện ích của nó trong việc phát hiện các chế độ của mật độ
- Dịch chuyển trung bình. Một cách tiếp cận mạnh mẽ đối với phân tích không gian tính năng, 2002
Kỹ thuật này được mô tả trong bài báo
- trung bình thay đổi. Một cách tiếp cận mạnh mẽ đối với phân tích không gian tính năng, 2002
Nó được triển khai thông qua lớp MeanShift và cấu hình chính để điều chỉnh là siêu tham số “băng thông”
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# phân cụm dịch chuyển trung bình
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập MeanShift
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
mô hình = Dịch chuyển trung bình()
# khớp mô hình và dự đoán cụm
yhat = mô hình. fit_predict(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, một tập hợp các cụm hợp lý được tìm thấy trong dữ liệu
Biểu đồ phân tán của tập dữ liệu với các cụm được xác định bằng cách sử dụng phân cụm thay đổi trung bình
QUANG HỌC
Phân cụm OPTICS (trong đó OPTICS là viết tắt của Đặt hàng các điểm để xác định cấu trúc phân cụm) là một phiên bản sửa đổi của DBSCAN được mô tả ở trên
Chúng tôi giới thiệu một thuật toán mới cho mục đích phân tích cụm mà không tạo ra một cụm dữ liệu một cách rõ ràng; . Thứ tự cụm này chứa thông tin tương đương với các cụm dựa trên mật độ tương ứng với một loạt các cài đặt tham số
— QUANG HỌC. sắp xếp các điểm để xác định cấu trúc phân cụm, 1999
Kỹ thuật này được mô tả trong bài báo
- QUANG HỌC. sắp xếp các điểm để xác định cấu trúc phân cụm, 1999
Nó được triển khai thông qua lớp OPTICS và cấu hình chính để điều chỉnh là siêu tham số “eps” và “min_samples”
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# phân cụm quang học
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập QUANG HỌC
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
model = OPTICS(eps=0.8, min_samples=10)
# khớp mô hình và dự đoán cụm
yhat = mô hình. fit_predict(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, tôi không thể đạt được kết quả hợp lý trên bộ dữ liệu này
Sơ đồ phân tán của tập dữ liệu với các cụm được xác định bằng phân cụm OPTICS
Phân cụm quang phổ
Phân cụm quang phổ là một lớp chung của các phương pháp phân cụm, được rút ra từ đại số tuyến tính
Một giải pháp thay thế đầy hứa hẹn gần đây đã xuất hiện trong một số lĩnh vực là sử dụng các phương pháp quang phổ để phân cụm. Ở đây, người ta sử dụng các vectơ riêng hàng đầu của ma trận xuất phát từ khoảng cách giữa các điểm
— Trên phân cụm quang phổ. Phân tích và thuật toán, 2002
Kỹ thuật này được mô tả trong bài báo
- Trên phân cụm quang phổ. Phân tích và thuật toán, 2002
Nó được triển khai thông qua lớp SpectralClustering và Spectral Clustering chính là một lớp chung của các phương pháp phân cụm, được rút ra từ đại số tuyến tính. để điều chỉnh là siêu tham số “n_clusters” được sử dụng để chỉ định số cụm ước tính trong dữ liệu
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# phân cụm quang phổ
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. cụm nhập Phân cụm quang phổ
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
mô hình = Phân cụm quang phổ(n_cluster=2)
# khớp mô hình và dự đoán cụm
yhat = mô hình. fit_predict(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, các cụm hợp lý đã được tìm thấy
Biểu đồ phân tán của tập dữ liệu với các cụm được xác định bằng cách sử dụng cụm phân cụm Spectra
Mô hình hỗn hợp Gaussian
Mô hình hỗn hợp Gaussian tóm tắt hàm mật độ xác suất đa biến với hỗn hợp các phân bố xác suất Gaussian như tên gọi của nó
Để biết thêm về mô hình, xem
- Mô hình hỗn hợp, Wikipedia
Nó được triển khai thông qua lớp GaussianMixture và cấu hình chính để điều chỉnh là siêu tham số “n_cluster” được sử dụng để chỉ định số cụm ước tính trong dữ liệu
Ví dụ đầy đủ được liệt kê dưới đây
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# phân cụm hỗn hợp gaussian
từ numpy nhập duy nhất
từ numpy nhập ở đâu
từ sklearn. bộ dữ liệu nhập make_classification
từ sklearn. hỗn hợp nhập Hỗn hợp Gaussian
từ matplotlib nhập pyplot
# xác định tập dữ liệu
X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# xác định mô hình
model = GaussianMixture(n_components=2)
#phù hợp với mô hình
mô hình. phù hợp(X)
# gán một cụm cho mỗi ví dụ
yhat = mô hình. dự đoán(X)
# truy xuất các cụm duy nhất
cụm = duy nhất(yhat)
# tạo biểu đồ phân tán cho các mẫu từ mỗi cụm
cho cụm trong cụm.
# lấy chỉ mục hàng cho các mẫu có cụm này
row_ix = ở đâu(yhat == cluster)
# tạo phân tán của các mẫu này
pyplot. phân tán(X[row_ix, 0], X[row_ix, 1])
# hiển thị cốt truyện
pyplot. hiển thị()
Chạy ví dụ phù hợp với mô hình trên tập dữ liệu huấn luyện và dự đoán một cụm cho từng ví dụ trong tập dữ liệu. Sau đó, một biểu đồ phân tán được tạo với các điểm được tô màu bởi cụm được chỉ định của chúng
Trong trường hợp này, chúng ta có thể thấy rằng các cụm được xác định hoàn hảo. Điều này không có gì đáng ngạc nhiên khi tập dữ liệu được tạo dưới dạng hỗn hợp của Gaussian