Lojistik regresyonla churn tahmini

Python ile Pazarlama için Machine Learning

Karolis Urbonas

Head of Analytics & Science, Amazon

Lojistik regresyona giriş

  • İkili yanıtlar için istatistiksel sınıflandırma modeli
  • Hedef olasılığının log-olasılık oranını modeller
  • Hedefin log-olasılığı ile yordayıcılar arasında doğrusal ilişki varsayar
  • Katsayılar ve tahmin olasılığı döndürür

Lojistik Regresyon Modeli

Python ile Pazarlama için Machine Learning

Modelleme adımları

  1. Veriyi eğitim ve test olarak ayırın
  2. Modeli başlatın
  3. Modeli eğitim verisiyle uydurun
  4. Test verisinde tahmin yapın
  5. Test verisinde modeli değerlendirin
Python ile Pazarlama için Machine Learning

Modeli uydurma

Lojistik Regresyon sınıflandırıcısını içe aktarın

from sklearn.linear_model import LogisticRegression

Lojistik Regresyon örneğini başlatın

logreg = LogisticRegression()

Modeli eğitim verisine uydurun

logreg.fit(train_X, train_Y)
Python ile Pazarlama için Machine Learning

Model performans metrikleri

Temel metrikler:

  • Doğruluk: Doğru tahmin edilen etiketlerin yüzdesi (Churn ve churn değil)
  • Kesinlik: Modelin pozitif sınıf tahminlerinin (burada Churn) doğru olan yüzdesi
  • Duyarlılık: Pozitif sınıfa ait örneklerin (tüm churn müşterileri) doğru sınıflanan yüzdesi
Python ile Pazarlama için Machine Learning

Model doğruluğunu ölçme

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
Python ile Pazarlama için Machine Learning

Kesinlik ve duyarlılığı ölçme

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
Python ile Pazarlama için Machine Learning

Düzenlileştirme

  • Model kurulumunda ceza katsayısı ekler
  • Aşırı öğrenmeyi ele alır (örüntülerin modele ezberletilmesi)
  • Bazı düzenlileştirme teknikleri özellik seçimi de yapar; ör. L1
  • Modele görülmeyen örneklere genellenebilirlik kazandırır
Python ile Pazarlama için Machine Learning

L1 düzenlileştirme ve özellik seçimi

  • sklearn içindeki LogisticRegression varsayılan olarak L2 düzenlileştirme uygular
  • L1 düzenlileştirme (LASSO) açıkça seçilebilir; bazı katsayıları sıfıra indirerek özellik seçimi yapar.
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(penalty='l1', C=0.1, solver='liblinear')
logreg.fit(train_X, train_Y)
  • En iyi değer için C parametresi ayarlanmalıdır
Python ile Pazarlama için Machine Learning

L1 düzenlileştirmeyi ayarlama

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)
Python ile Pazarlama için Machine Learning

En iyi C değerini seçme

L1 düzenlileştirme C parametresi ayarı

Python ile Pazarlama için Machine Learning

En iyi C değerini seçme

L1 düzenlileştirme C parametresi ayarı

Python ile Pazarlama için Machine Learning

Biraz lojistik regresyon modeli çalıştıralım!

Python ile Pazarlama için Machine Learning

Preparing Video For Download...