Regresja logistyczna – przegląd szczegółowy

Figura 1: Model regresji logistycznej (Źródło:http://dataaspirant.com/2017/03/02/how-logistic-regression-model-works/)

Regresja logistyczna znalazła zastosowanie w naukach biologicznych na początku XX wieku. Następnie została wykorzystana w wielu zastosowaniach w naukach społecznych. Regresja logistyczna jest używana, gdy zmienna zależna (cel) jest kategoryczna.

Na przykład,

  • Aby przewidzieć, czy e-mail jest spamem (1) czy (0)
  • Czy guz jest złośliwy (1) czy nie (0)

Rozważmy scenariusz, w którym musimy sklasyfikować, czy e-mail jest spamem czy nie. Jeśli użyjemy regresji liniowej do tego problemu, istnieje potrzeba ustanowienia progu, na podstawie którego można dokonać klasyfikacji. Powiedzmy, że jeśli rzeczywista klasa jest złośliwa, przewidywana wartość ciągła 0,4, a wartość progowa wynosi 0,5, punkt danych zostanie sklasyfikowany jako niezłośliwy, co może prowadzić do poważnych konsekwencji w czasie rzeczywistym.

Z tego przykładu można wywnioskować, że regresja liniowa nie jest odpowiednia dla problemu klasyfikacji. Regresja liniowa jest nieograniczona, a to daje regresję logistyczną. Ich wartość ściśle mieści się w przedziale od 0 do 1.

Prosta regresja logistyczna

(Pełny kod źródłowy: https://github.com/SSaishruthi/LogisticRegression_Vectorized_Implementation/blob/master/Logistic_Regression.ipynb)

Model

Wyjście = 0 lub 1

Hipoteza => Z = WX + B

hΘ(x) = sigmoida (Z)

Sigmoida. Funkcja

Figura 2: Sigmoidalna funkcja aktywacji

Jeśli 'Z' zmierza do nieskończoności, Y(predicted) stanie się 1, a jeśli 'Z' zmierza do ujemnej nieskończoności, Y(predicted) stanie się 0.

Analiza hipotezy

Wynikiem hipotezy jest szacowane prawdopodobieństwo. Jest to używane do wnioskowania, jak pewnie może przewidywana wartość być rzeczywista wartość, gdy podano dane wejściowe X. Rozważmy poniższy przykład,

X = =

Na podstawie wartości x1, powiedzmy, że uzyskaliśmy szacowane prawdopodobieństwo 0,8. Oznacza to, że istnieje 80% szans, że wiadomość e-mail będzie spamem.

Matematycznie można to zapisać jako,

Figura 3: Reprezentacja matematyczna

To uzasadnia nazwę „regresja logistyczna”. Dane są dopasowywane do modelu regresji liniowej, na które następnie działa funkcja logistyczna przewidująca docelową kategoryczną zmienną zależną.

Typy regresji logistycznej

1. Binarna regresja logistyczna

Kategoryczna odpowiedź ma tylko dwa 2 możliwe wyniki. Przykład: Spam lub Nie

2. wielomianowa regresja logistyczna

Trzy lub więcej kategorii bez uporządkowania. Przykład: Przewidywanie, które jedzenie jest bardziej preferowane (Veg, Non-Veg, Vegan)

3. Regresja logistyczna porządkowa

Trzy lub więcej kategorii z porządkowaniem. Przykład: Ocena filmu od 1 do 5

Decision Boundary

Aby przewidzieć, do której klasy należą dane, można ustalić próg. W oparciu o ten próg, otrzymane szacunkowe prawdopodobieństwo jest klasyfikowane do klas.

Na przykład, jeśli predicted_value ≥ 0.5, to sklasyfikuj email jako spam, w przeciwnym razie jako nie spam.

Granica decyzji może być liniowa lub nieliniowa. Kolejność wielomianów może być zwiększona, aby uzyskać złożoną granicę decyzji.

Funkcja kosztu

Figura 4: Funkcja kosztu regresji logistycznej

Dlaczego funkcja kosztu, która została użyta dla liniowej nie może być użyta dla logistycznej?

Regresja liniowa używa błędu średniokwadratowego jako funkcji kosztu. Jeśli zostanie ona użyta w regresji logistycznej, będzie to niewypukła funkcja parametrów (theta). Gradient descent będzie zbiegał do minimum globalnego tylko wtedy, gdy funkcja jest wypukła.

Rysunek 5: Wypukłe i niewypukłewypukła i niewypukła funkcja kosztu

Wyjaśnienie funkcji kosztu

Figura 6: Funkcja kosztu część 1
Przedmiot zamówienia.

Wykres 7: Funkcja kosztu cz.2

Uproszczona funkcja kosztu

Przedmiotem zamówienia jest m.in.

Wykres 8: Uproszczona funkcja kosztów

Dlaczego taka funkcja kosztów?

Wyjaśnienie 9: Maximum Likelihood Explanation cz.1

Figura 10: Maximum Likelihood Explanation part-2

Ta ujemna funkcja wynika z tego, że kiedy trenujemy, musimy zmaksymalizować prawdopodobieństwo poprzez minimalizację funkcji straty. Zmniejszenie kosztu spowoduje zwiększenie maksymalnego prawdopodobieństwa przy założeniu, że próbki są pobierane z identycznie niezależnego rozkładu.

Odkrywanie wzoru dla algorytmu zstępującego gradientu

Figura 11: Algorytm zstępowania gradientowego cz. 1
Przykłady.

Figura 12: Gradient Descent część 2

Implementacja w języku Python

def weightInitialization(n_features):
w = np.zeros((1,n_features))
b = 0
return w,bdef sigmoid_activation(result):
final_result = 1/(1+np.exp(-result))
return final_result
def model_optimize(w, b, X, Y):
m = X.shape
#Prediction
final_result = sigmoid_activation(np.dot(w,X.T)+b)
Y_T = Y.T
cost = (-1/m)*(np.sum((Y_T*np.log(final_result)) + ((1-Y_T)*(np.log(1-final_result)))))
#
#Gradient calculation
dw = (1/m)*(np.dot(X.T, (final_result-Y.T).T))
db = (1/m)*(np.sum(final_result-Y.T))
grads = {"dw": dw, "db": db}
return grads, costdef model_predict(w, b, X, Y, learning_rate, no_iterations):
costs =
for i in range(no_iterations):
#
grads, cost = model_optimize(w,b,X,Y)
#
dw = grads
db = grads
#weight update
w = w - (learning_rate * (dw.T))
b = b - (learning_rate * db)
#
if (i % 100 == 0):
costs.append(cost)
#print("Cost after %i iteration is %f" %(i, cost))
#final parameters
coeff = {"w": w, "b": b}
gradient = {"dw": dw, "db": db}
return coeff, gradient, costsdef predict(final_pred, m):
y_pred = np.zeros((1,m))
for i in range(final_pred.shape):
if final_pred > 0.5:
y_pred = 1
return y_pred

Koszt vs Number_of_Iterations

Figura 13: Redukcja kosztów

Dokładność trenu i testu systemu wynosi 100%

Ta implementacja dotyczy binarnej regresji logistycznej. W przypadku danych zawierających więcej niż 2 klasy, należy użyć regresji softmax.

To jest post edukacyjny i zainspirowany kursem głębokiego uczenia prof. Andrew Ng.

Pełny kod : https://github.com/SSaishruthi/LogisticRegression_Vectorized_Implementation/blob/master/Logistic_Regression.ipynb

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *