1 Wstęp

1.1 Cel i Zakres Projektu

Celem niniejszej pracy jest przeprowadzenie zaawansowanej segmentacji bazy klientów sklepu internetowego (branża odzieżowa) w celu wyodrębnienia jednorodnych grup o unikalnych profilach zakupowych. Projekt realizowany jest na dwóch płaszczyznach:

Cel Biznesowy: Segmentacja pozwoli na szczegółowe poznanie grup klientów o podobnych wzorcach zachowań. Głównym dążeniem jest optymalizacja strategii marketingowej poprzez przejście od marketingu masowego do strategii celowanej.

Cel Metodologiczny: W wymiarze analitycznym celem jest porównanie skuteczności dwóch podejść do grupowania: klasycznej analizy RFM (Recency, Frequency, Monetary) oraz wielowymiarowej analizy opartej na redukcji wymiarów metodą PCA (Principal Component Analysis).

Istotnym elementem badania jest również ocena przydatności zmiennych. Praca ma na celu zweryfikowanie post factum, które z wprowadzonych w rozszerzonej analizie zmiennych faktycznie decydują o odrębności segmentów, a które są w tym procesie pomijalne.


1.2 Pytania i Hipoteza Badawcza

W toku analizy postawiono następujące pytania badawcze:

  1. Czy rozszerzenie przestrzeni cech o wymiary behawioralne pozwala na wykrycie grup klientów niewidocznych dla prostego modelu RFM?
  2. Które zmienne najsilniej różnicują profile klientów?

W odpowiedzi na główny problem badawczy sformułowano hipotezę:

Hipoteza Badawcza: Model oparty na redukcji wymiarów (PCA + K-Means) wyodrębni segmenty klientów różniące się behawioralnie, podczas gdy klasyczny model RFM ograniczy się do podziału opartego na skali wydatków i aktywności (“Duzi” vs “Mali”, “Aktywni” vs “Utraceni”). Miarą potwierdzenia hipotezy będzie niski wskaźnik zgodności (Adjusted Rand Index) między modelami, wskazujący na wykrycie fundamentalnie odmiennych struktur w danych.


1.3 Charakterystyka Danych

Analizie poddano zbiór danych transakcyjnych pochodzący ze sklepu e-commerce z branży odzieżowej, obejmujący 5-letni okres działalności (lata 2021–2025). Dane obejmują historię zamówień, w tym informacje o:

  • Datach transakcji,
  • Kupowanych produktach (kategoria, model, kolor),
  • Wartościach finansowych (przychód, rabaty),
  • Użyciu kodów promocyjnych.

1.4 Metodologia

Proces badawczy przebiega w następujących etapach:

  1. Przygotowanie Danych: Import danych i agregacja zmiennych do poziomu klienta.
  2. EDA i Walidacja: Wstępna analiza danych, ocena klastrowalności.
  3. Modelowanie:
    • Model Bazowy: Klasyczny algorytm K-Means na zmiennych RFM.
    • Model Zaawansowany: PCA (Principal Component Analysis) w celu redukcji wymiarów, a następnie K-Means na uzyskanych składowych.
  4. Interpretacja segmentów: Interpretacja wyników klastrowania i profilowanie biznesowe grup.
  5. Walidacja: Ocena jakości modeli, porównanie wyników za pomocą wskaźnika ARI.

2 Przygotowanie Danych

Celem tego etapu jest transformacja surowych danych transakcyjnych w ustrukturyzowaną macierz cech, która posłuży do budowy modeli segmentacyjnych. Proces ten składa się z trzech kluczowych kroków: importu zbioru, anonimizacji danych oraz agregacji zmiennych do poziomu klienta.

2.1 Anonimizacja Danych Osobowych

W trosce o ochronę prywatności klientów oraz zgodnie z dobrymi praktykami analizy danych, usunięto kolumny zawierające dane osobowe.

Oryginalny identyfikator klienta (client_id, zawierający adresy e-mail) został zastąpiony sztucznym kluczem (np. C_00001). Mapa powiązań została odseparowana, a dalsza analiza odbywa się wyłącznie na zanonimizowanym zbiorze df. Pozwala to na bezpieczne przetwarzanie danych bez ryzyka naruszenia prywatności.

Tabela poniżej przedstawia wygląd surowych danych po anonimizacji, w kolejnym kroku na ich podstawie zagregowano zmienne do poziomu klienta.

## Rows: 50,833
## Columns: 22
## $ client_id                <chr> "C_00001", "C_00002", "C_00003", "C_00004", "…
## $ order_id                 <dbl> 61888, 61896, 61899, 61901, 61903, 61905, 619…
## $ order_date               <dttm> 2021-01-14 10:05:06, 2021-01-14 15:46:10, 20…
## $ country_id               <chr> "PL", "PL", "PL", "PL", "PL", "PL", "PL", "PL…
## $ currency                 <chr> "PLN", "PLN", "PLN", "PLN", "PLN", "PLN", "PL…
## $ order_origin             <chr> "Nieznane", "Nieznane", "Nieznane", "Nieznane…
## $ coupon_code              <chr> NA, NA, "mirecki", NA, NA, NA, "romanowski", …
## $ discount_amount          <dbl> 0, 0, 139, 0, 0, 0, 278, 0, 278, 278, 0, 0, 1…
## $ total_amount_afterrefund <dbl> 210, 289, 150, 210, 289, 211, 12, 290, 289, 2…
## $ total_items              <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, …
## $ item_name                <chr> "Pakker Linen – Gold - M (170-180cm/~80kg)", …
## $ item_quantity            <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ item_price               <dbl> 278, 278, 278, 278, 278, 278, 278, 278, 278, …
## $ item_price_paid          <dbl> 199, 278, 139, 199, 278, 199, 0, 278, 139, 13…
## $ model                    <chr> "Linen I", "Linen I", "Cotton I", "Linen I", …
## $ category                 <chr> "Linen", "Linen", "Cotton", "Linen", "Cotton"…
## $ color                    <chr> "Gold", "Black", "Black Sea", "Gold", "Black …
## $ prod_cost                <dbl> 126, 126, 117, 126, 117, 126, 117, 117, 117, …
## $ size                     <chr> "M", "XL", "L", "M", "L", "L", "L", "M", "M",…
## $ line_revenue             <dbl> 199, 278, 139, 199, 278, 199, 0, 278, 139, 13…
## $ profit_amount            <dbl> 73, 152, 22, 73, 161, 73, -117, 161, 22, 22, …
## $ profit_margin            <dbl> 36.68342, 54.67626, 15.82734, 36.68342, 57.91…

2.2 Agregacja zmiennych

Surowe dane transakcyjne nie nadają się bezpośrednio do klastrowania. Konieczna jest ich agregacja do poziomu unikalnego klienta. W tym celu stworzono wektor cech (customer_features) składający się z 10 zmiennych, które opisują klienta w czterech kluczowych wymiarach.

Dobór zmiennych podyktowany był specyfiką branży odzieżowej, gdzie istotny jest nie tylko fakt zakupu, ale także styl i przywiązanie do marki.

Zmienne do Modelu:

A. Wymiar Klasyczny (RFM) Stanowi fundament segmentacji w handlu detalicznym:

  1. Recency: Liczba dni od ostatniego zakupu (Miernik aktywności klienta).
  2. Frequency: Całkowita liczba unikalnych zamówień.
  3. Monetary_Total: Łączna wartość przychodów wygenerowana przez klienta.

B. Wymiar Finansowy

  1. Avg_Basket_Value: Średnia wartość zamówienia (AOV). Pozwala odróżnić klientów kupujących rzadko, ale drogo, od tych kupujących często w mniejszych ilościach.
  2. Coupon_Ratio: Odsetek zamówień z użyciem kodu rabatowego. Odróżnia “łowców okazji” od klientów kupujących w pełnej cenie.

C. Wymiar Czasu i Lojalności

  1. Tenure: Staż klienta w dniach (od pierwszego zakupu). Kluczowy do odróżnienia nowych klientów od lojalnych, powracających klientów.
  2. Avg_Time_Between: Średni odstęp czasu (w dniach) między kolejnymi zakupami. Mierzy regularność powrotów.

D. Wymiar Produktu i Stylu

  1. Basic_Color_Share: Udział produktów w kolorach klasycznych (czarny, granat, brązowy) w całym koszyku (ważony liczbą sztuk). Pozwala wyodrębnić klientów zachowawczych od osób poszukujących modowych nowości.
  2. Top_Category_Share: Stopień koncentracji na jednej kategorii. Określa, czy klient kupuje tylko jeden typ asortymentu (np. przychodzi wyłącznie po spodnie lniane), czy próbuje różnych kategorii produktów.
  3. Model_Variety: Średnia liczba unikalnych modeli na zamówienie. Mierzy różnorodność wewnątrz zamówienia. Odróżnia klienta, który szuka stylu i zamawia różne fasony do przymiarki, od klienta, który kupuje “na zapas” wiele sztuk tego samego, sprawdzonego modelu.

