Vấn đề cơ bản
Đây là vấn đề cơ bản của tôi: Tôi đang cố gắng phân cụm một tập dữ liệu có chứa một số biến rất sai lệch với số lượng. Các biến chứa nhiều số không và do đó không có nhiều thông tin cho quy trình phân cụm của tôi - có khả năng là thuật toán k-mean.
Tốt, bạn nói, chỉ cần chuyển đổi các biến bằng cách sử dụng căn bậc hai, hộp cox hoặc logarit. Nhưng vì các biến của tôi dựa trên các biến phân loại, tôi sợ rằng tôi có thể đưa ra sai lệch bằng cách xử lý một biến (dựa trên một giá trị của biến phân loại), trong khi để các biến khác (dựa trên các giá trị khác của biến phân loại) theo cách chúng .
Chúng ta hãy đi vào chi tiết hơn.
Bộ dữ liệu
Tập dữ liệu của tôi đại diện cho việc mua các mặt hàng. Các mặt hàng có các loại khác nhau, ví dụ màu sắc: xanh dương, đỏ và xanh lá cây. Các giao dịch mua sau đó được nhóm lại với nhau, ví dụ như bởi khách hàng. Mỗi khách hàng này được đại diện bởi một hàng trong bộ dữ liệu của tôi, vì vậy tôi bằng cách nào đó phải tổng hợp mua hàng trên khách hàng.
Cách tôi làm điều này là bằng cách đếm số lượng mua, trong đó mặt hàng là một màu nhất định. Vì vậy, thay vì một biến duy nhất color
, tôi kết thúc với ba biến count_red
, count_blue
và count_green
.
Dưới đây là một ví dụ để minh họa:
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
Trên thực tế, cuối cùng tôi không sử dụng số lượng tuyệt đối, tôi sử dụng tỷ lệ (một phần của các mặt hàng xanh của tất cả các mặt hàng đã mua cho mỗi khách hàng).
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 0.71 | 0.29 | 0.00 |
-----------------------------------------------------------
c1 | 0.43 | 0.57 | 0.00 |
-----------------------------------------------------------
c2 | 0.09 | 0.91 | 0.00 |
-----------------------------------------------------------
c3 | 0.31 | 0.62 | 0.08 |
-----------------------------------------------------------
Kết quả là như nhau: Đối với một trong các màu của tôi, ví dụ: màu xanh lá cây (không ai thích màu xanh lá cây), tôi nhận được một biến lệch trái có chứa nhiều số không. Do đó, k-nghĩa là không tìm thấy phân vùng tốt cho biến này.
Mặt khác, nếu tôi chuẩn hóa các biến của mình (trừ trung bình, chia cho độ lệch chuẩn), biến xanh "sẽ nổ tung" do phương sai nhỏ của nó và lấy các giá trị từ phạm vi lớn hơn nhiều so với các biến khác, khiến nó trông giống hơn quan trọng đối với k-nghĩa hơn thực tế.
Ý tưởng tiếp theo là biến đổi biến xanh lục sk (r) ewed.
Biến đổi biến thiên
Nếu tôi biến đổi biến màu xanh lá cây bằng cách áp dụng căn bậc hai, nó trông có vẻ ít sai lệch hơn. (Ở đây biến màu xanh lá cây được vẽ bằng màu đỏ và màu xanh lá cây để đảm bảo nhầm lẫn.)
Màu đỏ: biến ban đầu; màu xanh: biến đổi bởi căn bậc hai.
Hãy nói rằng tôi hài lòng với kết quả của sự chuyển đổi này (mà tôi thì không, vì các số 0 vẫn làm lệch mạnh phân phối). Bây giờ tôi có nên chia tỷ lệ các biến màu đỏ và màu xanh không, mặc dù các bản phân phối của chúng trông ổn?
Dòng dưới cùng
Nói cách khác, tôi có làm biến dạng kết quả phân cụm bằng cách xử lý màu xanh lá cây theo một cách, nhưng không xử lý màu đỏ và màu xanh nào không? Cuối cùng, cả ba biến thuộc về nhau, vậy chúng có nên được xử lý theo cùng một cách không?
BIÊN TẬP
Để làm rõ: Tôi biết rằng k-mean có lẽ không phải là cách để sử dụng dữ liệu dựa trên số lượng. Tuy nhiên, câu hỏi của tôi thực sự là về việc điều trị các biến phụ thuộc. Chọn phương pháp đúng là một vấn đề riêng biệt.
Các ràng buộc cố hữu trong các biến của tôi là
count_red(i) + count_blue(i) + count_green(i) = n(i)
, trong đó n(i)
tổng số lượng mua của khách hàng i
.
(Hoặc, tương đương, count_red(i) + count_blue(i) + count_green(i) = 1
khi sử dụng số lượng tương đối.)
Nếu tôi biến đổi các biến của mình khác nhau, điều này tương ứng với việc đưa ra các trọng số khác nhau cho ba thuật ngữ trong ràng buộc. Nếu mục tiêu của tôi là phân tách tối ưu các nhóm khách hàng, tôi có phải quan tâm đến việc vi phạm ràng buộc này không? Hay "kết thúc biện minh cho phương tiện"?
count_red
, count_blue
và count_green
và các dữ liệu được đếm. Đúng? Các hàng sau đó là gì - các mặt hàng? Và bạn sẽ phân cụm các mặt hàng?