UniCredit

Inteligentny System Ostrzegania Klientów

oparty o zaawansowane modele
uczenia maszynowego

Sprawdź pipeline
scroll
Problem

Masowe alerty
NIE chronią klientów

Masowe powiadomienia niedopasowane do sytuacji i profilu odbiorcy usypiają czujność klientów. Zyskują na tym przestępcy.
Koszty ponosimy my wszyscy.

500 000 000 PLN
Tyle tracą Polacy rocznie w wyniku oszustw
mimo działających systemów alertów.
53 000 000 PLN
Średnioroczna kwota odszkodowań wypłacanych przez banki w Polsce w latach 2020–2025. Banki zwracają środki nawet gdy klient działał wbrew procedurom – alternatywą są pozwy i trwała utrata zaufania.
950 000 EUR
Roczne koszty reputacyjne i alternatywne w przeliczeniu na każde 100 000 aktywnych klientów. Składają się na nie:
  • odejścia klientów po incydentach bezpieczeństwa
  • osłabienie postrzegania banku jako bezpiecznej instytucji
  • koszty komunikacji kryzysowej i obsługi reklamacji
  • utracona sprzedaż cyfrowam którą trzeba zastąpić kosztowną sprzedażą osobistą w oddziałach banku
Etap 1
Dane

Trzy źródła danych tworzą pełny obraz klienta
przy zachowaniu pełnej anonimowości.

Dane własne banku
  • Osobowe – profil, zatrudnienie
  • Finansowe – salda, historia transakcji
  • Produktowe – posiadane produkty
  • Behawioralne – logowania, aktywność
  • Demograficzne – wiek, lokalizacja
Instytucje zewnętrzne
  • Komisja Nadzoru Finansowego
  • Biuro Informacji Kredytowej
  • Zakład Ubezpieczeń Społecznych
  • Ministerstwo Spraw Wewnętrznych
  • Krajowa Administracja Skarbowa
Pozostałe banki
  • Dane z innych banków klienta
  • Raty, odroczone płatności
  • Szersze pole widzenia transakcji
  • Wspólny cel ochrony klienta
BANK X BANK Y PSD-2
Dane anonimizowane przed wejściem do modelu
Etap 2A
Embedding

Profil każdego klienta zamieniany jest na wektory liczbowe – reprezentację zrozumiałą dla modeli ML.

Profil klienta
wiek:  | płeć:  | score:  | ryzyko: 
saldo:  | historia:  | entropia: 
aktywność:  | kanał:  | mObywatel: 
produkty:  | login:  | lts: 
Dane tabelaryczne
FT-Transformer
Model dedykowany do danych tabelarycznych
koduje zależności między cechami klienta
dzięki mechanizmowi uwagi.
Przetwarzanie
Wektor cech
[0.73, 0.12, 0.95, 0.04, 0.88, 0.31, 0.67, …]
Embedding klienta
Dlaczego FT-Transformer?
Dane bankowe są tabelaryczne i heterogeniczne: mieszanka cech numerycznych (saldo, wiek) i kategorycznych (produkt, kanał). Klasyczne MLP gubi zależności krzyżowe, a GBDT nie dostarcza embeddingów. FT-Transformer tokenizuje każdą cechę osobno i przepuszcza ją przez mechanizm uwagi – obecnie SOTA na tabular data, przewyższa XGBoost na większości benchmarków heterogenicznych i wprost daje wektor reprezentacji. → Gorishniy, Rubachev, Khrulkov, Babenko
NeurIPS · 2021
class FTTransformer(nn.Module):
    def __init__(self, n_num, n_cat, dim=192, depth=6, heads=8):
        self.num_tok = NumericalTokenizer(n_num, dim)
        self.cat_tok = CategoricalTokenizer(n_cat, dim)
        self.cls     = nn.Parameter(torch.zeros(1, 1, dim))
        self.blocks  = nn.ModuleList([
            TransformerBlock(dim, heads) for _ in range(depth)
        ])

    def forward(self, x_num, x_cat):
        tokens = torch.cat([
            self.cls.expand(x_num.size(0), -1, -1),
            self.num_tok(x_num),
            self.cat_tok(x_cat),
        ], dim=1)
        for blk in self.blocks:
            tokens = blk(tokens)
        # CLS-token → embedding klienta
        return tokens[:, 0]
Każdego klienta reprezentuje pozycja w kilkuset-wymiarowej przestrzeni. Jak porównywać te punkty? Musimy zredukować wymiarowość.
Etap 2B
Redukcja wymiarowości

UMAP zachowuje relacje między klientami, sprowadzając przestrzeń do wymiaru, w którym da się obliczać podobieństwa i szukać skupisk.

PRZESTRZEŃ WIELOWYMIAROWA
n-wymiarowe wektory klientów
n-dim UMAP ℝᴺ → ℝᵏ
PRZESTRZEŃ ZREDUKOWANA
k-wymiarowe wektory klientów (k ≪ n)
Dlaczego UMAP, a nie t-SNE czy PCA?
PCA jest liniowy – gubi wielowymiarowe interakcje, które FT-Transformer właśnie odkrył. t-SNE niszczy strukturę globalną (klastry tracą odległości względem siebie) i jest niedeterministyczny. UMAP zachowuje jednocześnie strukturę lokalną i globalną, jest ~10× szybszy od t-SNE, deterministyczny z seed-em i skaluje się do milionów punktów – warunek konieczny dla bazy klientów banku. → McInnes, Healy, Melville · arXiv:1802.03426
import umap

reducer = umap.UMAP(
    n_neighbors=30,         # balans lokalne ↔ globalne
    min_dist=0.05,          # gęstość klastrów docelowych
    n_components=8,         # docelowy wymiar k
    metric='euclidean',
    random_state=42,        # deterministyczne wyniki
)
embedding_low = reducer.fit_transform(embedding_high)
Etap 3A
Segmentacja
HDBSCAN nie zakłada z góry liczby klastrów. Szuka naturalnych skupisk, szanując strukturę i hierarchię danych wejściowych.
Każdy klient trafia do pasującego klastra
lub zostaje oznaczony jako outlier
Klastry odzwierciedlają prawdziwe zachowania
nie narzucone kategorie
Model działa dynamicznie
nowe klastry powstają wraz ze zmianą zachowań klientów
Dlaczego HDBSCAN, a nie k-means?
K-means wymaga arbitralnego k, zakłada sferyczne klastry o podobnej wielkości i nie radzi sobie z szumem. DBSCAN używa tylko jednego progu gęstości. HDBSCAN jest hierarchiczny, wykrywa klastry o różnych gęstościach, automatycznie izoluje przypadki odstające i pozwala na soft-classification nowych klientów bez retreningu. → Campello, Moulavi, Sander · PAKDD 2013
import hdbscan

clusterer = hdbscan.HDBSCAN(
    min_cluster_size=200,           # min. liczność grupy ryzyka
    min_samples=15,                 # tolerancja na szum
    cluster_selection_method='eom',   # stabilne klastry o różnej gęstości
    metric='euclidean',
    prediction_data=True,            # soft-clustering nowych klientów
)
labels = clusterer.fit_predict(embedding_low)
# labels == -1  →  outlier (niesklasyfikowany)

Które klastry są zagrożone i kiedy?

Etap 3B
Skąd to wiemy?

Mamy dane historyczne z wcześniejszych prób ataków. Transformer Hawkes Process uczy się, jakie cechy miała ofiara danego ataku oraz kiedy i w jakiej kolejności następowały zdarzenia poprzedzające kolejne fale oszustw.

Historia ataków
Atak SMS | 65+ | Wieczór | IP: Kazakhstan
Phish. inwest. | Domeny: '.org' | Net: 50k+
Fake-link | aktyw. mobilny | SR: 29% | BLIK
archiwalne dane z analiz ataków post-mortem
Transformer Hawkes Process
  • Sekwencje zdarzeń w czasie (t)
  • Cechy profilu ofiary
  • Zależności między zdarzeniami
uczenie samonadzorowane, przyczynowo-skutkowe
Sygnatura ryzyka σ̂ SMS
t_por.
0.87
revb.
0.34
net_s.
0.91
mobil.
0.22
aktyw.
0.76
Dlaczego Transformer Hawkes Process?
Klasyczne procesy Hawkesa zakładają wykładniczy zanik wpływu zdarzeń i ręcznie projektowane
kernela – prawdziwi atakujący tego nie respektują (przychodzą falami, potem robią przerwy).
LSTM-y modelują zdarzenia sekwencyjnie, ale słabo radzą sobie z długimi zależnościami. Transformer Hawkes Process zastępuje kernel mechanizmem uwagi – sam uczy się wag czasowych z danych i pokonuje RNN/LSTM o ~15% w metryce perplexity na sekwencjach zdarzeń finansowych.
Daje na wyjściu funkcję intensywności λk(t),
z której wprost odczytujemy sygnaturę σ̂. → Zuo, Jiang, Li, Zha · ICML 2020
class TransformerHawkesProcess(nn.Module):
    def __init__(self, n_types, d_model=64, n_heads=4, n_layers=4):
        self.type_emb  = nn.Embedding(n_types, d_model)
        self.time_enc  = TemporalEncoding(d_model)
        self.encoder   = TransformerEncoder(d_model, n_heads, n_layers)
        self.intensity = nn.Linear(d_model, n_types)

    def forward(self, event_types, event_times):
        h = self.type_emb(event_types) + self.time_enc(event_times)
        h = self.encoder(h, mask=causal_mask(len(h)))
        # λ_k(t) = softplus(W·h_t)  →  sygnatura σ̂
        return F.softplus(self.intensity(h))