Uwaga metodologiczna: Zmienne Monetary_Profit oraz Total_Discount zostały wyliczone w celach diagnostycznych, aby zbadać anomalie i wykluczyć błędne rekordy. Nie będą one jednak użyte bezpośrednio w modelu klastrowania PCA.

Podgląd przykładowych profili klienta
client_id Recency Frequency Monetary_Total Avg_Basket_Value Coupon_Ratio Tenure Avg_Time_Between Basic_Color_Share Top_Category_Share Model_Variety Monetary_Profit Total_Discount
C_00001 1793.15 1 199 199.0 0 1793.15 110.10 0 1.0 1 73 79
C_00002 1792.91 1 278 278.0 0 1792.91 110.10 1 1.0 1 152 0
C_00003 1792.88 1 139 139.0 1 1792.88 110.10 1 1.0 1 22 139
C_00004 61.17 2 537 268.5 0 1792.60 865.71 0 0.5 1 295 179
C_00005 315.81 2 616 308.0 0 1792.58 738.39 1 1.0 1 391 0

3 Analiza Eksploracyjna (EDA) i Weryfikacja Jakości Danych

Przed przystąpieniem do właściwego modelowania (K-Means i PCA), konieczne jest dogłębne zrozumienie struktury zgromadzonych danych. Etap Analizy Eksploracyjnej (Exploratory Data Analysis) w niniejszym projekcie realizuje cztery kluczowe cele badawcze:

  1. Weryfikacja jakości technicznej: Sprawdzenie kompletności danych (braki) oraz identyfikacja błędów systemowych (np. ujemne marże).
  2. Ocena rozkładów zmiennych: Zbadanie skośności (skewness) cech finansowych i behawioralnych.
  3. Analiza współliniowości: Zbadanie macierzy korelacji w celu identyfikacji redundancji informacji. Silna korelacja między zmiennymi jest niepożądana w klasycznym klastrowaniu, ale stanowi główne uzasadnienie dla zastosowania redukcji wymiarów metodą PCA.
  4. Potwierdzenie klastrowalności: Wykonanie testu Hopkinsa oraz wizualna ocena uporządkowanej macierzy niepodobieństwa, aby udowodnić, że w danych istnieją naturalne skupiska, a nie jedynie losowy szum.

3.1 Analiza Braków Danych (Missing Values)

Pierwszym krokiem jest upewnienie się, że proces agregacji zmiennych nie wygenerował pustych wartości (np. w wyniku dzielenia przez zero przy obliczaniu średnich). Algorytmy PCA i K-Means nie obsługują braków danych (NA), dlatego ich ewentualne wystąpienie wymagałoby imputacji lub usunięcia rekordów.

# Sprawdzenie liczby NA w każdej kolumnie
na_count <- colSums(is.na(customer_features))

# Wyświetlenie tylko tych kolumn, gdzie są braki
na_table <- data.frame(Brakujace_Wartosci = na_count[na_count > 0])

if(nrow(na_table) > 0) {
  kable(na_table, caption = "Zmienne z brakującymi danymi")
} else {
  print("Brak pustych wartości (NA) w zbiorze danych.")
}
## [1] "Brak pustych wartości (NA) w zbiorze danych."

3.2 Analiza Rozkładów i Skośności

W danych transakcyjnych e-commerce typowym zjawiskiem jest występowanie rozkładów potęgowych (Zasada Pareto), gdzie wąska grupa klientów generuje większość przychodu. Poniższa analiza ma na celu zidentyfikowanie zmiennych o silnej asymetrii prawostronnej. Większość algorytmów klastrujących opartych na odległościach (w tym K-Means) zakłada zbliżony do normalnego rozkład zmiennych. Silna prawoskośność będzie przesłanką do zastosowania transformacji logarytmicznej.

Statystyki opisowe: Skośność (Skew > 1 sugeruje logarytmizację)
skew min max mean median
Total_Discount 7.0003230 0.0000000 4228.2900 78.5638479 0.0000
Monetary_Total 4.1180340 0.0000000 17913.7600 809.7069586 547.0000
Monetary_Profit 3.9876772 -757.0000000 10561.7600 483.5363475 299.0000
Avg_Basket_Value 3.9795814 0.0000000 5145.0000 404.6437203 338.0000
Frequency 3.4148976 1.0000000 27.0000 1.9946285 1.0000
Avg_Time_Between 2.7769572 0.0000289 865.7123 127.8935019 110.1015
Model_Variety 2.5847603 0.2000000 6.0000 1.1349470 1.0000
Coupon_Ratio 1.1230264 0.0000000 1.0000 0.2475777 0.0000
Recency 0.8175334 1.0000000 1793.1457 548.5515245 325.0695
Tenure 0.2891898 1.0148148 1793.1457 763.7440729 677.7514
Basic_Color_Share -0.3251042 0.0000000 1.0000 0.5815054 0.6250
Top_Category_Share -0.5326350 0.1111111 1.0000 0.7698856 1.0000

Interpretacja wyników analizy statystycznej:

Przeprowadzona analiza statystyk opisowych potwierdza występowanie silnej asymetrii prawostronnej dla kluczowych zmiennych ilościowych. Jest to zjawisko charakterystyczne dla danych transakcyjnych, gdzie większość klientów przyjmuje niskie wartości cech, a wąska grupa liderów generuje wartości ekstremalne.

Kluczowe obserwacje:

  1. Zmienne Finansowe i Wolumenowe: Najwyższą skośność odnotowano dla Total_Discount (7.00) oraz Monetary_Total (4.12). Również Frequency (3.41) wskazuje na silny “długi ogon” – mediana wynosi 1.0, co oznacza, że typowy klient dokonał tylko jednego zakupu, podczas gdy rekordzista aż 27.
  2. Odchylenia od normy: Zmienne takie jak Avg_Basket_Value (3.98) oraz Avg_Time_Between (2.78) również znacząco przekraczają próg skośności 1.0. Pozostawienie ich w surowej formie spowodowałoby, że algorytm K-Means byłby niestabilny i zdominowany przez wartości odstające.
  3. Zmienne Strukturalne: Co ciekawe, zmienne udziałowe wykazują lekką skośność ujemną (lewostronną), np. Top_Category_Share (-0.53) z medianą 1.0. Oznacza to, że większość klientów kupuje produkty tylko z jednej kategorii, a mniejszość ma koszyki zróżnicowane.

Decyzja metodyczna:

W celu przygotowania danych do modelowania, dla wszystkich zmiennych o skośności bezwzględnej \(> 1\) (tzn. Monetary, Frequency, Avg_Basket, Discount, Time_Between, Model_Variety) zastosowana zostanie transformacja logarytmiczna (log1p).

Zmienne o niższej skośności (Recency, Tenure) oraz udziały procentowe (Share) zostaną poddane jedynie standaryzacji, ponieważ ich rozkłady są wystarczająco zbliżone do symetrycznych lub ich natura (ograniczenie 0-1) nie wymaga logarytmowania.


3.3 Detekcja Anomalii (Scatter Plots)

Mimo wstępnego odfiltrowania znanych kont technicznych, weryfikujemy bazę pod kątem anomalii biznesowych, które mogłyby zniekształcić profilowanie segmentów.

Analizowane relacje:

  1. Rentowność (Przychód vs Zysk): Oczekujemy silnej korelacji dodatniej. Punkty znajdujące się poniżej zera na osi Y oznaczają klientów generujących stratę (np. zakupy przez bony rabatowe, reklamacje, błędy).
  2. Polityka Rabatowa (Przychód vs Rabaty): Poszukujemy punktów o nienaturalnie wysokim udziale rabatów przy niskim przychodzie, co może sugerować pominięcie któregoś z technicznych kont we wstępnej korekcie.

Interpretacja wyników detekcji anomalii

Wizualna analiza relacji między sumą udzielonych rabatów a przychodem całkowitym pozwoliła na zidentyfikowanie specyficznych grup rekordów wykraczających poza standardowy profil klienta detalicznego. Szczególną uwagę zwracają:

  • Punkty pod granicą rentowności: Rekordy, gdzie koszty (w tym logistyka i zwroty) przewyższyły przychód.
  • “Kominy” rabatowe: Punkty skupione wzdłuż osi Y, reprezentujące ekstremalnie wysokie wartości rabatów przy znikomym przychodzie.

3.4 Manualne Czyszczenie Danych i Selekcja Zmiennych

Na podstawie powyższej diagnozy podjęto decyzję o wykluczeniu ze zbioru danych klientów, dla których wskaźnik Monetary_Profit przyjął wartości mniejsze lub równe zero. Działanie to wynika z następujących przesłanek:

  1. Eliminacja szumu i błędów systemowych: Skrajne anomalie (wspomniane “kominy” na osi Y) zostaną usunięte wraz z rekordami o ujemnym zysku. Często są one wynikiem błędów w procesowaniu danych lub nadużyć systemów promocyjnych, które nie reprezentują realnego zachowania zakupowego.
  2. Skupienie na potencjale zakupowym: Głównym celem projektu jest zrozumienie zachowań klientów generujących realną wartość. Klienci o ujemnym bilansie nie wpisują się w standardowy cykl życia klienta e-commerce, lecz reprezentują sytuacje nadzwyczajne (pełne zwroty, reklamacje).
  3. Stabilność algorytmu: Skrajne outliery (sięgające nawet -757.00 jednostek zysku) znacząco przesunęłyby środki ciężkości klastrów. Usunięcie ich pozwala na uzyskanie bardziej granularnego i biznesowo użytecznego podziału pozostałej, zdrowej części bazy.

