Demistyfikująca regresja logistyczna: podstawy matematyczne, przypadki użycia, głębokie uczenie się, kod Pythona

May 06 2023
Wprowadzenie Regresja logistyczna, popularna metoda statystyczna stosowana w analizie predykcyjnej, jest rodzajem uogólnionego modelu liniowego (GLM), który zajmuje się kategorialnymi zmiennymi zależnymi. W przeciwieństwie do regresji liniowej regresja logistyczna jest przeznaczona do sytuacji, w których zmienna wyjściowa jest binarna lub dychotomiczna, tj.
Wizualizacja regresji logistycznej z Wikipedii

Wstęp

Regresja logistyczna, popularna metoda statystyczna używana do analizy predykcyjnej, jest rodzajem uogólnionego modelu liniowego (GLM), który zajmuje się kategorialnymi zmiennymi zależnymi. W przeciwieństwie do regresji liniowej, regresja logistyczna jest przeznaczona do sytuacji, w których zmienna wyjściowa jest binarna lub dychotomiczna, tj. ma tylko dwa możliwe wyniki. Ta potężna technika ma zastosowanie w różnych dziedzinach, w tym w opiece zdrowotnej, finansach i naukach społecznych. W tym obszernym artykule przyjrzymy się przypadkom użycia regresji logistycznej i zagłębimy się w matematykę leżącą u podstaw tej wszechstronnej techniki.

Regresja logistyczna: podstawy

Regresja logistyczna to algorytm uczenia nadzorowanego, który modeluje prawdopodobieństwo wystąpienia zdarzenia na podstawie jednej lub większej liczby zmiennych predykcyjnych. Ustanawia związek między zmienną zależną a zmiennymi niezależnymi poprzez oszacowanie prawdopodobieństw za pomocą funkcji logistycznej.

Funkcja logistyczna, znana również jako funkcja sigmoidalna, jest krzywą w kształcie litery S, która odwzorowuje dowolne dane wejściowe o wartości rzeczywistej na wartość z przedziału od 0 do 1. Jest zdefiniowana jako:

P(x) = 1 / (1 + e^(-x))

Gdzie P(x) to prawdopodobieństwo wystąpienia zdarzenia, a e to podstawa logarytmów naturalnych, w przybliżeniu 2,718. Funkcja logistyczna jest używana, ponieważ może skutecznie odwzorować prawdopodobieństwa, które są z natury ograniczone między 0 a 1.

Matematyka regresji logistycznej

Regresja logistyczna opiera się na koncepcji regresji liniowej, która zakłada liniową zależność między zmiennymi niezależnymi i zależnymi. Jednak regresja logistyczna wykorzystuje funkcję logistyczną do ustalenia tej zależności.

Równanie regresji logistycznej ma postać:

log(P(x) / (1 — P(x))) = β0 + β1 * x1 + β2 * x2 + … + βn * xn

Gdzie:

  • P(x) to prawdopodobieństwo wystąpienia zdarzenia.
  • β0, β1, …, βn to współczynniki reprezentujące wpływ każdej zmiennej niezależnej (x1, x2, …, xn) na prawdopodobieństwo wystąpienia zdarzenia.
  • log(P(x) / (1 — P(x))) to logarytm szans lub logarytm ilorazu szans.

Przypadki użycia regresji logistycznej

Regresja logistyczna ma szeroki zakres zastosowań w różnych dziedzinach. Niektóre typowe przypadki użycia obejmują:

