Rozdział 1 Scoring bankowy – podstawowe pojęcia

1.1 Scoring i model scoringowy

Scoring to, tłumacząc dosłownie, nadawanie oceny punktowej (ang. score – ocena punktowa)1.

Przez model scoringowy rozumiemy najczęściej algorytm, który na podstawie danych nadaje ocenę punktową.

W ramach tego przedmiotu omawiamy przede wszystkim bankowe modele scoringowe. W bankach typowym zastosowaniem modeli scoringowych jest credit scoring, czyli scoring kredytowy. W przypadku scoringu kredytowego ocena punktowa (credit score) określa zdolność i wiarygodność kredytową klienta, czyli wskazuje na prawdopodobieństwo, że klient spłaci w terminie zobowiązanie kredytowe. Banki stosują również inne niż credit scoring modele scoringowe, służące do oceny np. prawdopodobieństwa oszustwa, prawdopodobieństwa odejścia klienta czy prawdopodobieństwa odzyskania zobowiązania.

W przypadku scoringu kredytowego najczęściej przyjmuje się konwencję, że wysoka ocena punktowa oznacza niskie ryzyko kredytowe (niskie prawdopodobieństwo braku spłaty), a niska ocena punktowa wysokie ryzyko (wysokie prawdopodobieństwo braku spłaty).

1.2 Karta (tablica) scoringowa

Terminu „karta scoringowa” używa się obecnie często jako synonimu modelu scoringowego.

Jednak w węższym znaczeniu „karta scoringowa” to przedstawienie modelu scoringowego w formie tablicy scoringowej, np. takiej:

Tabela 1.1: Przykładowa karta scoringowa.
CechaPoziomPunkty
Punkty bazowe70
Iloraz DTI (ang. debt-to-income,
obsługa długu do dochodu)
[0-20]45
(20-40]0
powyżej 40-30
Liczba rachunków kredytowych
z opóźnieniem 30+
w ostatnich 12 miesiącach
030
10
2+-20
Wykorzystanie limitu
odnawialnego (%)
[0-30]25
(30-50]15
(50-70]0
powyżej 70-10

Jak widać, w przypadku karty scoringowej każda cecha (zarówno ilościowa, jak i jakościowa) podzielona jest na poziomy, każdemu poziomowi odpowiada liczba punktów.

Cechy (ang. features) nazywane są także zmiennymi (variables) i charakterystykami (characteristics). Statystycy czy specjaliści od uczenia maszynowego nazywają cechy wchodzące w skład modelu predykcyjnego również predyktorami (ang. predictors), zmiennymi objaśniającymi (explanatory variables) czy zmiennymi wejściowymi (input variables).

Poziomy (levels albo tiers ) to inaczej atrybuty (attributes), kategorie (categories), grupy, warianty albo – szczególnie w przypadku cech ilościowych – przedziały (intervals albo bands). W terminologii uczenia maszynowego i modelowania bankowego przyjęło się również angielskie słowo bins, które będziemy tutaj tłumaczyć jako kubełki. Spotyka się również określenie koszyki (buckets). Czynność podziału na kubełki to kubełkowanie (ang. binning), grupowanie/klasowanie (ang. classing), a w przypadku zmiennych ilościowych dyskretyzacja.

Jeżeli w modelu scoringowym występują „punkty bazowe” — czyli stała wartość przyznawana każdej obserwacji na wejściu — to powinny one zostać uwzględniane w tablicy scoringowej. Zwykle umieszcza się je w pierwszym wierszu w tablicy. Brak punktów bazowych w tablicy oznacza zazwyczaj, że w danym modelu ich wartość wynosi zero. Punkty bazowe można, przez analogię do modeli regresji, nazwać „wyrazem wolnym” (ang. intercept) albo „stałą” (ang. constant).

1.3 Przykładowy kod

Załóżmy, że mamy następującą prostą tablicę scoringową:

CechaPoziomPunkty
Punkty bazowe50
Cecha110 lub mniej10
(10-30]0
powyżej 30-10
Cecha2044
122
211
3+0

Mamy dwóch klientów. Klienta A, dla którego cecha 1 wynosi 15, a cecha 2 to 3 oraz klienta B, dla którego pierwsza cecha ma wartość 10, a wartość drugiej cechy to 2.

Kod w R wyznaczający ocenę punktową dla tych klientów mógłby wyglądać na przykład tak:

# Tworzenie ramki danych z klientami
df <- data.frame(klient = c("A", "B"), cecha1 = c(15, 10), cecha2 = c(3,2))

# Wyznaczanie punktów dla każdej z cech
df$punkty_start <- 50
df$cecha1_punkty <- ifelse(df$cecha1 <= 10, 10, ifelse(df$cecha1 > 30, -10, 0))
df$cecha2_punkty <- ifelse(df$cecha2 == 0, 44, ifelse(df$cecha2==1, 22, ifelse(df$cecha2==2, 11, ifelse(df$cecha2>=3, 0, NA))))

# Obliczanie oceny punktowej (ang. score)
df$ocena_punktowa <- df$punkty_start + df$cecha1_punkty + df$cecha2_punkty
head(df)
klientcecha1cecha2punkty_startcecha1_punktycecha2_punktyocena_punktowa
A153500050
B10250101171

Analogiczny kod w Pythonie:

import pandas as pd
import numpy as np

# Tworzenie ramki danych z klientami
df = pd.DataFrame({"klient": ["A", "B"], "cecha1": [15, 10], "cecha2": [3, 2]})

df["punkty_start"] = 50
df["cecha1_punkty"] = np.where(
    df["cecha1"] <= 10, 10,
    np.where(df["cecha1"] > 30, -10, 0)
    )
df["cecha2_punkty"] = np.where(
    df["cecha2"] == 0, 44,
    np.where(df["cecha2"] == 1, 22,
        np.where(df["cecha2"] == 2, 11,
            np.where(df["cecha2"] >= 3, 0, pd.NA)
        )
    )
)
# Obliczanie oceny punktowej (score)
df["ocena_punktowa"] = (df["punkty_start"] + df["cecha1_punkty"] + df["cecha2_punkty"])

df.head().style
  klient cecha1 cecha2 punkty_start cecha1_punkty cecha2_punkty ocena_punktowa
0 A 15 3 50 0 0 50
1 B 10 2 50 10 11 71

1.4 Zadania


  1. Warto zaznaczyć, że w języku polskim słowem scoring określa zarówno samą koncepcję nadawania oceny punktowej, jak i konkretną wartość tej oceny (ang. score), a także modele (algorytmy) nadające tę ocenę.↩︎