Có cần phải chuẩn hóa dữ liệu của bạn trước khi phân cụm?


23

Có cần thiết phải chuẩn hóa dữ liệu của bạn trước khi cụm? Trong ví dụ từ scikit learnvề DBSCAN, ở đây họ thực hiện điều này trong dòng:

X = StandardScaler().fit_transform(X)

Nhưng tôi không hiểu tại sao nó lại cần thiết. Xét cho cùng, phân cụm không đảm nhận bất kỳ phân phối dữ liệu cụ thể nào - đó là một phương pháp học tập không giám sát nên mục tiêu của nó là khám phá dữ liệu.

Tại sao cần phải chuyển đổi dữ liệu?


Cảm ơn bạn đã trả lời chi tiết! Theo dõi tất cả các câu trả lời của bạn: Tôi hiểu rằng nếu các tính năng ở các thang đo khác nhau, điều này có thể gây ra sự cố. Tuy nhiên, nếu số liệu khoảng cách được chuẩn hóa theo phương sai, điều này có đạt được kết quả tương tự như tỷ lệ chuẩn trước khi phân cụm không? tức là tôi thường sử dụng khoảng cách euclide bình thường hóa liên quan - điều này cũng làm giảm hiệu ứng mở rộng?
Candic3

Câu trả lời:


19

Bình thường hóa không phải luôn luôn được yêu cầu, nhưng nó hiếm khi đau.

Vài ví dụ:

K-nghĩa là :

K-có nghĩa là phân cụm là "đẳng hướng" theo mọi hướng của không gian và do đó có xu hướng tạo ra các cụm tròn nhiều hơn hoặc ít hơn (chứ không phải kéo dài). Trong tình huống này, việc để các phương sai không bằng nhau tương đương với việc đặt nhiều trọng số hơn vào các biến có phương sai nhỏ hơn.

Ví dụ trong Matlab:

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

% Introduce denormalization
% X(:, 2) = X(:, 2) * 1000 + 500;

opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')
title('K-means with normalization')

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

