Predicția abandonului cu regresie logistică

Machine Learning pentru Marketing în Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Introducere în regresia logistică

  • Model statistic de clasificare pentru răspunsuri binare
  • Modelează log-odds ale probabilității țintei
  • Presupune o relație liniară între log-odds și predictori
  • Returnează coeficienți și probabilități de predicție

Model de regresie logistică

Machine Learning pentru Marketing în Python

Etapele modelării

  1. Împărțiți datele în antrenare și testare
  2. Inițializați modelul
  3. Antrenați modelul pe datele de antrenare
  4. Predicați valori pe datele de testare
  5. Evaluați performanța modelului pe datele de testare
Machine Learning pentru Marketing în Python

Antrenarea modelului

Importați clasificatorul de regresie logistică

from sklearn.linear_model import LogisticRegression

Inițializați instanța de regresie logistică

logreg = LogisticRegression()

Antrenați modelul pe datele de antrenare

logreg.fit(train_X, train_Y)
Machine Learning pentru Marketing în Python

Metrici de performanță ale modelului

Metrici cheie:

  • Acuratețe - % etichetelor corect prezise (Abandon și non-Abandon)
  • Precizie - % predicțiilor pozitive ale modelului (prezise ca Abandon) care au fost corecte
  • Recuperare - % din totalul cazurilor pozitive (clienți care au abandonat) corect identificate
Machine Learning pentru Marketing în Python

Măsurarea acurateței modelului

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
Machine Learning pentru Marketing în Python

Măsurarea preciziei și a recuperării

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
Machine Learning pentru Marketing în Python

Regularizare

  • Introduce un coeficient de penalizare în faza de construire a modelului
  • Abordează supra-ajustarea (când modelul „memorează" tipare)
  • Unele tehnici de regularizare realizează și selecția variabilelor, ex. L1
  • Face modelul mai generalizabil pe date nevăzute
Machine Learning pentru Marketing în Python

Regularizarea L1 și selecția variabilelor

  • LogisticRegression din sklearn aplică implicit regularizare L2
  • Regularizarea L1 (LASSO) poate fi apelată explicit și realizează selecția variabilelor prin reducerea unor coeficienți la zero.
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(penalty='l1', C=0.1, solver='liblinear')
logreg.fit(train_X, train_Y)
  • Parametrul C trebuie ajustat pentru a găsi valoarea optimă
Machine Learning pentru Marketing în Python

Ajustarea regularizării 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)
Machine Learning pentru Marketing în Python

Alegerea valorii optime a parametrului C

Ajustarea parametrului C pentru regularizarea L1

Machine Learning pentru Marketing în Python

Alegerea valorii optime a parametrului C

Ajustarea parametrului C pentru regularizarea L1

Machine Learning pentru Marketing în Python

Să construim modele de regresie logistică!

Machine Learning pentru Marketing în Python

Preparing Video For Download...