Klasyfikuj klientów na podstawie 2 funkcji ORAZ szeregu wydarzeń

12

Potrzebuję pomocy na temat tego, jaki powinien być mój następny krok w projektowanym algorytmie.

Ze względu na NDA nie mogę wiele ujawnić, ale postaram się być ogólny i zrozumiały.

Zasadniczo po kilku krokach w algorytmach mam to:

Dla każdego mojego klienta i wydarzeń, które robią w ciągu miesiąca, w pierwszych krokach pogrupowałem wydarzenia w kilka kategorii (każdy klient będzie miał zdarzenia podzielone na kategorie, których wartości od 1 do x wynoszą x od 1 do 25, ogólnie pierwsze kategorie mają większą gęstość zdarzeń niż inne).

Dla każdej kategorii i klienta stworzyłem szereg czasowy agregujący zdarzenia miesiąca na godzinę (uzyskiwanie wzorców, kiedy te zdarzenia są wykonywane). Używam również kilku zmiennych normalizujących na podstawie liczby dni w ciągu miesiąca (30 dni), że facet wykonuje co najmniej jedno zdarzenie, oraz liczby dni z co najmniej jednym zdarzeniem w sumie dni z co najmniej jednym zdarzenie (agregowanie wszystkich klastrów). Pierwszy pokazuje stosunek aktywności klienta w ciągu miesiąca, a drugi porównuje kategorię z pozostałymi.

Stół finałowy wygląda tak

|*Identifier*|  *firstCat* | *feature1* | *feature2*  |   {      *(TIME SERIES)*   }

CustomerID  |  ClusterID |  DaysOver30 | DaysOverTotal | Events9AM Events10AM ... 

 xx | 1 | 0,69 |  0,72 |  0,2   0,13   ...

 xx | 2 | 0,11 |  0,28 |  0,1   0,45   ...

 xy | 1 | 0,23 |  0,88 |  0,00  0,60   ...

 xy | 2 | 0,11 |  0,08 |  1,00  0,00   ...

 xy | 3 | 0,10 |  0,04 |  0,40  0,60   ...

Zmienne szeregów czasowych są procentem w stosunku do całkowitej liczby zdarzeń na dzień dla każdej określonej kategorii (oznacza to, że dla każdego wiersza sumując wszystkie zmienne powinno wynosić 1). Powodem robi to tak jest, bo na przykład szeregu czasowego z wydarzeń 0 0 0 1 0i 1 1 1 2 1są zupełnie różne i standaryzacji do normy dałoby podobne wyniki. A ze względu na duże odchylenie między różnymi kategoriami, sprawdzam wartości w szeregu czasowym niezależnie od innych.

Teraz muszę zidentyfikować te kategorie (pamiętaj, że mogą to być od 1 do x, czyli x dowolna liczba od 1 do 25) w 3 znacznikach: znacznik A, znacznik B i Żaden z nich. Patrząc na te zmienne, mogę ręcznie zidentyfikować, do którego znacznika należą, a chodzi o to, aby zidentyfikować ręcznie tyle, ile mogę i użyć dowolnego algorytmu klasyfikującego, aby wyciągnąć z tego naukę i zidentyfikować je wszystkie.

Moim pomysłem było użycie wielu regresji logistycznych na stole, ale wszystkie zmienne szeregów czasowych są skorelowane (ponieważ są one liniową kombinacją), więc pomyślałem, że lepiej użyć algorytmu grupowania tylko w szeregach czasowych przy użyciu euklidesa odległość, aby skategoryzować różne wzorce i użyć wyniku oraz dwóch pozostałych zmiennych normalizujących w regresji logistycznej.