Opieka zdrowotna

  • Przewidywanie wyników choroby: Regresja logistyczna służy do modelowania prawdopodobieństwa wystąpienia u pacjenta określonej choroby w oparciu o takie czynniki, jak wiek, płeć i historia medyczna.
  • Ocena skuteczności zabiegów medycznych: Pomaga w określeniu skuteczności leczenia poprzez porównanie wyników leczenia i grup kontrolnych.
  • Analiza ryzyka kredytowego: regresja logistyczna służy do przewidywania prawdopodobieństwa niewywiązania się pożyczkobiorcy z pożyczki na podstawie historii kredytowej, dochodów i innych zmiennych finansowych.
  • Przewidywanie odpływu klientów: pomaga firmom identyfikować klientów, którym grozi przerwanie świadczenia usług, umożliwiając ukierunkowane działania retencyjne.
  • Analiza zachowań wyborczych: regresja logistyczna może modelować prawdopodobieństwo głosowania osób na konkretnego kandydata na podstawie czynników demograficznych i społeczno-ekonomicznych.
  • Modelowanie ścierania: służy do przewidywania rotacji pracowników na podstawie takich czynników, jak satysfakcja z pracy, wynagrodzenie i środowisko pracy.

Regresja logistyczna opiera się na kilku założeniach, w tym:

  • Liniowość: regresja logistyczna zakłada liniową zależność między logarytmem prawdopodobieństwa wystąpienia zdarzenia a zmiennymi predykcyjnymi
  • Niezależność obserwacji: Każda obserwacja w zbiorze danych powinna być niezależna od pozostałych.
  • Brak współliniowości: zmienne predykcyjne nie powinny być ze sobą silnie skorelowane, ponieważ może to prowadzić do niestabilnych szacunków i utrudniać interpretację modelu.
  • Duża wielkość próby: Regresja logistyczna zwykle wymaga dużej wielkości próby, aby uzyskać dokładne i wiarygodne wyniki.
  • Ograniczenie do wyników binarnych: Regresja logistyczna jest przeznaczona przede wszystkim do problemów z klasyfikacją binarną. W przypadku problemów z klasyfikacją wieloklasową można zastosować rozszerzenia, takie jak wielomianowa regresja logistyczna lub strategie jeden kontra reszta.
  • Niemożność uchwycenia złożonych relacji: Regresja logistyczna może mieć trudności z modelowaniem złożonych relacji między zmiennymi, szczególnie gdy występują interakcje lub nieliniowości.
  • Wrażliwy na wartości odstające: Algorytm jest podatny na wpływ wartości odstających, co może znacząco wpłynąć na współczynniki i wydajność modelu.

Aby ocenić wydajność modelu regresji logistycznej, można zastosować kilka miar, takich jak:

  • Macierz nieporozumień: Tabela podsumowująca wyniki prawdziwie pozytywne, prawdziwie negatywne, fałszywie pozytywne i fałszywie negatywne wygenerowane przez model.
  • Dokładność: Proporcja poprawnych prognoz dokonanych przez model.
  • Precyzja: Odsetek prawdziwych trafień z wszystkich przewidywanych trafień.
  • Przypomnij sobie: odsetek prawdziwych pozytywów z rzeczywistych pozytywów.
  • Wynik F1: Średnia harmoniczna precyzji i przypominania, przydatna w przypadku niezrównoważonych zestawów danych.

Aby poprawić wydajność modelu regresji logistycznej, rozważ:

  • Inżynieria funkcji: Twórz nowe funkcje lub przekształcaj istniejące, aby lepiej uchwycić relacje między zmiennymi.
  • Wybór funkcji: Usuń nieistotne lub zbędne funkcje, aby zredukować szum i poprawić interpretację modelu.
  • Regularyzacja: Zastosuj techniki, takie jak regularyzacja L1 lub L2, aby zapobiec nadmiernemu dopasowaniu i zwiększyć możliwości uogólnienia modelu.

Regresja logistyczna jest ściśle związana z głębokim uczeniem i perceptronami, ponieważ służy jako podstawa do rozwoju bardziej zaawansowanych sieci neuronowych. Regresję logistyczną można postrzegać jako perceptron jednowarstwowy, który jest najprostszą formą sztucznej sieci neuronowej. Zarówno regresja logistyczna, jak i perceptrony są wykorzystywane do zadań klasyfikacji binarnej, a ich związek leży w funkcji aktywacji i procesie uczenia.