W wyniku filtracji końcowy zbiór danych pozwala na rzetelną ocenę zaangażowania i lojalności, opierając się na sprawdzonych metrykach finansowych i czasowych.

## Liczba klientów przed weryfikacją: 18803
## Liczba klientów po usunięciu anomalii: 18575
## Usunięto rekordów: 228

3.5 Analiza Korelacji Zmiennych

Jednym z głównych założeń klasycznego algorytmu K-Means jest niezależność zmiennych. Silna korelacja liniowa między cechami prowadzi do zjawiska “double counting” (nadmiernego ważenia tych samych informacji), co zniekształca wyniki segmentacji.

Analiza Macierzy Korelacji: Poniższy wykres prezentuje siłę powiązań między zmiennymi.

Interpretacja macierzy korelacji

Analiza macierzy korelacji Pearsona ujawniła kilka kluczowych zależności, które determinują strukturę zbioru danych i uzasadniają potrzebę redukcji wymiarów (PCA):

  1. Silna współliniowość transakcyjna (Blok RFM):
    • Bardzo wysoka korelacja między Frequency a Monetary_Total (0.84) potwierdza, że łączny obrót jest niemal bezpośrednią funkcją liczby transakcji.
    • Korelacja między Recency a Tenure (0.71) wskazuje na istotny związek czasowy - to spodziewany wynik, ponieważ większość klietntów składała jedno zamówienie (mediana Frequency to 1) stąd mają oni takie samo Recencyoraz Tenure.
  2. Dominująca rola Jakości Koszyka:
    • Avg_Basket_Value wykazuje korelację z Monetary_Total (0.42) oraz z Model_Variety (0.68). Potwierdza to logiczną strukturę: klienci generujący wysoki obrót to często osoby kupujące wiele różnych modeli w ramach jednego zamówienia, co czyni “wartość koszyka” kluczowym predyktorem wartości klienta.
  3. Paradoks Specjalizacji (Top_Category_Share):
    • Zauważono silną ujemną korelację (ok. -0.60) między udziałem głównej kategorii a wskaźnikami aktywności (Frequency, Monetary).
    • Interpretacja: Wynika to z faktu, że klienci o niskiej aktywności (np. tylko jeden zakup) wykazują 100% koncentracji na jednej kategorii. Wraz ze wzrostem zaangażowania, koszyk klienta staje się bardziej zdywersyfikowany.
  4. Zmienne niezależne:
    • Zmienne takie jak Color_Share oraz Coupon_Ratio wykazują śladowe korelacje z pozostałymi metrykami. Sugeruje to, że preferencje kolorystyczne oraz wrażliwość na promocje są cechami indywidualnymi, niezależnymi od skali wydatków klienta.

Wniosek metodologiczny: Obecność tak silnych korelacji (powyżej 0.7 i 0.8) oznacza, że surowe dane wprowadzane do modelu klastrowania byłyby obciążone powtarzającymi się informacjami. Zastosowanie PCA pozwoli na ortogonalizację tych wymiarów i budowę stabilniejszego i bardziej obiektywnego modelu segmentacyjnego.


3.6 Ocena Tendencji do Klastrowania (Hopkins & Macierz niepodobieństwa)

Ostatnim krokiem przed modelowaniem jest weryfikacja hipotezy, że badany zbiór danych w ogóle posiada strukturę grupową. Klastrowanie danych o rozkładzie jednostajnym (losowym) prowadziłoby do fałszywych wniosków.

W tym celu wykorzystano dwie metody:

  1. Statystyka Hopkinsa (H): Mierzy prawdopodobieństwo, że dane pochodzą z rozkładu jednostajnego.
    • \(H \approx 0.5\): Dane losowe.
    • \(H > 0.7\): Wysoka tendencja do klastrowania.
  2. Macierz niepodobieństwa: Wizualna ocena uporządkowanej macierzy niepodobieństwa.
# Pobieramy próbkę i skalujemy ją (wymóg algorytmu Hopkinsa)
df_sample <- customer_features %>%
  select(where(is.numeric)) %>%
  sample_n(min(nrow(.), 1000)) %>%
  scale()

# Obliczenie statystyki Hopkinsa i macierz niepodobieństwa
res <- get_clust_tendency(df_sample, n = nrow(df_sample)-1, graph = TRUE)

cat("Statystyka Hopkinsa (H):", round(res$hopkins_stat, 4))
## Statystyka Hopkinsa (H): 0.9123
# Macierz niepodobieństwa
print(res$plot + labs(title = "Macierz niepodobieństwa", 
                      subtitle = "Czerwone bloki na przekątnej = Klastry"))

Interpretacja wyników tendencji do klastrowania

Wyniki obu testów jednoznacznie potwierdzają wysoką jakość zbioru danych pod kątem klastrowania:

  1. Statystyka Hopkinsa: Uzyskany wynik \(H = 0.90\) znacząco przekracza teoretyczny próg losowości (0.5) oraz próg wysokiej tendencji (0.7). Oznacza to, że dane są w 90% „nie-losowe” i posiadają bardzo silną, naturalną strukturę skupisk. Jest to silny dowód statystyczny na to, że algorytmy K-Means i PCA będą operować na rzeczywistych wzorcach zachowań klientów, a nie na losowym szumie.

  2. Uporządkowana Macierz Niepodobieństwa): Na wygenerowanej mapie ciepła widoczne są wyraźne, ciemne bloki wzdłuż głównej przekątnej.

    • Interpretacja wizualna: Każdy ciemny kwadrat odpowiada grupie klientów, którzy są do siebie bardzo podobni (mała odległość euklidesowa), a jednocześnie znacząco różnią się od pozostałych grup.

Podsumowanie etapu EDA: Zakończona Analiza Eksploracyjna potwierdziła, że dane są:

  • Czyste technicznie (brak NA, usunięte anomalie finansowe),
  • Odpowiednio przygotowane (zidentyfikowana potrzeba logarytmizacji w preprocessingu),
  • Wysoce klastrowalne (\(H = 0.9\)).

Z tak przygotowanym fundamentem merytorycznym możemy przejść do właściwego modelowania.


4 Modelowanie: Segmentacja Referencyjna (RFM)

Zakończony etap analizy eksploracyjnej (EDA) potwierdził, że dane posiadają strukturę klastrowalną, ale wymagają transformacji ze względu na silną skośność.

Przed zastosowaniem zaawansowanego podejścia wielowymiarowego (PCA), w pierwszej kolejności zbudujemy Model Referencyjny oparty na klasycznej analizie RFM (Recency, Frequency, Monetary). Model ten posłuży jako punkt odniesienia do oceny, czy późniejsze dodanie zmiennych behawioralnych i redukcja wymiarów (PCA) faktycznie wnosi nową jakość w profilowaniu klientów.

4.1 Przygotowanie danych dla modelu RFM

Algorytm K-Means, jako metoda oparta na odległościach euklidesowych, jest wrażliwy na rzędy wielkości zmiennych. Surowe dane RFM nie mogą zostać użyte bezpośrednio, ponieważ:

  1. Różne skale: Zmienna Monetary_Total (wartości w tysiącach) zdominowałaby zmienną Frequency (pojedyncze sztuki), sprawiając, że klastrowanie odbywałoby się de facto tylko po przychodzie.
  2. Skośność: Zidentyfikowana w sekcji 3.2 skośność rozkładu wymaga transformacji logarytmicznej, aby ustabilizować wariancję i zbliżyć rozkłady do normalnych.
# 1. Selekcja zmiennych do modelu RFM
rfm_features <- c("Recency", "Frequency", "Monetary_Total")

# Tworzymy podzbiór danych tylko z tymi kolumnami
df_rfm_raw <- df_cleaned %>%
  select(all_of(rfm_features))

# 2. Transformacja Logarytmiczna (log1p)
df_rfm_log <- df_rfm_raw %>%
  mutate(across(everything(), log1p))

# 3. Standaryzacja (Z-score scaling)
df_rfm_scaled <- scale(df_rfm_log) %>% 
  as.data.frame()

# 4. Weryfikacja przygotowania danych
summary_stats <- describe(df_rfm_scaled) %>%
  select(mean, sd, min, max, skew)

kable(summary_stats, digits = 2, 
      caption = "Statystyki opisowe zmiennych RFM po logarytmizacji i standaryzacji")
