Tôi có cần bỏ các biến tương quan / collinear trước khi chạy kmeans không?


13

Tôi đang chạy kmeans để xác định cụm khách hàng. Tôi có khoảng 100 biến để xác định các cụm. Mỗi biến này đại diện cho% chi tiêu của khách hàng cho một danh mục. Vì vậy, nếu tôi có 100 danh mục, tôi có 100 biến này sao cho tổng của các biến này là 100% cho mỗi khách hàng. Bây giờ, các biến này có mối tương quan mạnh mẽ với nhau. Tôi có cần bỏ một vài trong số này để xóa cộng tuyến trước khi tôi chạy kmeans không?

Đây là dữ liệu mẫu. Trong thực tế, tôi có 100 biến và 10 triệu khách hàng.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
Bạn đã thử phân tích PCA để giải mã dữ liệu của bạn chưa?
Miroslav Sabo

2
"Collinear" không hoàn toàn giống như "tương quan". Vì vậy, câu hỏi của bạn vẫn chưa rõ ràng
ttnphns

Câu trả lời:


9

Đừng bỏ bất kỳ biến nào, nhưng hãy cân nhắc sử dụng PCA. Đây là lý do tại sao.

Thứ nhất, như được chỉ ra bởi Anony-mousse, k-mean không bị ảnh hưởng xấu bởi cộng tuyến / tương quan. Bạn không cần phải vứt bỏ thông tin vì điều đó.

Thứ hai, nếu bạn thả các biến của mình sai cách, bạn sẽ mang một số mẫu lại gần nhau một cách giả tạo. Một ví dụ:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(Tôi đã xóa ký hiệu% và chỉ đặt các giá trị trong khoảng từ 0 đến 1, bị ràng buộc để tất cả chúng có tổng bằng 1.)

Khoảng cách Euclide giữa mỗi người trong số những khách hàng trong không gian 3d tự nhiên của chúng là (10)2+(01)2+(00)2=2

Bây giờ hãy nói rằng bạn bỏ CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

Bây giờ khoảng cách giữa khách hàng 1 và 2 vẫn là , nhưng giữa khách hàng 1 và 3, và 2 và 3, nó chỉ2(10)2+(00)2=1

Thứ ba, collinerarity / tương quan không phải là vấn đề. Chiều của bạn là. 100 biến là đủ lớn để thậm chí với 10 triệu điểm dữ liệu, tôi lo lắng rằng phương tiện k có thể tìm thấy các mẫu giả trong dữ liệu và phù hợp với điều đó. Thay vào đó, hãy nghĩ đến việc sử dụng PCA để nén nó xuống một số kích thước dễ quản lý hơn - giả sử 10 hoặc 12 để bắt đầu (có thể cao hơn nhiều, có thể thấp hơn nhiều - bạn sẽ phải xem xét phương sai dọc theo từng thành phần và chơi xung quanh một chút, để tìm đúng số). Vâng, bạn sẽ mang một số mẫu gần nhau hơn để làm điều này, vâng, nhưng bạn sẽ làm như vậy theo cách bảo tồn hầu hết các phương sai trong dữ liệu và tốt nhất là sẽ loại bỏ các mối tương quan.

~~~~~

BIÊN TẬP:

Re, ý kiến ​​dưới đây về PCA. Vâng, nó hoàn toàn có bệnh lý. Nhưng nó khá nhanh và dễ để thử, vì vậy dường như tôi vẫn không đặt cược xấu nếu bạn muốn giảm bớt tính chiều hướng của vấn đề.

Mặc dù vậy, tôi đã cố gắng nhanh chóng ném một vài bộ dữ liệu tổng hợp 100 chiều vào thuật toán k-mean để xem những gì họ đã đưa ra. Mặc dù ước tính vị trí trung tâm cụm không chính xác, nhưng tư cách thành viên của cụm (tức là hai mẫu có được gán cho cùng một cụm hay không, dường như đó là điều OP quan tâm) tốt hơn tôi nghĩ. Vì vậy, cảm giác ruột của tôi trước đó hoàn toàn có thể sai - k-nghĩa là di chuyển chỉ hoạt động tốt trên dữ liệu thô.


1
Tôi nghĩ rằng rất nhiều sự cẩn thận phải được thực hiện khi loại bỏ các biến bằng PCA. Trước hết, các phương sai phải được chuẩn hóa trước khi loại bỏ như vậy vì bạn có thể loại bỏ các biến không chính xác chỉ vì chúng có quy mô khác nhau do đơn vị của chúng. Thứ hai sau đó, tôi sẽ chỉ loại bỏ các kích thước có biến thể cực nhỏ, bởi vì PCA giả định cơ sở trực giao nếu bạn có biến thể theo hướng không trực giao, điều này sẽ bị bắt bởi k-mean nhưng bị PCA loại bỏ.
Cagdas Ozgenc

1
(X1,X2)1ρ>0Y= =X1-X2(X1,X2)X1+X2X1-X2YX1+X2

1
Đó là cuộc thảo luận không liên quan trong các thiết lập không giám sát. Đối với cài đặt được giám sát, PCA không quan tâm đến mối quan hệ với biến mục tiêu. Nếu hướng phụ thuộc rơi vào hướng phương sai thấp thì xui xẻo.
Cagdas Ozgenc

2

Trong một ví dụ về đồ chơi trong 2d hoặc 3d, nó không tạo ra nhiều sự khác biệt, nó chỉ thêm một chút dư thừa vào dữ liệu của bạn: tất cả các điểm của bạn đều nằm trên một siêu phẳng, (d-1) lẻ. Vậy là cụm có nghĩa. Và khoảng cách trong siêu phẳng chiều (d-1) này là bội số tuyến tính của cùng một khoảng cách, vì vậy nó không thay đổi bất cứ điều gì.

Nếu bạn xây dựng dữ liệu đó một cách giả tạo, ví dụ như bằng cách thực hiện (x,y)(x,y,x+y)xy

Hãy xem ví dụ đơn giản nhất: các biến trùng lặp.

Nếu bạn chạy PCA trên tập dữ liệu của mình và sao chép một biến, điều này có nghĩa là đặt trọng số trùng lặp lên biến này. PCA dựa trên giả định rằng phương sai theo mọi hướng đều quan trọng như nhau - vì vậy, thực tế, bạn nên cẩn thận các biến trọng số (tính tương quan vào tài khoản, cũng thực hiện bất kỳ quá trình tiền xử lý nào khác cần thiết) trước khi thực hiện PCA.


1
Theo phân tích của tôi tại stats.stackexchange.com/a/50583 , lý do này dường như không chính xác.
whuber

Tôi đã cải thiện rất nhiều câu trả lời của mình, nó quá nhiều dựa trên dữ liệu ví dụ về đồ chơi.
Có QUIT - Anony-Mousse

1

Nên loại bỏ các biến nếu chúng có tương quan cao .

Bất kể thuật toán phân cụm hoặc phương pháp liên kết, một điều mà bạn thường làm theo là tìm khoảng cách giữa các điểm. Giữ các biến có tương quan cao là tất cả nhưng mang lại cho chúng nhiều hơn, tăng gấp đôi trọng số trong tính toán khoảng cách giữa hai điểm (Vì tất cả các biến được chuẩn hóa, hiệu ứng thường sẽ tăng gấp đôi).

Nói tóm lại, sức mạnh của các biến ảnh hưởng đến sự hình thành cụm tăng lên nếu nó có mối tương quan cao với bất kỳ biến nào khác.

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.