Regresja logistyczna jako funkcja aktywacji

W kontekście sieci neuronowych funkcja logistyczna lub funkcja sigmoidalna jest często używana jako funkcja aktywacji. Funkcja logistyczna odwzorowuje wartości wejściowe w zakresie od 0 do 1, co można interpretować jako prawdopodobieństwo klasy dodatniej w zadaniach klasyfikacji binarnej.

Perceptron składa się z warstwy wejściowej, wag i funkcji aktywacji, którą może być funkcja logistyczna. Kiedy funkcja logistyczna jest używana jako funkcja aktywacji w perceptronie, perceptron zasadniczo staje się logistycznym modelem regresji. Wyjście perceptronu można obliczyć w następujący sposób:

P(x) = 1 / (1 + e^(-(β0 + β1 * x1 + β2 * x2 + … + βn * xn)))

Gdzie P(x) to prawdopodobieństwo klasy dodatniej, a β0, β1, …, βn to wagi przypisane do każdej cechy wejściowej (x1, x2, …, xn).

Proces uczenia

Zarówno regresja logistyczna, jak i perceptrony wykorzystują metody optymalizacji oparte na gradiencie do uczenia się optymalnych wag. W regresji logistycznej metoda maksymalnego oszacowania wiarygodności (MLE) jest stosowana do znalezienia wag, które maksymalizują prawdopodobieństwo danych danych. Podobnie w perceptronie wagi są aktualizowane przy użyciu spadku gradientu lub innego algorytmu optymalizacji, aby zminimalizować błąd między przewidywanymi wynikami a rzeczywistymi etykietami.

Regresja logistyczna i głębokie uczenie się

Regresję logistyczną można uznać za element konstrukcyjny modeli głębokiego uczenia się. Modele głębokiego uczenia się, takie jak wielowarstwowe perceptrony i konwolucyjne sieci neuronowe, składają się z wielu warstw połączonych ze sobą neuronów. Każdy neuron może wykorzystywać funkcję logistyczną jako funkcję aktywacji, przekształcając sumę ważoną swoich danych wejściowych w nieliniowe wyjście.

Jednak w nowoczesnych architekturach głębokiego uczenia się inne funkcje aktywacji, takie jak ReLU (rektyfikowana jednostka liniowa), Leaky ReLU lub Tanh, stały się bardziej popularne ze względu na ich lepszą wydajność i łatwiejsze szkolenie w porównaniu z funkcją sigmoidalną.

Podsumowując, regresja logistyczna odgrywa kluczową rolę w podstawach głębokiego uczenia się i perceptronów. Pełni funkcję aktywacyjną i pomaga w procesie uczenia się poprzez optymalizację opartą na gradiencie. Chociaż regresja logistyczna jest stosunkowo prostym modelem w porównaniu z architekturami głębokiego uczenia, zrozumienie jej zasad może pomóc w uchwyceniu bardziej złożonych sieci neuronowych.

Perceptron jednowarstwowy

Ścisły związek między regresją logistyczną a perceptronami

Aby matematycznie zademonstrować związek między regresją logistyczną a perceptronami, zacznijmy od zdefiniowania składowych obu modeli.

Regresja logistyczna

Regresja logistyczna to uogólniony model liniowy, który szacuje prawdopodobieństwo wyniku binarnego na podstawie jednej lub kilku cech wejściowych. Wykorzystuje funkcję logistyczną do odwzorowania wartości wejściowych na zakres [0, 1]. Funkcja logistyczna jest zdefiniowana jako:

P(x) = 1 / (1 + e^(-z))

Gdzie P(x) reprezentuje prawdopodobieństwo klasy dodatniej, a z jest liniową kombinacją cech wejściowych i odpowiadających im wag:

z = β0 + β1 * x1 + β2 * x2 + … + βn * xn

Perceptron