Statystyki opisowe zmiennych RFM po logarytmizacji i standaryzacji
mean sd min max skew
Recency 0 1 -3.56 1.33 -0.80
Frequency 0 1 -0.72 5.61 1.46
Monetary_Total 0 1 -3.25 4.60 0.74

4.2 Dobór optymalnej liczby klastrów (\(k\))

W zastosowaniu algorytmu K-Means wybór parametru \(k\) (liczby klastrów) jest decyzją krytyczną – zbyt mała liczba zatraci niuanse behawioralne, a zbyt duża doprowadzi do nadmiernego rozdrobnienia grup.

Aby podjąć decyzję w sposób obiektywny, zastosujemy dwie komplementarne heurystyki:

  1. Metoda Łokcia (Elbow Method): Polega na analizie zmienności wewnątrzklastrowej (Total Within Sum of Squares - WSS). Szukamy punktu “przegięcia” wykresu, gdzie dodanie kolejnego klastra przestaje istotnie zmniejszać wariancję (zysk informacyjny maleje).
  2. Metoda Sylwetki (Silhouette Method): Mierzy jakość dopasowania, sprawdzając, jak bardzo obiekt jest podobny do własnego klastra w porównaniu do klastrów sąsiednich. Szukamy globalnego maksimum średniej szerokości sylwetki.

4.3 Implementacja Algorytmu K-Means (k=4)

Na podstawie analizy wykresów osypiska i sylwetki, ustalono optymalną liczbę klastrów na poziomie \(k=4\). Taki podział zapewnia równowagę między precyzją segmentacji a użytecznością biznesową.

Poniższy kod uruchamia algorytm K-Means na przygotowanych danych, a następnie profiluje wyodrębnione segmenty, obliczając średnie wartości rzeczywiste (przed transformacją) dla każdej grupy.

# Ziarno dla powtarzalności wyników
set.seed(123)

# 1. Uruchomienie algorytmu K-Means
rfm_kmeans <- kmeans(df_rfm_scaled, centers = 4, nstart = 25)

# 2. Wizualizacja Klastrów
fviz_cluster(rfm_kmeans, data = df_rfm_scaled,
             geom = "point",
             ellipse.type = "convex", 
             ggtheme = theme_minimal(),
             main = "Wizualizacja Segmentów RFM (k=4)")

# 3. Przypisanie klastrów do oryginalnych danych
df_rfm_results <- df_cleaned %>%
  mutate(Cluster_RFM = as.factor(rfm_kmeans$cluster))

# 4. Profilowanie Segmentów (Interpretacja Biznesowa)
# Obliczamy średnie dla R, F, M w każdym klastrze
rfm_summary <- df_rfm_results %>%
  group_by(Cluster_RFM) %>%
  summarise(
    Liczba_Klientow = n(),
    Udzial_Proc = n() / nrow(.) * 100,
    Sredni_Recency = mean(Recency, na.rm=TRUE),
    Srednia_Frequency = mean(Frequency, na.rm=TRUE),
    Srednie_Monetary = mean(Monetary_Total, na.rm=TRUE)
  ) %>%
  arrange(desc(Srednie_Monetary))

# Wyświetlenie tabeli
kable(rfm_summary, digits = 1, caption = "Charakterystyka wyodrębnionych segmentów (RFM)")
Charakterystyka wyodrębnionych segmentów (RFM)
Cluster_RFM Liczba_Klientow Udzial_Proc Sredni_Recency Srednia_Frequency Srednie_Monetary
4 2654 14.3 142.6 5.3 2308.8
2 4632 24.9 558.0 2.3 960.0
3 3304 17.8 64.0 1.3 560.7
1 7985 43.0 874.4 1.0 345.4

4.4 Interpretacja klastrów - RFM

Analiza średnich wartości w wyodrębnionych grupach pozwala na jednoznaczną interpretację biznesową segmentów klientów.

  • Klaster 4 (Najlepsi): Grupa o najwyższym Monetary i Frequency. To najlepsi klienci generujący największy przychód.
  • Klaster 2 (Lojalna baza): Klienci “środka” – regularni, o umiarkowanym koszyku, ale z trochę większym Recency.
  • Klaster 3 (Nowi): Klienci z niskim Recency (niedawno kupili), ale niskim Frequency (większość tylko jeden zakup).
  • Klaster 1 (Utraceni): Klienci, którzy kupili raz i dawno temu (bardzo wysokie Recency).

5 Modelowanie Zaawansowane: PCA + K-Means

W tym etapie przechodzimy do weryfikacji głównej hipotezy badawczej. Wykorzystamy Analizę Głównych Składowych (PCA), aby zredukować wymiarowość zbioru danych, zachowując jednocześnie jak najwięcej informacji o niuansach zachowań klientów (nie tylko RFM)

5.1 Przygotowanie danych i Budowa Przestrzeni PCA

Do analizy PCA potrzebujemy pełnego zestawu zmiennych behawioralnych. W przeciwieństwie do modelu RFM (gdzie mieliśmy tylko 3 cechy), tutaj musimy przygotować wszystkie zmienne, które mogą różnicować klientów.

Przygotowanie danych:

  1. Selekcja: Usuwamy zmienne diagnostyczne (Monetary_Profit, Total_Discount) oraz identyfikatory (client_id).
  2. Transformacja Logarytmiczna: Ponownie aplikujemy log1p dla zmiennych o wysokiej skośności (zidentyfikowanych w EDA).
  3. Standaryzacja: Sprowadzamy wszystkie cechy do Z-scores.
# 1. Selekcja zmiennych do PCA
# Wykluczamy:
# - Zmienne diagnostyczne (Profit, Discount - zgodnie z EDA)
# - Wyniki poprzedniego modelu (Cluster_RFM)
# - Zmienne tekstowe (client_id)

cols_to_exclude <- c("client_id", "Monetary_Profit", "Total_Discount", 
                     "Cluster_RFM")

df_pca_raw <- df_cleaned %>%
  select(-any_of(cols_to_exclude)) %>%
  select(where(is.numeric)) # Dla pewności bierzemy tylko liczby

# 2. Transformacja Logarytmiczna
# Lista zmiennych do zlogarytmowania (z analizy skośności w EDA)
cols_to_log <- c("Monetary_Total", "Frequency", "Avg_Basket_Value", 
                 "Avg_Time_Between", "Model_Variety")

# Aplikujemy logarytm tylko do tych kolumn, które faktycznie są w df_pca_raw
cols_present <- intersect(cols_to_log, names(df_pca_raw))

df_pca_log <- df_pca_raw %>%
  mutate(across(all_of(cols_present), log1p))

# 3. Standaryzacja (Z-score) i Obliczenie PCA
pca_result <- prcomp(df_pca_log, center = TRUE, scale. = TRUE)

# 4. Wykres osypiska (Scree Plot)
fviz_eig(pca_result, addlabels = TRUE, ylim = c(0, 50),
         main = "Wykres osypiska (Scree Plot)",
         barfill = "steelblue", barcolor = "steelblue") +
  theme_minimal() +
  labs(x = "Główne Składowe (Dimensions)", y = "% Wyjaśnionej Wariancji")

# 5. Tabela wartości własnych (Eigenvalues)
eig_val <- get_eigenvalue(pca_result)
kable(head(eig_val, 10), caption = "Wartości własne i procent wyjaśnionej wariancji")
Wartości własne i procent wyjaśnionej wariancji
eigenvalue variance.percent cumulative.variance.percent
Dim.1 3.0948928 30.9489279 30.94893
Dim.2 1.8877370 18.8773700 49.82630
Dim.3 1.5432472 15.4324715 65.25877
Dim.4 1.0046111 10.0461109 75.30488
Dim.5 0.9845546 9.8455456 85.15043
Dim.6 0.8991058 8.9910581 94.14148
Dim.7 0.4417397 4.4173967 98.55888
Dim.8 0.0945135 0.9451349 99.50402
Dim.9 0.0475431 0.4754312 99.97945
Dim.10 0.0020553 0.0205532 100.00000

W celu wyboru optymalnej liczby głównych składowych (PC) do dalszego klastrowania, zastosowano trzy kryteria:

  1. Kryterium Eigenvalue: Wybrano składowe o wartościach własnych (eigenvalues) > 1.
  2. Kryterium wariancji skumulowanej: Dążono do wyjaśnienia około 80% całkowitej zmienności zbioru.
  3. Analiza wykresu osypiska (Scree Plot): Zidentyfikowano punkt “łokcia”, po którym zysk informacyjny z dodawania kolejnych wymiarów jest nieznaczący.

Zastosowanie 5 wymiarów pozwala na redukcję szumu informacyjnego przy jednoczesnym zachowaniu wielowymiarowego profilu klienta, wykraczającego poza proste metryki finansowe.

5.2 Interpretacja Głównych Składowych (Loadings)

Decyzja o wyborze 5 pierwszych składowych (PC1-PC5) pozwala na znaczną redukcję wymiarowości. Aby jednak segmentacja była interpretowalna biznesowo, musimy zrozumieć, jakie zmienne pierwotne budują każdy z nowych wymiarów.