Etap 3C
Kto jest zagrożony?

System porównuje sygnaturę wykrytego atakuprofilami wszystkich klastrów i oblicza prawdopodobieństwo zagrożenia.

Sygnatura ataku σ̂SMS
t_por.
0.87
revb.
0.34
net_s.
0.91
mobil.
0.22
aktyw.
0.76
cos θk = (σ̂ · μk) / (‖σ̂‖ · ‖μk‖)
AX-74 Młodzi, cyfrowi
0.12
BM-12 Doświadczeni, inwestorzy
0.28
CK-93 Seniorzy, ostrożni ↑ DOPASOWANIE
0.91
DP-41 Aktywni kredytobiorcy
0.45
próg decyzyjny θ = 0.82 CK-93 go przekracza
Klaster CK-93 przekracza próg decyzyjny θ.
Tylko klienci z tej grupy otrzymują spersonalizowane ostrzeżenie.
Reszta nie jest niepotrzebnie niepokojona.
Dlaczego dopasowanie cosinusowe?
Sygnatury są wysoko-wymiarowymi wektorami intensywności – w takich przestrzeniach odległość euklidesowa traci sens (curse of dimensionality, Aggarwal et al. 2001). Cosine similarity mierzy kąt między wektorami, ignorując magnitudę.
Próg θ kalibrujemy per typ ataku przez Youden's J Statistic na zbiorze walidacyjnym, optymalizując balans precision/recall pod kątem kosztu
fałszywego alarmu (~3 PLN/klienta) vs. kosztu pominięcia zagrożenia (~470 PLN/klienta). → Aggarwal, Hinneburg, Keim · ICDT 2001
Opłacalność

Koszty wdrożenia

Odszkodowania53 000 000 PLN
  • Banki komercyjne w Polsce – średnia roczna z lat 2020–2025.
  • Trend rosnący – +18% r/r, napędzany eskalacją fraudów SMS i phishingu.
Koszty reputacyjne i alternatywne950 000 EUR / 100k
  • Churn po incydentach – pozyskanie nowego klienta kosztuje 5–8× więcej niż utrzymanie.
  • Utracona sprzedaż cyfrowa – zaalarmowani klienci unikają kredytów, ubezpieczeń i nowych usług.
  • Obsługa kryzysowa – konsultanci tracą czas na skargi zamiast sprzedaży.
  • Wizerunek instytucji – każdy incydent obniża NPS; odbudowa marki trwa latami.
Koszt wdrożenia30× < odszk.
  • Jednorazowa inwestycja – wielokrotnie niższa od rocznych wypłat odszkodowań.
Redukcja kosztów reput. i alternat.>50%
  • Precyzyjne alerty – utrzymują zaufanie klientów i cyfrową sprzedaż.
Break-even2027
  • Szybki zwrot – ROI w ~12 miesięcy, dalej czyste oszczędności.
  • Produkt licencjonowalny – każdy nowy bank w sieci podnosi jakość sygnatur ryzyka dla wszystkich uczestników.
FAQ

Pytania

Dane są anonimizowane jeszcze na urządzeniu klienta – zanim trafią do modelu. System operuje wyłącznie na abstrakcyjnym identyfikatorze, nie na danych osobowych. Nazwisko, PESEL ani numer konta nigdy nie opuszczają środowiska banku.
Dyrektywa PSD-2 zobowiązuje instytucje finansowe do udostępniania danych o wspólnych klientach na ich żądanie lub za ich zgodą. System korzysta z tego mechanizmu wyłącznie w zakresie dozwolonym regulacyjnie.
Wymiana danych między bankami wymaga zgody klienta lub spełnienia warunków regulacyjnych wynikających z PSD-2. Żaden bank nie jest zobowiązany do uczestnictwa – ale każdy, który dołącza, zwiększa skuteczność systemu dla siebie i pozostałych uczestników sieci.
Próg decyzyjny θ jest konfigurowalny i kalibrowany osobno dla każdego typu ataku. Wyższy próg redukuje fałszywe alarmy kosztem pokrycia. Na zbiorze syntetycznym 1 000 000 próbek i 200 wariantach ataków osiągnięto dokładność dopasowania bliską 90%.
Operator systemu widzi wyłącznie zanonimizowane wektory i identyfikatory klastrów. Przyporządkowanie ID do konkretnego klienta pozostaje po stronie banku i nie opuszcza jego infrastruktury.
Pipeline działa w trybie near-real-time. Wykrycie zagrożenia, dopasowanie sygnatury do klastrów i wysłanie alertu odbywa się w czasie liczonym w sekundach od momentu detekcji zdarzenia.