(FYI: Làm cách nào tôi có thể phát hiện nếu tập dữ liệu của tôi được phân cụm hoặc không tách rời (nghĩa là tạo thành một cụm duy nhất )

Phân cụm :

Phân tích so sánh cho thấy các kết quả phân cụm phân tán phụ thuộc vào loại thủ tục chuẩn hóa.

Mạng nơ ron nhân tạo (đầu vào) :

Nếu các biến đầu vào được kết hợp tuyến tính, như trong MLP, thì hiếm khi cần thiết phải chuẩn hóa các đầu vào, ít nhất là trên lý thuyết. Lý do là bất kỳ sự thay đổi kích thước nào của một vectơ đầu vào đều có thể được phục hồi một cách hiệu quả bằng cách thay đổi các trọng số và độ lệch tương ứng, để lại cho bạn các đầu ra chính xác như bạn đã có trước đó. Tuy nhiên, có nhiều lý do thực tế tại sao tiêu chuẩn hóa đầu vào có thể giúp đào tạo nhanh hơn và giảm khả năng bị mắc kẹt trong tối ưu cục bộ. Ngoài ra, phân rã trọng lượng và ước tính Bayes có thể được thực hiện thuận tiện hơn với các đầu vào được tiêu chuẩn hóa.

Mạng nơ ron nhân tạo (đầu vào / đầu ra)

Bạn có nên làm bất cứ điều gì trong những điều này với dữ liệu của bạn? Câu trả lơi con phụ thuộc vao nhiêu thư.

Chuẩn hóa các biến đầu vào hoặc biến đích có xu hướng làm cho quá trình đào tạo được xử lý tốt hơn bằng cách cải thiện điều kiện số (xem ftp://ftp.sas.com/pub/neural/illcond/illcond.html ) của vấn đề tối ưu hóa và đảm bảo rằng mặc định khác nhau các giá trị liên quan đến khởi tạo và kết thúc là phù hợp. Tiêu chuẩn hóa các mục tiêu cũng có thể ảnh hưởng đến chức năng mục tiêu.

Tiêu chuẩn hóa các trường hợp nên được tiếp cận thận trọng vì nó loại bỏ thông tin. Nếu thông tin đó không liên quan, thì các trường hợp tiêu chuẩn hóa có thể khá hữu ích. Nếu thông tin đó là quan trọng, thì trường hợp tiêu chuẩn hóa có thể là thảm họa.


Thật thú vị, việc thay đổi các đơn vị đo lường thậm chí có thể khiến người ta thấy một cấu trúc phân cụm rất khác nhau: Kaufman, Leonard và Peter J. Rousseeuw .. "Tìm các nhóm trong dữ liệu: Giới thiệu về phân tích cụm." (2005).

Trong một số ứng dụng, việc thay đổi các đơn vị đo thậm chí có thể khiến người ta thấy cấu trúc phân cụm rất khác nhau. Ví dụ: tuổi (tính bằng năm) và chiều cao (tính bằng centimet) của bốn người tưởng tượng được đưa ra trong Bảng 3 và được vẽ trong Hình 3. Có vẻ như {A, B) và {C, 0) là hai cụm được phân tách rõ ràng . Mặt khác, khi chiều cao được biểu thị bằng feet, người ta sẽ nhận được Bảng 4 và Hình 4, trong đó các cụm rõ ràng hiện là {A, C} và {B, D}. Phân vùng này hoàn toàn khác với phân vùng đầu tiên vì mỗi đối tượng đã nhận được một người bạn đồng hành khác. (Hình 4 sẽ được làm phẳng thậm chí nhiều hơn nếu tuổi được đo bằng ngày.)

Để tránh sự phụ thuộc này vào sự lựa chọn của các đơn vị đo lường, người ta có tùy chọn chuẩn hóa dữ liệu. Điều này chuyển đổi các phép đo ban đầu thành các biến đơn vị.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Kaufman et al. tiếp tục với một số cân nhắc thú vị (trang 11):

Từ quan điểm triết học, tiêu chuẩn hóa không thực sự giải quyết vấn đề. Thật vậy, sự lựa chọn của các đơn vị đo lường làm tăng trọng số tương đối của các biến. Biểu thị một biến trong các đơn vị nhỏ hơn sẽ dẫn đến một phạm vi lớn hơn cho biến đó, sau đó sẽ có ảnh hưởng lớn đến cấu trúc kết quả. Mặt khác, bằng cách tiêu chuẩn hóa một nỗ lực để cung cấp cho tất cả các biến có trọng số bằng nhau, với hy vọng đạt được tính khách quan. Như vậy, nó có thể được sử dụng bởi một học viên không có kiến ​​thức trước. Tuy nhiên, về cơ bản, một số biến quan trọng hơn các biến khác trong một ứng dụng cụ thể, và sau đó việc gán trọng số phải dựa trên kiến ​​thức về vấn đề (xem, ví dụ, Abrahamowicz, 1985). Mặt khác, đã có những nỗ lực để đưa ra các kỹ thuật phân cụm độc lập với quy mô của các biến (Friedman và Rubin, 1967). Đề xuất của Hardy và Rasson (1982) là tìm kiếm một phân vùng làm giảm thiểu tổng khối lượng vỏ tàu lồi của các cụm. Về nguyên tắc, một phương pháp như vậy là bất biến đối với các phép biến đổi tuyến tính của dữ liệu, nhưng thật không may, không có thuật toán nào tồn tại để thực hiện nó (ngoại trừ một xấp xỉ bị giới hạn ở hai chiều). Do đó, hiện tại tiến thoái lưỡng nan của tiêu chuẩn hóa là không thể tránh khỏi và các chương trình được mô tả trong cuốn sách này để lại sự lựa chọn cho người dùng. Đề xuất của Hardy và Rasson (1982) là tìm kiếm một phân vùng làm giảm thiểu tổng khối lượng vỏ tàu lồi của các cụm. Về nguyên tắc, một phương pháp như vậy là bất biến đối với các phép biến đổi tuyến tính của dữ liệu, nhưng thật không may, không có thuật toán nào tồn tại để thực hiện nó (ngoại trừ một xấp xỉ bị giới hạn ở hai chiều). Do đó, hiện tại tiến thoái lưỡng nan của tiêu chuẩn hóa là không thể tránh khỏi và các chương trình được mô tả trong cuốn sách này để lại sự lựa chọn cho người dùng. Đề xuất của Hardy và Rasson (1982) là tìm kiếm một phân vùng làm giảm thiểu tổng khối lượng vỏ tàu lồi của các cụm. Về nguyên tắc, một phương pháp như vậy là bất biến đối với các phép biến đổi tuyến tính của dữ liệu, nhưng thật không may, không có thuật toán nào tồn tại để thực hiện nó (ngoại trừ một xấp xỉ bị giới hạn ở hai chiều). Do đó, hiện tại tiến thoái lưỡng nan của tiêu chuẩn hóa là không thể tránh khỏi và các chương trình được mô tả trong cuốn sách này để lại sự lựa chọn cho người dùng.


1
Câu trả lời này thật phi thường
Candic3

6

Chuẩn hóa dữ liệu được khuyến nghị vì nếu không, phạm vi giá trị trong mỗi tính năng sẽ đóng vai trò là trọng số khi xác định cách phân cụm dữ liệu, thường không mong muốn.

Ví dụ, hãy xem xét số liệu tiêu chuẩn cho hầu hết các thuật toán phân cụm (bao gồm DBSCAN trong sci-kit learn) - euclideanhay còn gọi là định mức L2. Nếu một trong các tính năng của bạn có phạm vi giá trị lớn hơn nhiều so với các tính năng khác, việc phân cụm sẽ hoàn toàn bị chi phối bởi một tính năng đó. Để minh họa điều này, hãy xem ví dụ đơn giản dưới đây:

>>> import numpy as np
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> 
>>> X = np.array([[1,2,100],[4,3,50],[1,1,75]])
>>> 
>>> print X
[[  1   2 100]
 [  4   3  50]
 [  1   1  75]]
>>> 
>>> print euclidean_distances(X)
[[  0.          50.0999002   25.01999201]
 [ 50.0999002    0.          25.25866188]
 [ 25.01999201  25.25866188   0.        ]]
>>> print euclidean_distances(StandardScaler().fit_transform(X))
[[ 0.          3.46410162  1.73205081]
 [ 3.46410162  0.          3.46410162]
 [ 1.73205081  3.46410162  0.        ]]

Từ đó, bạn sẽ thấy rằng khoảng cách euclide giữa các phiên bản không được chuẩn hóa bị chi phối bởi cột thứ ba vì phạm vi giá trị của nó lớn hơn nhiều so với hai phiên bản còn lại. Tuy nhiên, khi dữ liệu được chuẩn hóa, điều này không còn là vấn đề nữa và coi trọng mỗi tính năng là bằng nhau khi tính khoảng cách giữa mỗi điểm dữ liệu.


1

Không cần thiết phải chuẩn hóa, có yêu cầu hay không phụ thuộc vào số liệu khoảng cách bạn chọn.

Chẳng hạn, nếu bạn chọn khoảng cách Mahalanobis thì việc phân tách sẽ dựa trên số độ lệch chuẩn tách các điểm và không phải là khoảng cách tuyệt đối giữa chúng, vì đó là một thước đo bất biến tỷ lệ.

Như với nhiều điều trong học máy, không có câu trả lời khó và nhanh và cách duy nhất để biết chắc chắn là áp dụng nhiều kỹ thuật khác nhau để xem kết quả phù hợp nhất cho dữ liệu của bạn.


0

Tôi thấy trong một số trường hợp hữu ích để xác định chức năng "đánh giá doanh nghiệp", xác định "tầm quan trọng" của các kích thước được sử dụng để phân cụm. Ví dụ, đối với người trồng rau xanh, phân cụm khách hàng, nếu táo đắt gấp đôi cam, số lượng táo sẽ tăng gấp đôi.


Nhưng, sau đó bạn không thể đưa nó vào như một tính năng bổ sung mà bạn tập trung vào? tức là giá trở thành một tính năng để cụm?
Candic3
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.