W tym celu analizujemy ładunki (loadings), czyli korelacje między oryginalnymi cechami a składowymi głównymi.

Wpływ zmiennych na składowe główne (Loadings)
PC1 PC2 PC3 PC4 PC5
Recency -0.31 0.40 -0.34 -0.21 -0.31
Frequency 0.41 0.37 0.34 0.07 0.11
Monetary_Total 0.53 0.13 0.11 0.01 0.03
Avg_Basket_Value 0.37 -0.33 -0.33 -0.08 -0.09
Coupon_Ratio 0.15 0.18 0.06 -0.16 -0.50
Tenure -0.05 0.66 -0.26 0.01 0.00
Avg_Time_Between 0.00 0.17 -0.39 0.44 0.59
Basic_Color_Share -0.02 -0.04 0.02 0.85 -0.51
Top_Category_Share -0.49 -0.17 0.10 0.02 0.06
Model_Variety 0.24 -0.20 -0.64 -0.06 -0.13

Szczegółowa analiza macierzy rotacji oraz wkładów zmiennych w wymiary pozwoliła na zidentyfikowanie natury nowych wymiarów, w których będziemy klastrować klientów:

  1. PC1: Skala i Zaangażowanie: Silnie skorelowane z Monetary, Frequency oraz Avg_Basket_Value. Co ciekawe, PC1 jest ujemnie powiązane z Top_Category_Share. Potwierdza to, że duzi klienci dywersyfikują koszyk, podczas gdy klienci o niskiej wartości skupiają się na pojedynczych produktach (100% udziału w jednej kategorii).
  2. PC2: Cykl Życia i Lojalność: Skupia wokół siebie Tenure, Recency oraz Frequency. Ten wymiar pozwala odróżnić długofalową lojalność od chwilowych skoków aktywności.
  3. PC3: Złożoność Koszyka: Tu kluczową rolę odgrywają Model_Variety oraz Avg_Time_Between. Wymiar ten opisuje “rytmiczność” i różnorodność zakupów.
  4. PC4 & PC5: Styl i Wrażliwość Promocyjna: To tutaj po raz pierwszy silnie zaznaczają się zmienne behawioralne: Basic_Color_Share, Avg_Time_Between oraz Coupon_Ratio. Są to wymiary opisujące “charakter” zakupów, których klasyczny model RFM zupełnie nie dostrzega.

5.3 Dobór liczby klastrów dla modelu PCA

Mając zdefiniowane 5 głównych składowych (PC1-PC5), które niosą ze sobą zarówno informacje finansowe, jak i stylowe, musimy wyznaczyć nową optymalną liczbę segmentów.

Analiza wskaźników heurystycznych nie dała jednoznacznego rozstrzygnięcia – wyniki nie sugerują optymalnej liczby klastrów. W sytuacjach, gdy metody graficzne nie są konkluzywne, konieczne jest zastosowanie rygorystycznych testów statystycznych. Zdecydowano, biorąc pod uwagę wcześniejsze wyniki, że optymalna struktura leży gdzieś na pograniczu 4 i 5 grup.

Statystyczna weryfikacja: Test Duda-Hart

W związku z brakiem jednoznaczności, do podjęcia ostatecznej decyzji wykorzystano test Duda-Hart. Jest to formalna procedura sprawdzająca, czy dany klaster powinien zostać podzielony na dwa subklastry:

  • Hipoteza Zerowa (\(H_0\)): Klaster jest jednorodny (brak potrzeby podziału).
  • Hipoteza Alternatywna (\(H_1\)): Klaster jest niejednorodny (rekomendowany podział na dwa mniejsze klastry).
# Ziarno dla powtarzalności wyniku
set.seed(123)

# Uruchomienie obu modeli
pca_k4 <- kmeans(pca_data_for_clustering, centers = 4, nstart = 25)
pca_k5 <- kmeans(pca_data_for_clustering, centers = 5, nstart = 25)

# Test Duda-Hart dla przestrzeni 

dh_test <- dudahart2(pca_data_for_clustering, pca_k4$cluster)

# Wynik dh_test$cluster1 == FALSE oznacza rekomendację podziału (odrzucenie H0)
print(dh_test)
## $p.value
## [1] 0
## 
## $dh
## [1] 0.2129757
## 
## $compare
## [1] 0.8595495
## 
## $cluster1
## [1] FALSE
## 
## $alpha
## [1] 0.001
## 
## $z
## [1] 3.090232

Decyzja o wyborze wariantu k=5 została podjęta na podstawie odrzucenia hipotezy zerowej (wynik cluster1 = FALSE). Stanowi to statystyczne potwierdzenie, że dodatkowy podział bazy ujawnia istotne i odrębne wzorce zachowań, które w modelu o mniejszej liczbie klastrów pozostałyby ukryte. Jednakże, wciąż zbudowany zostanie model z 4 klastrami w celu sprawdzenia czy wprowadzenie dodatkowego klastra było słuszną decyzją.

5.4 Implementacja i Porównanie Wariantów (k=4 vs k=5)

5.4.1 Profilowanie Porównawcze (Średnie Cechy)

Poniżej zestawiono charakterystykę segmentów dla obu wariantów. Pozwoli to ocenić, czy dodanie piątego klastra wyodrębnia nową, logiczną grupę biznesową, czy jedynie rozbija istniejące grupy bez wyraźnego zysku informacyjnego. Tabele poniżej przedstawiają podział klientów na segmenty i średnie wartości zmiennych w tych segmentach.

TABELA 1: Profil segmentów PCA (k=4)
Cluster_PCA_4 Liczba Udzial Monetary Frequency Recency Coupon_Ratio Model_Variety Basic_Color Top_Category Tenure AOV Avg_Time_Between
2 4260 22.93 1703.80 4.32 286.32 0.38 1.02 0.57 0.48 1057.58 389.33 206.73
1 2737 14.73 1101.92 1.48 494.66 0.31 2.06 0.57 0.49 607.70 745.47 117.69
3 6716 36.16 478.81 1.30 253.19 0.13 0.95 0.60 0.93 281.17 369.96 94.00
4 4862 26.17 348.69 1.23 1209.86 0.25 0.98 0.58 0.95 1260.89 287.02 112.54
TABELA 2: Profil segmentów PCA (k=5)
Cluster_PCA_5 Liczba Udzial Monetary Frequency Recency Coupon_Ratio Model_Variety Basic_Color Top_Category Tenure AOV Avg_Time_Between
1 3888 20.93 1728.95 4.39 291.73 0.36 1.04 0.57 0.48 1127.17 388.49 223.58
2 2504 13.48 1078.74 1.42 505.51 0.30 2.11 0.57 0.49 623.25 758.31 126.28
3 2135 11.49 955.73 2.40 315.65 0.37 0.88 0.57 0.67 369.37 397.95 21.59
5 5554 29.90 396.35 1.09 275.74 0.09 0.99 0.61 0.98 302.76 366.69 114.13
4 4494 24.19 338.23 1.20 1235.19 0.25 0.98 0.57 0.96 1284.87 285.61 114.78

5.4.2 Wizualizacja segmentów: Wykres Profilowy

Aby dokonać ostatecznej charakterystyki biznesowej każdego segmentu i ułatwić interpretacje wyników przez ich wizualizację, zastosowano technikę Snake Plot. Metoda ta polega na standaryzacji wszystkich zmiennych do wspólnej skali (\(Z\)-score), gdzie:

  • 0 oznacza średnią dla całej populacji.
  • Wartości dodatnie oznaczają natężenie cechy powyżej średniej.
  • Wartości ujemne oznaczają natężenie cechy poniżej średniej.

Wizualizacja ta pozwala na bezpośrednie porównanie zmiennych o różnych jednostkach (np. kwoty w PLN, czas w dniach, udziały w %) i błyskawiczne zidentyfikowanie wyróżników każdego klastra.

5.5 Profilowanie i Interpretacja Biznesowa Segmentów (PCA k=5)

Analiza średnich wartości cech w połączeniu z liczebnością grup pozwoliła na zidentyfikowanie 5 wyrazistych archetypów klientów. Model PCA, dzięki uwzględnieniu zmiennych behawioralnych (kupony, styl, staż), skutecznie rozróżnił typy klientów na wczesnym etapie cyklu życia i dokładniej odseparował utraconych klientów.

Poniżej przedstawiono szczegółową charakterystykę wyodrębnionych segmentów wraz z ich udziałem w bazie (\(N=18 576\)):

Klaster 1: Champions (Stała Elita)

  • Liczebność: 3 888 klientów (20.9%)
  • Charakterystyka: Liderzy pod względem wartości (Monetary ~1728 PLN) i częstotliwości (Frequency ~4.4).
  • Wyróżnik behawioralny: Długi staż (Tenure) połączony z regularnością.
  • Interpretacja: Fundament przychodowy sklepu. Klienci lojalni, którzy znają asortyment i wracają regularnie (np. po nowości lub by odświeżyć garderobę). Nie wymagają agresywnych zachęt cenowych, lecz docenienia i utrzymania relacji (retencja).

