Używanie atrybutów do klasyfikowania / klastrowania profili użytkowników

14

Mam zbiór danych użytkowników kupujących produkty ze strony internetowej.

Atrybuty, które mam, to identyfikator użytkownika, region (stan) użytkownika, identyfikator kategorii produktu, identyfikator słowa kluczowego produktu, identyfikator słowa kluczowego witryny internetowej i kwota sprzedaży produktu.

Celem jest wykorzystanie informacji o produkcie i stronie internetowej w celu ustalenia tożsamości użytkowników, takich jak „młody młody gracz” lub „mama w domu”.

Załączam przykładowe zdjęcie jak poniżej:

wprowadź opis zdjęcia tutaj

Istnieje razem 1940 unikalnych kategorii i 13845 niepowtarzalnych słów kluczowych dla produktów. Witryna zawiera 13063 unikalnych słów kluczowych. Cały zestaw danych jest ogromny, ponieważ są to dzienne dane logowania.

Mam na myśli tworzenie klastrów, ponieważ nie są one nadzorowane, ale te id są uporządkowane w liczbie nieposiadającej znaczenia numerycznego. Więc nie wiem, jak zastosować algorytm. Myślę również o klasyfikacji. Jeśli dodam kolumnę klasy na podstawie wielkości sprzedaży zakupionego produktu. Myślę, że klastrowanie jest bardziej preferowane. Nie wiem, jakiego algorytmu powinienem użyć w tym przypadku, ponieważ wymiary identyfikatora słowa kluczowego mogą być większe niż 10000 (każdy produkt może mieć wiele słów kluczowych, podobnie jak strona internetowa). Muszę użyć Spark do tego projektu.

Czy ktoś może mi pomóc z niektórymi pomysłami lub sugestiami?

Dziękuję bardzo!

Sylvia
źródło
1
Czy możesz podać więcej informacji? co to jest „identyfikator kategorii produktu A” i „wyszukiwane słowa kluczowe id produktu A” tej samej długości dla wszystkich wpisów? „wymiary identyfikatora wyszukiwanych słów kluczowych mogą być większe niż 10000” dlaczego? czym oni są? Ile masz próbek? na wszystkie pytania można odpowiedzieć, jeśli opublikujesz tutaj kilka próbek swoich danych. Wtedy prawdopodobnie mógłbym ci coś zasugerować.
Kasra Manshaei
Czy produkt A i produkt B to dwa produkty zakupione przez użytkownika? Sformułowanie wydaje się sugerować, że produkty A i B są różne dla każdego użytkownika, ponieważ słowa kluczowe mogą się różnić. Czy tak jest I ostatni komentarz, czy chcesz klasyfikować czy grupować? To są zupełnie inne techniki :)
logc
Dziękuję bardzo @kasramsh za odpowiedzi. Zaktualizowałem opis, a także załączyłem przykładowe dane. Mam nadzieję, że otrzymam od ciebie kilka sugestii!
Sylvia
@logc tak, produkt (powiedziałem produkt A wcześniej) i strona internetowa (powiedziałem produkt B wcześniej) różnią się od każdego użytkownika. Każdy produkt ma kilka słów kluczowych, a każda witryna ma także kilka słów kluczowych. Klastrowanie lub klasyfikacja jest w porządku, o ile mogę utworzyć profil użytkownika, na przykład „młody młody gracz”; "Zostań w domu, Mamo". Myślę, że klastrowanie jest bardziej preferowane. Dziękuję Ci!!
Sylvia
@sylvia - Mam podobny problem do rozwiązania. Zadałem to jako osobne pytanie. Czy możesz podać jakieś sugestie dotyczące sposobu rozwiązania tego problemu? datascience.stackexchange.com/questions/12930/... Moje inne wątpliwości dotyczą K oznacza, czy pogrupowałeś dane według klientów? Oznacza to, że każdy wiersz reprezentował transakcję lub reprezentował zagregowane zakupy tego klienta do daty.
Neil

Odpowiedzi:

11

W tej chwili mam czas na bardzo krótką odpowiedź, ale postaram się ją rozwinąć później.

To, co chcesz zrobić, to grupowanie , ponieważ chcesz odkryć etykiety dla swoich danych. (W przeciwieństwie do klasyfikacji, w której miałbyś etykiety co najmniej niektórych danych, a resztę chciałbyś oznaczyć).

Aby przeprowadzić grupowanie użytkowników, musisz mieć je jako pewnego rodzaju punkty w abstrakcyjnej przestrzeni. Następnie zmierzysz odległości między punktami i powiesz, że punkty „bliskie” są „podobne” i oznaczysz je zgodnie z ich miejscem w tej przestrzeni.

