Regresja logistyczna

Regresja logistyczna jest rodzajem modelu regresji, który służy do przewidywania prawdopodobieństwa wystąpienia określonego zdarzenia. Jest szczególnie przydatna w sytuacjach, gdy chcemy przewidzieć, czy dana osoba należy do określonej kategorii (np. czy klient kupi dany produkt, czy pacjent zachoruje na dane schorzenie).

W przeciwieństwie do tradycyjnej regresji liniowej, regresja logistyczna zakłada, że zmienna objaśniana (zwana też zmienną odpowiedzi) jest binarna (ma wartość 0 lub 1). W takim przypadku model regresji logistycznej można przedstawić w postaci równania:

p = 1 / (1 + exp(-b0 - b1 * X1 - b2 * X2 - ... - bn * Xn))

gdzie:

  • p to przewidywane prawdopodobieństwo wystąpienia zdarzenia (odpowiednio 0 lub 1)
  • X1, X2, ..., Xn to zmienne objaśniające
  • b0, b1, ..., bn to współczynniki regresji, które są ustalane podczas trenowania modelu

Podobnie jak w przypadku regresji liniowej, celem trenowania modelu regresji logistycznej jest znalezienie takich wartości współczynników b0, b1, ..., bn, by równanie to jak najlepiej opisywało dane treningowe. Można to osiągnąć na przykład za pomocą metody gradientu prostego.

from sklearn.linear_model import LogisticRegression

# Przygotowanie danych - załóżmy, że mamy zbiór treningowy zawierający cechy oraz etykiety (0 lub 1)
X = [[1], [2], [3], [4]]  # cechy
y = [0, 0, 1, 1]  # etykiety

# Utworzenie modelu regresji logistycznej
reg = LogisticRegression().fit(X, y)

# Współczynniki regresji:
print(reg.intercept_)  # b0 - wyraz wolny
print(reg.coef_)  # b1 - współczynnik przy X

# Wynik:
# b0 = -1.5
# b1 = 1
# Równanie regresji to p = 1 / (1 + exp(-1.5 - 1 * X))

W powyższym przykładzie model regresji logistycznej został trenowany za pomocą metody gradientu prostego, która szuka takich wartości współczynników b0 i b1, by logarytm prawdopodobieństwa (log-odds) był liniowo zależny od cech. W tym przypadku model znalazł następujące wartości współczynników:

  • b0 = -1.5
  • b1 = 1

Dzięki temu równanie regresji, które najlepiej opisuje dane treningowe, brzmi p = 1 / (1 + exp(-1.5 - 1 * X)). Teraz model jest gotowy do przewidywania prawdopodobieństwa wystąpienia zdarzenia (odpowiednio 0 lub 1) dla nowych danych.