Perceptron to jednowarstwowa sieć neuronowa używana do zadań klasyfikacji binarnej. Składa się z cech wejściowych, wag i funkcji aktywacji. Model perceptronu można przedstawić jako:

y = f(z)

Gdzie y jest wyjściem perceptronu, f(z) jest funkcją aktywacji, a z jest ważoną sumą cech wejściowych:

z = β0 + β1 * x1 + β2 * x2 + … + βn * xn

Teraz połączmy matematycznie regresję logistyczną i perceptrony:

Kiedy użyjemy funkcji logistycznej (funkcji sigmoidalnej) jako funkcji aktywacji w modelu perceptronu, wyjście perceptronu będzie następujące:

y = f(z) = 1 / (1 + e^(-z))

Ponieważ suma ważona (z) jest taka sama zarówno dla regresji logistycznej, jak i dla perceptronu, możemy stwierdzić, że perceptron z funkcją logistyczną jako funkcją aktywacji jest równoważny modelowi regresji logistycznej.

Podsumowując, zarówno regresja logistyczna, jak i perceptrony mają tę samą liniową kombinację cech wejściowych i wag (z). Kiedy funkcja logistyczna jest używana jako funkcja aktywacji w perceptronie, perceptron staje się odpowiednikiem modelu regresji logistycznej, ilustrującego ścisły związek między tymi dwoma modelami.

Trochę kodu w Pythonie

Oto prosta implementacja regresji logistycznej w języku Python i perceptron z funkcją aktywacji logistycznej (sigmoidalnej) przy użyciu tego samego zestawu danych. Wykorzystamy zestaw danych Iris do celów demonstracyjnych.

Importuj niezbędne biblioteki:

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler

iris = datasets.load_iris()
X = iris.data[:100, :2]  # Select only first two features for simplicity
y = iris.target[:100]    # Select only first two classes for binary classification

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)

y_pred_log_reg = log_reg.predict(X_test)

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

class Perceptron:
    def __init__(self, learning_rate=0.1, n_iterations=1000):
        self.learning_rate = learning_rate
        self.n_iterations = n_iterations

    def fit(self, X, y):
        n_samples, n_features = X.shape
        self.weights = np.zeros(n_features)
        self.bias = 0

        for _ in range(self.n_iterations):
            linear_output = np.dot(X, self.weights) + self.bias
            y_predicted = sigmoid(linear_output)
            
            # Update weights and bias
            self.weights -= self.learning_rate * np.dot(X.T, (y_predicted - y)) / n_samples
            self.bias -= self.learning_rate * np.sum(y_predicted - y) / n_samples

    def predict(self, X):
        linear_output = np.dot(X, self.weights) + self.bias
        y_predicted = sigmoid(linear_output)
        return np.round(y_predicted)

perc = Perceptron()
perc.fit(X_train, y_train)

y_pred_perc = perc.predict(X_test)

accuracy_log_reg = accuracy_score(y_test, y_pred_log_reg)
accuracy_perc = accuracy_score(y_test, y_pred_perc)

print("Logistic Regression Accuracy:", accuracy_log_reg)
print("Perceptron with Logistic Activation Function Accuracy:", accuracy_perc)

Wniosek

Regresja logistyczna to wszechstronna i wydajna metoda statystyczna, która może modelować prawdopodobieństwo wystąpienia zdarzenia w oparciu o jedną lub więcej zmiennych predykcyjnych. Dzięki aplikacjom obejmującym opiekę zdrowotną, finanse i nauki społeczne regresja logistyczna oferuje skuteczny sposób rozwiązywania problemów z klasyfikacją binarną. Dzięki zrozumieniu jego matematycznych podstaw, założeń i ograniczeń, praktycy mogą wykorzystać regresję logistyczną do podejmowania świadomych decyzji i przewidywania w różnych dziedzinach.

Tworzenie tego artykułu było częściowo wspierane przez GPT-4.