Klaster 2: Occasional Big Spenders (Zasobni Okazjonalni)

  • Liczebność: 2 504 klientów (13.5%)
  • Charakterystyka: Specyficzna grupa o wysokiej wartości koszyka, ale umiarkowanej częstotliwości (ok. 1.4).
  • Wyróżnik behawioralny: Wysoka różnorodność modeli (Model_Variety) przy rzadkich wizytach.
  • Interpretacja: Klienci “koszykowi”, którzy robią zakupy rzadko (np. sezonowo), ale za duże kwoty, kupując wiele produktów na raz.

Klaster 3: Fresh Enthusiasts (Wschodzące Gwiazdy)

  • Liczebność: 2 135 klientów (11.5%)
  • Charakterystyka: Nowi klienci (krótkie Tenure), którzy w krótkim czasie złożyli już 2-3 zamówienia.
  • Wyróżnik behawioralny: Częste zamówienia (najmniejsze Avg_Time_Between) przy krótkim stażu.
  • Interpretacja: Grupa “złapana” skutecznie marketingiem. W przeciwieństwie do grupy New Passive, ci klienci są bardzo aktywni i wrażliwi na promocje. To oni najszybciej konwertują do segmentu Champions, jeśli podtrzyma się ich zaangażowanie odpowiednią ofertą rabatową.

Klaster 4: Lost (Utraceni)

  • Liczebność: 4 495 klientów (24.2%)
  • Charakterystyka: Klienci z bardzo wysokim recency (> 3 lata) i niskim frequency.
  • Wyróżnik behawioralny: Brak aktywności.
  • Interpretacja: “Martwa” część bazy. Historyczni klienci, którzy nie wykazują żadnych oznak powrotu. Z biznesowego punktu widzenia grupa ta nie wymaga działań aktywizacyjnych, a jedynie monitoringu (lub archiwizacji).

Klaster 5: New Passive (Nowi / Jednorazowi)

  • Liczebność: 5 554 klientów (29.9%) – Największa grupa
  • Charakterystyka: Klienci o najkrótszym stażu, z jednym zamówieniem i niskim recency.
  • Wyróżnik behawioralny: Ekstremalnie niskie użycie kuponów (Coupon_Ratio ~ 0.09) oraz wysoka koncentracja kategorii (0.98).
  • Interpretacja: Są to klienci, którzy trafili do sklepu niedawno, kupili jedną konkretną rzecz “na próbę” (często płacąc pełną cenę) i jeszcze nie wrócili. Nie korzystają z rabatów, bo mogą nie być świadomi programu lojalnościowego. To grupa o dużym, ale “uśpionym” potencjale.

Analiza Porównawcza Wariantów: Co tracimy przy k=4?

Porównanie charakterystyk segmentów w modelach PCA dla \(k=4\) i \(k=5\) ujawniło istotne różnice w interpretacji “nowych” klientów.

Analiza przepływów między modelami wskazuje na stabilność grup skrajnych (Champions, Lost, Big Spenders), ale demonstruje utratę krytycznej informacji behawioralnej w środkowej części bazy przy wyborze mniejszej liczby klastrów.

Mapowanie grup (\(k=4\) vs \(k=5\)):

  1. Grupy Stabilne (Bez zmian):
    • Klaster 2 (\(k=4\)) odpowiada niemal w 100% grupie Champions (\(k=5\)).
    • Klaster 1 (\(k=4\)) to odpowiednik Occasional Big Spenders (\(k=5\)).
    • Klaster 4 (\(k=4\)) to tożsama grupa Lost (\(k=5\)).
  2. Grupa Problematyczna (Fuzja):
    • Klaster 3 w modelu \(k=4\) obejmuje razem wszystkich nowych klientów (z niskim Recency i Tenure). Model \(k=5\) pokazał, że nowi klienci różnią się behawioralnie i podzielił ich na Fresh Enthusiasts oraz New Passive.

6 Walidacja i Ocena Jakości Segmentacji

Ostatnim etapem projektu jest kompleksowa ocena techniczna utworzonych podziałów. Proces ten podzielono na dwa kluczowe etapy:

  1. Ranking i Selekcja: Porównanie trzech konkurencyjnych podejść (RFM, PCA k=4, PCA k=5) w celu wyłonienia modelu o najlepszych parametrach statystycznych.
  2. Pogłębiona Diagnostyka: Szczegółowa weryfikacja stabilności i spójności wybranego modelu (PCA k=5).

Celem tego rozdziału jest dostarczenie twardych dowodów matematycznych uzasadniających wybór finalnej segmentacji i potwierdzenie poprawności dokonanego podziału.

6.1 Ranking Modeli (RFM vs PCA)

W celu uniknięcia błędu poznawczego wynikającego z użycia tylko jednej miary, zastosowano podejście wielokryterialne. Do stworzenia rankingu modeli (RFM \(k=4\), PCA \(k=4\), PCA \(k=5\)) wykorzystano trzy wskaźniki jakości:

  1. Indeks Calinski-Harabasz (CH): Mierzy stosunek wariancji międzygrupowej do wewnątrzgrupowej. Premiuje klastry, które są jednocześnie zwarte i odseparowane.
  2. Average Silhouette Width (Sylwetka): Ocenia “pewność” przypisania klienta do danego segmentu. Wartości bliskie 1 oznaczają bardzo dobre dopasowanie, a wartości ujemne błędną klasyfikację.
  3. Indeks Dunna: Najbardziej rygorystyczna miara separacji. Jest to stosunek najmniejszej odległości między klastrami do największej średnicy klastra. Wyższy wynik oznacza, że segmenty nie “zlewają się” ze sobą.

Zestawienie tych trzech perspektyw pozwala na obiektywny wybór modelu, który balansuje między matematyczną spójnością a złożonością struktury danych.

Kompleksowa Walidacja Modeli: Porównanie wskaźników jakości
Model Avg_Silhouette Dunn_Index Calinski_Harabasz
RFM Benchmark (k=4) 0.4168 0.00038 16161.01
PCA Wariant A (k=4) 0.2853 0.00025 6513.57
PCA Wariant B (k=5) 0.3029 0.00050 6471.06

Interpretacja Rankingu Modeli

Analiza zestawionych wskaźników jakości prowadzi do następujących wniosków dotyczących struktury badanych modeli:

1. Pozorna przewaga modelu RFM (k=4): Model referencyjny osiągnął najwyższe wartości wskaźników Calinski-Harabasz oraz Silhouette.

  • Interpretacja: Wynik ten jest artefaktem niskiej wymiarowości danych (tylko 3 zmienne). W prostej przestrzeni 3D algorytm łatwo tworzy zwarte, geometryczne skupiska. Jest to jednak spójność “matematyczna”, która nie przekłada się na głębię interpretacji biznesowej.

2. Stabilność wariantów PCA (k=4 vs k=5): Porównując modele oparte na redukcji wymiarów, obserwujemy zbliżone parametry jakościowe, z kluczowym wyróżnikiem w postaci Indeksu Dunna.

  • Calinski-Harabasz: Wyniki dla \(k=4\) (6513.57) i \(k=5\) (6471.06) są porównywalne (różnica \(<1\%\)). Oznacza to, że dodanie piątego klastra nie pogorszyło znacząco zwartości wariancji wewnątrz grup.
  • Indeks Dunna: Model PCA (k=5) osiągnął wyższy wynik tego wskaźnika niż wariant \(k=4\). Dowodzi to, że mimo większego rozdrobnienia, klastry w modelu 5-elementowym są lepiej odseparowane od siebie topologicznie (mniejsze ryzyko nakładania się grup).

Decyzja: Mimo że model RFM wygrywa w rankingach ogólnych (ze względu na prostotę), uznano słuszność wykorzystania modelu PCA (k=5). Decyzja ta podyktowana jest wyższym Indeksem Dunna (lepsza separacja trudnych przypadków) oraz wcześniejszymi wynikami testu Duda-Hart, które potwierdziły istnienie unikalnych wzorców behawioralnych, niewidocznych dla modelu 4-klastrowego.


6.2 Pogłębiona Diagnostyka Modelu PCA (k=5)

Po przeprowadzeniu segmentacji metodą PCA (\(k=5\)), poddano ją szczegółowej weryfikacji strukturalnej. Celem tego etapu jest potwierdzenie, że wypracowany podział jest stabilny geometrycznie oraz posiada cechy umożliwiające jego praktyczne zastosowanie w strategii marketingowej.

Analiza diagnostyczna została podzielona na trzy kluczowe obszary:

  1. Ocena Spójności: Wizualizacja wzajemnego położenia klastrów (Mapa 2D) oraz poprawności przypisań (Silhouette).
  2. Analiza Jednorodności Behawioralnej: Weryfikacja zwartości grup na poziomie ogólnym (Stripes) oraz rozkładu cech (Boxplots).
  3. Weryfikacja Czynników Różnicujących: Identyfikacja zmiennych o największej sile dyskryminacyjnej.

6.2.1 Wizualizacja Struktury Przestrzennej i Sylwetki Klastrów

