Podstawowy problem
Oto mój podstawowy problem: próbuję zgrupować zestaw danych zawierający niektóre bardzo wypaczone zmienne z licznikami. Zmienne zawierają wiele zer i dlatego nie są zbyt pouczające dla mojej procedury klastrowania - która prawdopodobnie jest algorytmem k-średnich.
Dobra, mówisz, po prostu przekształć zmienne za pomocą pierwiastka kwadratowego, pola Coxa lub logarytmu. Ale ponieważ moje zmienne są oparte na zmiennych kategorialnych, obawiam się, że mógłbym wprowadzić błąd systematyczny, posługując się zmienną (opartą na jednej wartości zmiennej kategorialnej), pozostawiając inne (oparte na innych wartościach zmiennej kategorialnej) takie, jakie są .
Przejdźmy do bardziej szczegółowych informacji.
Zestaw danych
Mój zestaw danych reprezentuje zakupy przedmiotów. Przedmioty mają różne kategorie, na przykład kolor: niebieski, czerwony i zielony. Zakupy są następnie grupowane, np. Według klientów. Każdy z tych klientów jest reprezentowany przez jeden wiersz mojego zestawu danych, więc w jakiś sposób muszę agregować zakupy w stosunku do klientów.
Sposób, w jaki to robię, polega na liczeniu zakupów, w których przedmiot ma określony kolor. Więc zamiast pojedynczej zmiennej color
, I skończyć z trzech zmiennych count_red
, count_blue
oraz count_green
.
Oto przykład ilustracji:
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
Właściwie ostatecznie nie używam liczb bezwzględnych, używam współczynników (ułamek zielonych elementów wszystkich zakupionych przedmiotów na klienta).
-----------------------------------------------------------
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 |
-----------------------------------------------------------
Wynik jest taki sam: dla jednego z moich kolorów, np. Zielonego (nikt nie lubi zielonego), otrzymuję zmienną skośną w lewo zmienną zawierającą wiele zer. W związku z tym k-średnich nie znajduje dobrego podziału dla tej zmiennej.
Z drugiej strony, jeśli znormalizuję moje zmienne (odejmij średnią, podziel przez odchylenie standardowe), zielona zmienna „wysadzi się” z powodu swojej małej wariancji i przyjmuje wartości z dużo większego zakresu niż inne zmienne, co sprawia, że wygląda bardziej ważne dla k-średnich, niż jest w rzeczywistości.
Kolejnym pomysłem jest przekształcenie zielonej zmiennej sk (r) ewed.
Przekształcanie skośnej zmiennej
Jeśli zmienię zieloną zmienną przez zastosowanie pierwiastka kwadratowego, będzie ona wyglądać nieco mniej przekrzywiona. (Tutaj zielona zmienna jest wykreślona na czerwono i zielono, aby zapewnić zamieszanie.)
Czerwony: oryginalna zmienna; niebieski: przekształcony przez pierwiastek kwadratowy.
Powiedzmy, że jestem zadowolony z wyniku tej transformacji (której nie jestem, ponieważ zera wciąż mocno wypaczają rozkład). Czy powinienem teraz skalować zmienne czerwone i niebieskie, chociaż ich rozkłady wyglądają dobrze?
Dolna linia
Innymi słowy, czy zniekształcam wyniki grupowania, obsługując kolor zielony w jedną stronę, ale w ogóle nie obsługując czerwonego i niebieskiego? Ostatecznie wszystkie trzy zmienne należą do siebie, więc czy nie powinny być traktowane w ten sam sposób?
EDYTOWAĆ
Wyjaśnij: Zdaję sobie sprawę, że k-średnich prawdopodobnie nie jest sposobem na uzyskanie danych opartych na zliczaniu . Moje pytanie naprawdę dotyczy jednak traktowania zmiennych zależnych. Wybór właściwej metody to osobna sprawa.
Nieodłącznym ograniczeniem moich zmiennych jest to
count_red(i) + count_blue(i) + count_green(i) = n(i)
, gdzie n(i)
jest łączna liczba zakupów klienta i
.
(Lub, równoważnie, count_red(i) + count_blue(i) + count_green(i) = 1
przy użyciu liczby względnej.)
Jeśli zmienię moje zmienne w inny sposób, odpowiada to nadaniu różnej wagi trzem warunkom ograniczenia. Jeśli moim celem jest optymalne rozdzielenie grup klientów, czy muszę dbać o naruszenie tego ograniczenia? Czy też „cel uzasadnia środki”?
count_red
, count_blue
a count_green
dane są zliczane. Dobrze? Jakie są zatem wiersze - przedmioty? I zamierzasz grupować przedmioty?