Có quan trọng để mở rộng dữ liệu trước khi phân cụm?


44

Tôi tìm thấy hướng dẫn này , nó gợi ý rằng bạn nên chạy chức năng chia tỷ lệ trên các tính năng trước khi phân cụm (tôi tin rằng nó chuyển đổi dữ liệu thành z-points).

Tôi đang tự hỏi liệu điều đó là cần thiết. Tôi đang hỏi chủ yếu là vì có một điểm khuỷu tay đẹp khi tôi không mở rộng dữ liệu, nhưng nó biến mất khi nó được thu nhỏ. :)

Câu trả lời:


59

Vấn đề là những gì đại diện cho một thước đo tốt về khoảng cách giữa các trường hợp.

Nếu bạn có hai tính năng, một trong đó sự khác biệt giữa các trường hợp lớn và nhỏ khác, bạn đã sẵn sàng để có người trước đây gần như là người điều khiển khoảng cách chưa?

Vì vậy, ví dụ nếu bạn tập hợp những người có trọng lượng tính bằng kilogam và chiều cao tính bằng mét, thì chênh lệch 1kg có ý nghĩa như chênh lệch 1m về chiều cao? Có vấn đề gì khi bạn có được các cụm khác nhau về trọng lượng tính bằng kilogam và chiều cao tính bằng centimet không? Nếu câu trả lời của bạn lần lượt là "không" và "có" thì có lẽ bạn nên chia tỷ lệ.

Mặt khác, nếu bạn đang phân nhóm thành phố ở Canada dựa trên khoảng cách đông / tây và khoảng cách phía bắc / nam sau đó, mặc dù có thường sẽ có sự khác biệt lớn hơn nhiều đông / tây, bạn có thể được hạnh phúc chỉ để sử dụng khoảng cách chưa định tỷ lệ trong cả hai km hoặc dặm (mặc dù bạn có thể muốn điều chỉnh độ kinh độ và vĩ độ cho độ cong của trái đất).


33

Các câu trả lời khác là đúng, nhưng nó có thể giúp nắm bắt trực quan vấn đề bằng cách xem một ví dụ. Dưới đây, tôi tạo một tập dữ liệu có hai cụm rõ ràng, nhưng kích thước không phân cụm lớn hơn nhiều so với kích thước cụm (lưu ý các tỷ lệ khác nhau trên các trục). Phân cụm trên dữ liệu không chuẩn hóa thất bại. Phân cụm trên dữ liệu chuẩn hóa hoạt động rất tốt.

Điều tương tự sẽ áp dụng với dữ liệu được nhóm trong cả hai chiều, nhưng chuẩn hóa sẽ giúp ít hơn. Trong trường hợp đó, có thể giúp thực hiện PCA, sau đó bình thường hóa, nhưng điều đó chỉ có ích nếu các cụm được phân tách tuyến tính và không trùng lặp về kích thước PCA. (Ví dụ này chỉ hoạt động rõ ràng vì số lượng cụm thấp)

dữ liệu phân cụm tổng hợp, với phân cụm k-nghĩa trên cả phiên bản chuẩn hóa và không chuẩn hóa

import numpy as np
import seaborn
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

rnorm = np.random.randn

x = rnorm(1000) * 10  
y = np.concatenate([rnorm(500), rnorm(500) + 5])

fig, axes = plt.subplots(3, 1)

axes[0].scatter(x, y)
axes[0].set_title('Data (note different axes scales)')

km = KMeans(2)

clusters = km.fit_predict(np.array([x, y]).T)

axes[1].scatter(x, y, c=clusters, cmap='bwr')
axes[1].set_title('non-normalised K-means')

clusters = km.fit_predict(np.array([x / 10, y]).T)

axes[2].scatter(x, y, c=clusters, cmap='bwr')
axes[2].set_title('Normalised K-means')

17

phụ thuộc vào dữ liệu của bạn .

Nếu bạn có thuộc tính với một ý nghĩa được xác định rõ. Nói, vĩ độ và kinh độ, sau đó bạn không nên mở rộng quy mô dữ liệu của mình, vì điều này sẽ gây ra sự biến dạng. (K-nghĩa cũng có thể là một lựa chọn tồi - bạn cần thứ gì đó có thể xử lý lat / lon một cách tự nhiên)

Nếu bạn có dữ liệu số hỗn hợp, trong đó mỗi thuộc tính là một thứ hoàn toàn khác nhau (giả sử, cỡ giày và trọng lượng), có các đơn vị khác nhau được đính kèm (lb, tấn, m, kg ...) thì dù sao các giá trị này không thực sự có thể so sánh được; tiêu chuẩn hóa z là cách thực hành tốt nhất để mang lại trọng lượng tương đương cho chúng.

Nếu bạn có giá trị nhị phân, thuộc tính riêng biệt hoặc thuộc tính phân loại, hãy tránh xa phương tiện k. K- mean cần tính toán phương tiện và giá trị trung bình không có ý nghĩa đối với loại dữ liệu này.


5

Như đã giải thích trong bài báo này , k-mean có thể giảm thiểu hàm lỗi bằng thuật toán Newton, tức là thuật toán tối ưu hóa dựa trên độ dốc. Bình thường hóa dữ liệu cải thiện sự hội tụ của các thuật toán như vậy. Xem ở đây để biết một số chi tiết về nó.

Ý tưởng là nếu các thành phần khác nhau của dữ liệu (tính năng) có tỷ lệ khác nhau, thì các công cụ phái sinh có xu hướng sắp xếp theo các hướng có phương sai cao hơn, dẫn đến sự hội tụ kém hơn / chậm hơn.


4

Tiêu chuẩn hóa là một bước quan trọng của tiền xử lý dữ liệu.

nó kiểm soát sự biến đổi của tập dữ liệu, nó chuyển đổi dữ liệu thành phạm vi cụ thể bằng cách sử dụng một phép biến đổi tuyến tính tạo ra các cụm chất lượng tốt và cải thiện độ chính xác của các thuật toán phân cụm, kiểm tra liên kết dưới đây để xem hiệu ứng của nó trên phân tích k-mean.

https://pdfs.semanticscholar.org/1d35/2dd5f030589ecfe8910ab1cc0dd320bf600d.pdf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.