03 · Nadzorowane · 4 min czytania · Interaktywne · aktualizacja
Jak działa regresja logistyczna i jak czytać jej współczynniki?
W skrócie
Regresja logistyczna to model klasyfikacji, który ważoną sumę cech zamienia funkcją sigmoidalną w prawdopodobieństwo. Wagi czyta się jako ilorazy szans.
Co to jest
Regresja logistyczna to model klasyfikacji binarnej, który przewiduje prawdopodobieństwo należenia do klasy pozytywnej. Liczy ważoną sumę cech z = b₀ + b₁x₁ + … + bₚxₚ, a następnie przepuszcza ją przez funkcję sigmoidalną σ(z) = 1 / (1 + e^(−z)), która zamienia dowolną liczbę na wartość z przedziału od 0 do 1. Mimo nazwy to klasyfikator, nie regresja w sensie przewidywania liczb.
Sigmoida ma kształt łagodnego „S”: dla z = 0 daje 0,5, dla dużych dodatnich z zbliża się do 1, dla dużych ujemnych do 0. Model mówi więc nie tylko „tak/nie”, ale też „jak bardzo tak”. Decyzję podejmuje się dopiero po wybraniu progu — domyślnie 0,5, ale w medycynie czy wykrywaniu oszustw często niżej.
Model spopularyzował w statystyce David Cox (1958). Dziś jest standardowym punktem odniesienia w klasyfikacji, a pojedynczy neuron z sigmoidą to dokładnie regresja logistyczna.
Mechanizm — dlaczego tak działa
Kluczem są szanse (odds): p / (1 − p). Prawdopodobieństwo 0,75 to szanse 3 do 1. Logarytm szans, tzw. logit, może przyjmować dowolne wartości od minus do plus nieskończoności, więc da się go modelować zwykłą sumą ważoną: log(p / (1 − p)) = b₀ + b₁x₁ + … Sigmoida to po prostu funkcja odwrotna do logitu.
Stąd interpretacja wag. Wzrost cechy xⱼ o jednostkę zmienia logit o bⱼ, czyli mnoży szanse przez e^(bⱼ). Ta liczba to iloraz szans (odds ratio): e^b = 2 znaczy „szanse dwa razy większe”, e^b = 0,5 — „o połowę mniejsze”. Wpływ na samo prawdopodobieństwo nie jest stały: ten sam skok szans przesuwa p mocno w okolicy 0,5 i ledwo zauważalnie, gdy p jest już bliskie 0 lub 1.
Wagi dobiera się metodą największej wiarygodności: szukamy parametrów, przy których zaobserwowane etykiety są najbardziej prawdopodobne. Równoważnie minimalizuje się entropię krzyżową (log loss), która mocno karze pewne siebie pomyłki. Ta funkcja jest wypukła, więc ma jedno minimum, ale nie ma wzoru zamkniętego — rozwiązuje się ją iteracyjnie (metodą Newtona, L-BFGS, spadkiem gradientu).
Granica decyzyjna, czyli zbiór punktów z p = 0,5, to miejsce, gdzie z = 0 — prosta, płaszczyzna lub hiperpłaszczyzna. Model jest więc liniowy w cechach; krzywe granice wymagają dodania cech nieliniowych.
Dwa zastrzeżenia. Gdy klasy da się idealnie rozdzielić, wiarygodność rośnie bez końca wraz z wagami i bez regularyzacji współczynniki uciekają do nieskończoności. Dlatego scikit-learn domyślnie stosuje karę L2. Po drugie, jak w regresji liniowej, współliniowość czyni pojedyncze wagi niestabilnymi, a waga to związek warunkowy, nie przyczynowy.
Na przykładzie
Titanic: 891 pasażerów, przeżyło 38,4%. Cechy: klasa (1–3), płeć, wiek (177 braków uzupełnionych medianą 29 lat ze zbioru treningowego), liczba rodzeństwa/małżonków i rodziców/dzieci na pokładzie, cena biletu. Trening na 668 pasażerach, test na 223 (podział warstwowy 75/25, random_state=0). Model trafia w 77,1% przypadków testowych, wobec 61,4% dla zgadywania „nie przeżył”.
Ilorazy szans opowiadają historię katastrofy: bycie kobietą mnoży szanse przeżycia 14,4 razy, każda niższa klasa mnoży je przez 0,33, każdy rok wieku przez 0,958 (dekada — przez 0,65), każdy członek rodzeństwa lub małżonek na pokładzie przez 0,69. Przekładając na prawdopodobieństwa: trzydziestoletnia kobieta podróżująca samotnie w 1. klasie z biletem za 50 funtów — 94%; trzydziestoletni samotny mężczyzna w 3. klasie z biletem za 8 funtów — 9,5%. Ciekawostka: model z samą płcią przewiduje 18,5% dla mężczyzn i 74,9% dla kobiet — dokładnie odsetki przeżycia w zbiorze treningowym, a jego iloraz szans 13,2 to iloraz policzony wprost z tabeli 2×2. Metoda największej wiarygodności odtwarza tu proste częstości.
Dane: Titanic
W praktyce
LogisticRegression()w scikit-learn ma domyślnie karę L2 zC=1.0(C to odwrotność siły kary); do interpretacji bez kary użyjpenalty=Nonealbostatsmodels.Logit.- Skaluj cechy (
StandardScaler) — przyspiesza zbieżność i sprawia, że kara traktuje cechy równo. - Ilorazy szans:
np.exp(model.coef_); prawdopodobieństwa:predict_proba, niepredict. - Próg decyzji dobieraj do kosztów błędów, a nie zostawiaj automatycznie 0,5; przy niezbalansowanych klasach rozważ
class_weight="balanced". - Wiele klas: scikit-learn domyślnie używa wielomianowej regresji logistycznej (softmax zamiast sigmoidy).
Najczęstsze pytania
- Dlaczego nazywa się „regresja”, skoro służy do klasyfikacji?
- Bo formalnie modeluje liczbę — logarytm szans — jako liniową funkcję cech, tak jak regresja liniowa modeluje y. Klasyfikacja pojawia się dopiero po nałożeniu progu na przewidziane prawdopodobieństwo. Nazwa jest historyczna i pochodzi ze statystyki.
- Czy prawdopodobieństwa z regresji logistycznej są wiarygodne?
- Zwykle lepiej skalibrowane niż w wielu innych modelach, bo funkcja straty bezpośrednio nagradza trafne prawdopodobieństwa. Psuje je silna regularyzacja, zmiana proporcji klas między treningiem a użyciem oraz brakujące nieliniowości. Warto sprawdzić krzywą kalibracji.
- Czym regresja logistyczna różni się od pojedynczego neuronu?
- Niczym istotnym: neuron z sigmoidą i entropią krzyżową jako stratą to regresja logistyczna. Sieć neuronowa składa wiele takich jednostek w warstwy, dzięki czemu może tworzyć nieliniowe granice decyzyjne.
Źródła
- Cox D. R. „The Regression Analysis of Binary Sequences”, Journal of the Royal Statistical Society B 20(2), 1958.
- James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 4.3.
- Hastie T., Tibshirani R., Friedman J. „The Elements of Statistical Learning”, 2nd ed., 2009, rozdz. 4.4.
- Bishop C. „Pattern Recognition and Machine Learning”, Springer, 2006, rozdz. 4.3.
- Dokumentacja scikit-learn, „Logistic regression”: https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression