Przewidywanie rezygnacji za pomocą regresji logistycznej

Uczenie maszynowe w marketingu w Pythonie

Karolis Urbonas

Head of Analytics & Science, Amazon

Wprowadzenie do regresji logistycznej

  • Statystyczny model klasyfikacji dla odpowiedzi binarnych
  • Modeluje log-iloraz szans prawdopodobieństwa zmiennej docelowej
  • Zakłada liniową zależność między log-ilorazem szans a predyktorami
  • Zwraca współczynniki i prawdopodobieństwo predykcji

Model regresji logistycznej

Uczenie maszynowe w marketingu w Pythonie

Etapy modelowania

  1. Podział danych na zbiór treningowy i testowy
  2. Inicjalizacja modelu
  3. Dopasowanie modelu do danych treningowych
  4. Predykcja wartości na danych testowych
  5. Ocena wydajności modelu na danych testowych
Uczenie maszynowe w marketingu w Pythonie

Dopasowanie modelu

Importowanie klasyfikatora regresji logistycznej

from sklearn.linear_model import LogisticRegression

Inicjalizacja instancji regresji logistycznej

logreg = LogisticRegression()

Dopasowanie modelu do danych treningowych

logreg.fit(train_X, train_Y)
Uczenie maszynowe w marketingu w Pythonie

Metryki wydajności modelu

Kluczowe metryki:

  • Dokładność – % poprawnie przewidzianych etykiet (zarówno Churn, jak i nie-Churn)
  • Precyzja – % predykcji klasy pozytywnej modelu (tu: przewidziany Churn), które były poprawne
  • Czułość – % wszystkich próbek klasy pozytywnej (wszyscy klienci z churnem), które zostały poprawnie sklasyfikowane
Uczenie maszynowe w marketingu w Pythonie

Pomiar dokładności modelu

from sklearn.metrics import accuracy_score

pred_train_Y = logreg.predict(train_X) pred_test_Y = logreg.predict(test_X)
train_accuracy = accuracy_score(train_Y, pred_train_Y) test_accuracy = accuracy_score(test_Y, pred_test_Y)
print('Training accuracy:', round(train_accuracy,4)) print('Test accuracy:', round(test_accuracy, 4))
Training accuracy: 0.8108
Test accuracy: 0.8009
Uczenie maszynowe w marketingu w Pythonie

Pomiar precyzji i czułości

from sklearn.metrics import precision_score, recall_score

train_precision = round(precision_score(train_Y, pred_train_Y), 4) test_precision = round(precision_score(test_Y, pred_test_Y), 4)
train_recall = round(recall_score(train_Y, pred_train_Y), 4) test_recall = round(recall_score(test_Y, pred_test_Y), 4)
print('Training precision: {}, Training recall: {}'.format(train_precision, train_recall)) print('Test precision: {}, Test recall: {}'.format(train_recall, test_recall))
Training precision: 0.6725, Training recall: 0.5736
Test precision: 0.5736, Test recall: 0.4835
Uczenie maszynowe w marketingu w Pythonie

Regularyzacja

  • Wprowadza współczynnik kary w fazie budowania modelu
  • Rozwiązuje problem przeuczenia (gdy wzorce są „zapamiętywane przez model")
  • Niektóre techniki regularyzacji wykonują również selekcję cech, np. L1
  • Zwiększa zdolność modelu do generalizacji na nowych danych
Uczenie maszynowe w marketingu w Pythonie

Regularyzacja L1 i selekcja cech

  • LogisticRegression z sklearn domyślnie stosuje regularyzację L2
  • Regularyzacja L1, zwana też LASSO, może być wywołana jawnie – podejście to przeprowadza selekcję cech, redukując część współczynników modelu do zera.
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(penalty='l1', C=0.1, solver='liblinear')
logreg.fit(train_X, train_Y)
  • Parametr C wymaga dostrojenia w celu znalezienia optymalnej wartości
Uczenie maszynowe w marketingu w Pythonie

Dostrajanie regularyzacji L1

C = [1, .5, .25, .1, .05, .025, .01, .005, .0025]
l1_metrics = np.zeros((len(C), 5))
l1_metrics[:,0] = C

for index in range(0, len(C)): logreg = LogisticRegression(penalty='l1', C=C[index], solver='liblinear') logreg.fit(train_X, train_Y) pred_test_Y = logreg.predict(test_X)
l1_metrics[index,1] = np.count_nonzero(logreg.coef_) l1_metrics[index,2] = accuracy_score(test_Y, pred_test_Y) l1_metrics[index,3] = precision_score(test_Y, pred_test_Y) l1_metrics[index,4] = recall_score(test_Y, pred_test_Y)
col_names = ['C','Non-Zero Coeffs','Accuracy','Precision','Recall'] print(pd.DataFrame(l1_metrics, columns=col_names)
Uczenie maszynowe w marketingu w Pythonie

Wybór optymalnej wartości C

Dostrajanie parametru C regularyzacji L1

Uczenie maszynowe w marketingu w Pythonie

Wybór optymalnej wartości C

Dostrajanie parametru C regularyzacji L1

Uczenie maszynowe w marketingu w Pythonie

Czas na modele regresji logistycznej!

Uczenie maszynowe w marketingu w Pythonie

Preparing Video For Download...