W pierwszej kolejności oceniono separację i gęstość klastrów. Wykorzystano do tego mapę klastrów (rzut na dwie pierwsze składowe główne) oraz wykres sylwetki (Silhouette Plot), który pozwala ocenić jakość dopasowania każdego klienta do danego segmentu.

Interpretacja Wizualizacji: Geometria i Spójność

1. Mapa Klastrów (2D PCA Plot): Rzut wielowymiarowej przestrzeni na płaszczyznę dwóch pierwszych składowych ujawnia faktyczną strukturę bazy klientów.

  • Ograniczenia rzutu: Widoczne nakładanie się grup w centrum wynika z rzutowania wielowymiarowej przestrzeni na płaszczyznę 2D. Klastry są odseparowane w wymiarach PC3-PC5, których ta wizualizacja nie uwzględnia.
  • Charakter danych: Brak wyraźnych “wysp” sugeruje ciągły charakter zachowań klientów.

2. Wykres Sylwetki (Silhouette Plot): Wykres ten weryfikuje poprawność przypisania każdego klienta do jego segmentu poprzez analizę dystansu do klastra macierzystego i sąsiedniego.

  • Dominacja poprawnych przypisań: Przewaga słupków o wartościach dodatnich potwierdza, że większość klientów została przypisana do klastrów, do których są geometrycznie najbliżsi.
  • Stabilność grup “Lost” i “New Passive”: Klastry reprezentujące grupy o najniższej aktywności (często największe liczebnie w e-commerce) wykazują stabilne i szerokie sylwetki. Świadczy to o wysokiej spójności zachowań wewnątrz tych podstawowych segmentów.
  • Klienci Graniczni: Niewielka liczba wartości ujemnych wskazuje na obecność klientów o profilach hybrydowych. Z biznesowego punktu widzenia są to osoby znajdujące się w fazie przejścia między segmentami.

6.2.2 Ocena Stabilności i Zwartości (Wykres Stripes)

Jako uzupełnienie analizy sylwetkowej, zastosowano wykres pasmowy (Stripes Plot). Pozwala on zweryfikować, czy klastry są zwarte wewnątrz, czy też posiadają “rozmyte” jądra.

Analiza Stabilności i Jednorodności (Stripes Plot)

Wykres pasmowy wizualizuje odległość każdego punktu od środka ciężkości (centroidu) swojego klastra, co pozwala ocenić ich wewnętrzną spójność.

  • Wysoka jednorodność (Klaster 5 - New Passive): Najkrótszy słupek (niska wariancja) oznacza, że jest to grupa najbardziej zwarta. Klienci ci wykazują niemal identyczne wzorce zachowań (zazwyczaj pojedyncze, świeże zamówienie), co czyni ten segment bardzo przewidywalnym.
  • Naturalna wariancja (Klaster 1/2 - Big Spenders/Champions): Najwyższe słupki wskazują na największy rozrzut cech. Wynika to z faktu, że segmenty wysokowartościowe naturalnie obejmują szeroki zakres wydatków – od klientów dobrych po wybitnych (outliery). Mimo to, gęstość pasm u podstawy potwierdza istnienie stabilnego trzonu grupy.
  • Zwartość grup: Gęstość pasm blisko podstawy dla wszystkich klastrów potwierdza istnienie silnych, spójnych rdzeni w każdym z wyodrębnionych segmentów.

6.2.3 Analiza Jednorodności Cech (Boxplots)

Wykres Stripes potwierdził, że klastry są zwarte, ale nie wyjaśnił, dlaczego klienci wewnątrz nich są do siebie podobni. Aby to zrozumieć, przeanalizowano rozkłady kluczowych zmiennych biznesowych wewnątrz każdego segmentu. Poniższe wykresy pudełkowe stanowią dowód na to, że model PCA skutecznie odróżnia grupy na podstawie konkretnych atrybutów.

Wnioski z analizy rozkładów:

  • Monetary & Frequency (Siła Nabywcza): Wyraźna dominacja Klastra 1 w obu wymiarach potwierdza, że model skutecznie wyizolował elitę zakupową (“Champions”). Pudełka dla tej grupy są położone zdecydowanie najwyżej, co oznacza statystyczną odrębność od reszty bazy. W tej grupie widoczne jest też wiele wartości odstających dla obu tych zmiennych, co potwierdza przypuszczenia, że grupa najlepszych klientów jest najbardziej zróżnicowana.

  • Recency & Tenure (Aktywność i Staż): Analiza obu zmiennych ujawnia podział na klientów dojrzałych (Klastry 1, 2) oraz nowych (Klastry 3, 5). Zmienne te są też kluczowe w wyłonieniu grupy klientów Utraconych (Klaster 4). Jest to potwierdzenie, że model PCA (k=5) uwzględnił cykl życia klienta jako istotny wymiar podziału, odróżniając nowych użytkowników od stałych bywalców. Trzeba jednakże zwrócić uwagę na długie ogony, dla klastrów nowych klientów (Klastry 3, 5), które mogą oznaczać, że część klientów utraconych została błędnie przypisana jako nowi.

  • Model_Variety & Avg_Basket_Value (Eksploracja Oferty): Warto zauważyć, że Klaster 2 wyróżnia się nie tylko większymi wydatkami, ale też największą różnorodnością kupowanych produktów (najwyższa mediana Model_Variety i duża wariancja Avg_Basket_Value).

Podsumowanie diagnostyki wewnętrznej: Zarówno analiza geometryczna (Stripes), jak i analiza atrybutów (Boxplots) potwierdzają, że model PCA (k=5) jest stabilny technicznie i poprawny merytorycznie. Klastry nie są przypadkowymi skupiskami, lecz reprezentują logiczne, wytłumaczalne i odrębne typy zachowań konsumenckich.

6.2.4 Hierarchia Ważności Wymiarów (Feature Importance)

Ostatnim elementem walidacji wewnętrznej jest identyfikacja czynników, które w największym stopniu determinują strukturę klastrów. Wykorzystując funkcję FeatureImpCluster, oszacowano wpływ poszczególnych zmiennych na jakość podziału poprzez analizę wzrostu błędu klasyfikacji (misclassification rate) po ich usunięciu.

Interpretacja hierarchii czynników

  1. Dominacja Wartości (PC1 - Skala i Zaangażowanie): Zdecydowanym liderem rankingu jest składowa PC1, odpowiedzialna za skalę wydatków (Monetary) i częstotliwość (Frequency). Oznacza to, że podstawowym kryterium podziału bazy jest wartość klienta. To właśnie ten wymiar najsilniej separuje “Elitę” (Champions) od klientów jednorazowych (New Passive).

  2. Rola Czasu (PC2 - Cykl życia i Staż): Drugim kluczowym filarem jest PC2, reprezentująca cykl życia (Tenure, Recency). Jest to dowód na to, że model skutecznie rozróżnia klientów nie tylko po portfelu, ale i po stażu. Wymiar ten odpowiada za odseparowanie grupy Lost (stary staż, brak aktywności) od Fresh Enthusiasts (krótki staż, mała aktywność).

  3. Niuanse Behawioralne (PC3 i PC5): Choć składowe PC3 (Złożoność koszyka) i PC5 (Wrażliwość na promocje) mają mniejszą wagę globalną, pełnią krytyczną funkcję dostrajającą. Zmienne te są ważnymi wyróżnikami klastrów 2 i 5.

Wniosek końcowy z diagnostyki: Hierarchia ważności zmiennych potwierdza intuicję biznesową: najpierw dzielimy klientów według tego ile wydają (PC1), następnie jak długo są z nami (PC2), a na końcu doprecyzowujemy podział o styl zakupów i promocje (PC3, PC5). Taka struktura modelu gwarantuje, że segmentacja jest logiczna i operacyjna.


6.3 Walidacja Zewnętrzna: Porównanie Modeli (RFM vs PCA)

Ostatnim etapem weryfikacji jest porównanie segmentacji uzyskanej metodą PCA (\(k=5\)) z referencyjnym modelem RFM (\(k=4\)). Wykorzystano do tego skorygowany indeks Randa (ARI) oraz analizę macierzy pomyłek.

Hipoteza badawcza zakładała, że modele te nie powinny być tożsame (niskie ARI), ponieważ PCA uwzględnia wymiary behawioralne (styl zakupów, wrażliwość na promocje), które wymuszają inną logikę podziału niż same transakcje.

6.3.1 Weryfikacja Hipotezy: Kompleksowa Analiza ARI

Celem badania było potwierdzenie, że segmentacja oparta na PCA identyfikuje fundamentalnie inne wzorce zachowań niż klasyczna segmentacja RFM. Miarą tej odmienności jest wskaźnik Adjusted Rand Index (ARI).