Innym problemem, który mam, jest to, że takie podejście bierze każdy wiersz niezależnie od innych i teoretycznie dla każdego klienta powinno być tylko 0 lub 1 znacznik A, 0 lub 1 znacznik B, a pozostały z nich powinien być Brak (inny wskazówka jest taka, że ​​normalnie znaczniki A i B znajdują się pomiędzy pierwszymi kategoriami, ponieważ w dużym stopniu zależą od funkcji normalizujących (jeśli liczba dni powyżej sumy jest wysoka, istnieje duże prawdopodobieństwo, że wiersz jest albo A albo B, w zależności od wzorca szeregów czasowych) .

Edycja: To już nie jest problem, po prostu wykonam dwie różne regresje logistyczne, jedną dla Tagu A lub Innego i drugą dla Tagu B lub innego, z prawdopodobieństwami wyników mogę wybrać tylko najlepsze z nich.

Zbiór danych jest ogromny i ostateczny algorytm należy zastosować za pomocą SQL (na Teradata), ale aby uzyskać współczynniki regresji logistycznej lub centra klastrowania, pobieram próbkę i używam R.

JusefPol
źródło
Tylko sugestia :) ... Nie jestem pewien, czy dostaniesz właściwą odpowiedź, dopóki pytanie jest tak długie. Na przykład twoje tagi są dokładnie moim kierunkiem badań, ale tak naprawdę nie mam czasu i energii, aby przeczytać wszystko! Jeśli możesz zaktualizować krótszą wersję, byłoby lepiej dla ciebie Q, a także dla ciebie, ponieważ w raportach naukowych musisz krótko porozmawiać.
Kasra Manshaei,
Spróbuję zredukować pytanie. Zwykle jest tak, gdy nie tłumaczę się, że ludzie mylą to, co zamierzałem. W każdym razie, jak tylko będę miał czas na pracę, spróbuję zmniejszyć rozmiar pytania, dziękuję za zalecenie
JusefPol
Jakie jest twoje dokładne pytanie? Chciałbym po prostu obliczyć funkcje szeregów czasowych, a następnie dodać je do funkcji klientów. Wtedy będziesz miał tylko podstawowe grupowanie. Do wyboru funkcji szeregów czasowych wymagana jest znajomość domeny.
Nikolas Rieble,

Odpowiedzi:

2

Wiem, że minęło trochę czasu, odkąd pytanie zostało opublikowane, ale dla przyszłych czytelników proponuję tutaj inne rozwiązanie problemu klasyfikacji szeregów czasowych danych proporcjonalnych, tj. Wektorów proporcji.

Ukryte modele Markowa (HMM) są szeroko stosowane do klasyfikacji szeregów czasowych. Oryginalne implementacje zostały opracowane dla danych dyskretnych i Gaussa, ale od tego czasu zostały rozszerzone na większe rozkłady prawdopodobieństwa.

Wśród nich Dirichlet, uogólniony Dirichlet i rozkłady Beta-Liouville, które doskonale nadają się do pracy z proporcjonalnymi danymi.

Zazwyczaj model jest trenowany dla każdej kategorii („Tag” w tym pytaniu) z szeregów czasowych, dla których kategoria jest znana. Kiedy należy sklasyfikować nowy szereg czasowy, oblicza się jego prawdopodobieństwo w odniesieniu do każdego modelu. Nowe szeregi czasowe są zwykle przypisywane do kategorii prowadzącej do najwyższego prawdopodobieństwa.

Oto dokumenty referencyjne dla tych modeli, które przedstawiają je głębiej i zawierają wszystkie równania potrzebne do wdrożenia:

  • Dynamiczny model mieszanki Dirichleta, raport z badań IDIAP, L. Chen, D. Barber, J.-M. Odobez, kwiecień 2007 r
  • Proporcjonalne modelowanie danych z ukrytymi modelami Markowa na podstawie uogólnionych mieszanin Dirichleta i Beta-Liouville stosowanych do wykrywania anomalii w miejscach publicznych, E. Epaillard, N. Bouguila, Pattern Recognition 55, s. 125–136, 2016

W odniesieniu do dwóch dodatkowych funkcji wymienionych w pytaniu, HMM dla danych mieszanych zostały również opracowane w następującym artykule badawczym: Hybrydowy ukryty model Markowa do mieszanego ciągłego / ciągłego i dyskretnego / ciągłego modelowania danych, E. Epaillard, N. Bouguila, MMSP, s. 1-6, 2015.

Modele te są trudniejsze do wdrożenia niż modele regresyjne, ale mają tę zaletę, że są modelami dyskryminacyjnymi i generatywnymi oraz są w stanie dobrze uogólniać, gdy w przetwarzanych danych występuje pewna zmienność.

Eskapp
źródło