Musisz przekształcić swoje dane w coś, co wygląda jak profil użytkownika, np .: identyfikator użytkownika, a po nim wektor liczb reprezentujących cechy tego użytkownika. W twoim przypadku każda funkcja może być „kategorią witryny” lub „kategorią produktu”, a liczba może być kwotą wydaną na tę funkcję. Lub funkcja może być oczywiście kombinacją sieci i produktu.

Jako przykład wyobraźmy sobie profil użytkownika z trzema funkcjami:

  • dolarów wydanych w sieciach „technicznych”,
  • dolarów wydanych na produkty „modowe”,
  • oraz dolarów wydanych na „agresywne” gry wideo w „rodzinnych” witrynach (kto wie).

Aby zbudować te profile, musisz zamapować „zbyt duże” kategorie i słowa kluczowe na funkcje, które uważasz za istotne. Sprawdź modelowanie tematu lub podobieństwo semantyczne, aby to zrobić. Po zbudowaniu tej mapy będzie ona zawierać stwierdzenie, że wszystkie dolary wydane na strony internetowe ze słowami kluczowymi „gadżet”, „elektronika”, „programowanie” i inne X powinny zostać zebrane w naszą pierwszą funkcję; i tak dalej.

Nie bój się „narzucania” funkcji! Będziesz musiał je udoskonalić i być może całkowicie je zmienić, po zgrupowaniu użytkowników.

Gdy masz już profile użytkowników, przejdź do ich klastra za pomocą k-średnich lub cokolwiek innego, co uważasz za interesujące. Niezależnie od zastosowanej techniki, będziesz zainteresowany uzyskaniem punktu „reprezentatywnego” dla każdego klastra. Zwykle jest to geometryczne „centrum” punktów w tej grupie.

Wykreśl te „reprezentatywne” punkty, a także porównaj je z innymi klastrami. Bardzo przydatne jest tutaj użycie mapy radarowej . Wszędzie tam, gdzie pojawia się istotna cecha (coś w przedstawicielu, które jest bardzo wyraźne, a także jest bardzo widoczne w porównaniu do innych klastrów), jest dobrym kandydatem, aby pomóc ci nazwać klaster chwytliwą frazą („kujony”, „fashionistki” , „agresywne mamy” ...).

Pamiętaj, że problem klastrowania jest problemem otwartym, więc nie ma „właściwego” rozwiązania! I myślę, że moja odpowiedź jest już dość długa; sprawdź także normalizację profili i filtrowanie wartości odstających.

logc
źródło
Dziękuje Ci bardzo bardzo mocno! To bardzo pomocne. Zacznę od mapowania. Bardzo to doceniam!
Sylvia
Chętnie pomoże. :)
logc
Cześć @logc, zastosowałem LDA do wyboru funkcji. Uważałem każdy user_id za „dokument”, a słowa kluczowe to „słowa” w „dokumencie”, a następnie stosując LDA otrzymałem kilka tematów słów kluczowych. Nie wiem jednak, dlaczego większość moich tematów składa się z tych samych słów kluczowych. Czy to oznacza, że ​​LDA nie jest właściwą metodą w moim przypadku, czy są jakieś błędy? Dziękuję bardzo!
sylvia
@sylvia: Sugerowałbym, aby zmienić to pytanie w nowe pytanie na tej stronie. W przeciwnym razie moglibyśmy napisać mnóstwo komentarzy i nie jest to najlepszy format pytań i odpowiedzi. :)
logc
Dzieki za sugestie. Oto link, który zamieściłem, jeśli masz czas, aby rzucić okiem na datascience.stackexchange.com/questions/5941/… Dzięki!
Sylvia
-2

Do orientacji i eksploracji mogę polecić WeKa , który jest bardzo fajnym zestawem narzędzi do uczenia maszynowego. Przyjmuje pewien format wejściowy (.ARFF), więc być może będziesz musiał go również przeanalizować.

Jeśli chodzi o dylemat słów kluczowych, zalecam dokonanie wyboru niektórych funkcji w celu wyeliminowania zbędnych lub niedotyczących słów kluczowych.

Lennyklb
źródło
Dziękuję @ Lennart Kloppenburg za odpowiedź. Jak dokonać wyboru funkcji, jeśli atrybut (keword_id) ma numer porządkowy? Zaktualizowałem przykładowe dane powyżej. Czy możesz spojrzeć i dać mi jakieś sugestie? Dziękuję Ci!
sylvia