Procedura weryfikacji przebiegała dwuetapowo:

  1. Analiza Podstawowa (Modele Optymalne): W pierwszej kolejności obliczono wskaźnik ARI dla modeli uznanych za najlepsze w swoich kategoriach (RFM \(k=4\) vs PCA \(k=5\)). Jest to wynik odzwierciedlający rzeczywistą różnicę między rekomendacjami biznesowymi obu podejść.
  2. Analiza Wrażliwości (Kontrola Wpływu Liczby Klastrów): Aby upewnić się, że ewentualny niski wynik ARI nie wynika wyłącznie z różnej liczby grup, przeprowadzono dodatkowe testy kontrolne z równą liczbą klastrów w porównywanych modelach.

Jeżeli wskaźnik ARI pozostanie niski również w testach kontrolnych, będzie to niepodważalny dowód na to, że modele te klastrują klientów według zupełnie innych kryteriów.

# Model RFM rozszerzony do k=5 - do porównania
km.rfm.forced5 <- eclust(df_rfm_scaled, "kmeans", k = 5, graph = FALSE, verbose = FALSE)

# --- OBLICZENIA ARI ---

# Scenariusz A: Optymalny (RFM 4 vs PCA 5)
ari_opt <- adjustedRandIndex(rfm_kmeans$cluster, pca_k5$cluster)

# Scenariusz B: Kontrola k=4 (RFM 4 vs PCA 4)
ari_k4  <- adjustedRandIndex(rfm_kmeans$cluster, pca_k4$cluster)

# Scenariusz C: Kontrola k=5 (RFM 5 vs PCA 5)
ari_k5  <- adjustedRandIndex(km.rfm.forced5$cluster, pca_k5$cluster)


# --- PREZENTACJA WYNIKÓW ---

results_ari <- data.frame(
  Scenariusz = c("1. Optymalny (RFM k=4 vs PCA k=5)", 
                 "2. Kontrola (RFM k=4 vs PCA k=4)", 
                 "3. Kontrola (RFM k=5 vs PCA k=5)"),
  ARI_Score = round(c(ari_opt, ari_k4, ari_k5), 3)
)

print(results_ari)
##                          Scenariusz ARI_Score
## 1 1. Optymalny (RFM k=4 vs PCA k=5)     0.268
## 2  2. Kontrola (RFM k=4 vs PCA k=4)     0.236
## 3  3. Kontrola (RFM k=5 vs PCA k=5)     0.337

Wynik liczbowy: Uzyskane wyniki są spójnie niskie (średnie \(ARI \approx 0.28\)) we wszystkich badanych scenariuszach.

Interpretacja statystyczna: Wynik ten mieści się w przedziale niskiej zgodności. Oznacza to, że podział wygenerowany przez PCA jest istotnie różny od podziału RFM, niezależnie od liczby klastrów. Nie jest to jednak wynik losowy (bliski 0), co sugeruje, że oba modele wyłapują pewne fundamentalne struktury, ale różnią się w klasyfikacji większości bazy. Jest to dowód potwierdzający zasadność użycia PCA – model ten wnosi nową informację, której brakuje w RFM.

6.3.2 Analiza Przepływów

Wskaźnik ARI potwierdził, że modele są różne, ale nie wyjaśnił na czym polegają różnice. Do tego celu wykorzystano Macierz Przepływów, która ujawnia, w których obszarach modele są zgodne, a gdzie PCA wprowadza nową, krytyczną dla biznesu granulację. Macierz ta stanowi dowód na to, że niska wartość ARI nie wynika z błędu, lecz z precyzyjniejszego “widzenia” klientów przez model PCA.

Szczegółowa dekompozycja grup RFM na segmenty PCA:

1. Stabilność Elity (Wiersz RFM 4): * Obserwacja: Grupa najlepszych klientów wg RFM (4) wykazuje bardzo wysoką zgodność z modelem PCA. Aż 2133 klientów trafiło do grupy Champions (PCA 1). * Wniosek: W przypadku klientów o ekstremalnie wysokich parametrach finansowych, oba modele działają identycznie. PCA potwierdza status VIP-ów zidentyfikowanych przez RFM, co uwiarygadnia poprawność techniczną obu metod.

2. Pułapka “Średniego Klienta” (Wiersz RFM 2): * Obserwacja: Grupa, którą RFM klasyfikował jednolicie jako “Solidni/Lojalni” (RFM 2), została przez PCA rozproszona po wszystkich 5 segmentach. Jest to najbardziej niejednorodna grupa w starym modelu. * Wniosek: RFM wrzuca do jednego worka klientów o zupełnie różnych motywacjach zakupowych, a model PCA skutecznie demaskuje tę różnorodność.

3. Dywersyfikacja “Obiecujących Nowych” (Wiersz RFM 3): * Obserwacja: Grupa RFM 3, zazwyczaj interpretowana jako “Nowi z potencjałem”, w rzeczywistości składa się z trzech radykalnie różnych typów klientów, co ujawniło PCA: * New Passive (PCA 5 - 2097 os.): Dominująca podgrupa. Kupili raz i są bierni – wymagają aktywizacji. * Occasional Big Spenders (PCA 2 - 530 os.): Klienci, którzy na start zrobili zakupy o bardzo wysokiej wartości (jakościowi). * Fresh Enthusiasts (PCA 3 - 453 os.): Klienci, którzy wpadli w wir zakupów (wysoka częstotliwość w krótkim czasie). * Wniosek: Traktowanie grupy RFM 3 jedną miarą jest błędem marketingowym. PCA pozwala od razu rozdzielić te grupy i dostosować strategię do ich profilów.

4. Rozróżnienie Źródła Nieaktywności (Wiersz RFM 1): * Obserwacja: Najsłabsza grupa RFM 1 została precyzyjnie podzielona na dwie części: * Lost (PCA 4 - 3932 os.): Klienci rzeczywiście utraceni (stare zakupy). * New Passive (PCA 5 - 3152 os.): Nowi klienci o niskiej wartości (świeże zakupy). * Wniosek: RFM nie odróżnia braku aktywności wynikającego z odejścia od braku aktywności wynikającego z bycia nowym.

Podsumowanie Walidacji: Uzyskany wynik ARI (\(0.27\)) oraz analiza przepływów potwierdzają hipotezę badawczą. Model PCA wnosi istotną wartość dodaną, dekomponując niejednorodne grupy “średnie” i “nowe” (RFM 2 i 3) na precyzyjne profile behawioralne, przy jednoczesnym zachowaniu spójności w ocenie klientów kluczowych (RFM 4).


7 Podsumowanie i Wnioski Metodologiczne

Celem badania było porównanie skuteczności klasycznej segmentacji transakcyjnej (RFM, \(k=4\)) z podejściem wielowymiarowym opartym na redukcji wymiarów (PCA, \(k=5\)). Analizę przeprowadzono na zbiorze danych e-commerce (18576 Klientów), uwzględniając w modelu PCA – poza metrykami finansowymi – zmienne behawioralne (m.in. styl, użycie kodów rabatowych, staż).

7.0.1 Weryfikacja Hipotezy Głównej

Główna hipoteza badawcza została potwierdzona. Uzyskany wynik Adjusted Rand Index (ARI) = 0.268 jednoznacznie wskazuje, że model PCA zidentyfikował w danych struktury i wzorce zachowań, które pozostawały nieuchwytne dla prostego modelu RFM. Niska zgodność między modelami dowodzi, że włączenie zmiennych opisujących cykl życia oraz jakość koszyka fundamentalnie zmienia geometrię przestrzeni klastrów.

7.0.2 Wnioski z Redukcji Wymiarowości (PCA)

Porównanie profili klastrów oraz analiza macierzy pomyłek wykazały przewagę modelu PCA w trzech krytycznych obszarach, w których model RFM wykazał tendencję do nadmiernego upraszczania:

  1. Separacja Pasywności: Model PCA skutecznie rozróżnił klientów o niskiej aktywności na Nowych Pasywnych (niedawna akwizycja) oraz Utraconych. Model RFM miał problem z rozdzieleniem tych grup - w tym pomogła najbardziej dodana zmienna Tenure.
  2. Dekompozycja “Średniego Klienta”: Grupa klientów uznawanych w RFM za jednorodnie “Lojalnych/Średnich” okazała się najbardziej zróżnicowana behawioralnie. PCA wyodrębniło z niej specyficzne podsegmenty, w tym Fresh Enthusiasts (aktywnych nowych klientów) oraz Occasional Big Spenders (kupujących rzadko, ale dużo).
  3. Wielowymiarowość Nowych Klientów: Badanie obaliło założenie o jednorodności grupy nowych klientów. Wykazano istnienie trzech odrębnych grup nowych klientów, co ma kluczowe znaczenie dla strategii retencji.
  4. Istotność zmiennych: Badanie wykazało, że zmienne ściśle atrybutowe (np. preferencje kolorystyczne) miały marginalny wpływ na finalną segmentację w porównaniu do metryk czasowych i jakościowych koszyka.

Konkluzja: Projekt udowodnił, że segmentacja behawioralna oparta na PCA jest narzędziem o znacznie wyższej precyzji analitycznej niż RFM, pozwalającym na przejście od prostego podziału ilościowego do jakościowego zrozumienia bazy klientów.