Прогноз відтоку за допомогою логістичної регресії

Machine Learning для маркетингу в Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Вступ до логістичної регресії

  • Статистична модель класифікації для бінарних відповідей
  • Моделює лог-ітси ймовірності цільового класу
  • Припускає лінійний зв'язок між лог-ітсами цілі та предикторами
  • Повертає коефіцієнти та ймовірності передбачення

Модель логістичної регресії

Machine Learning для маркетингу в Python

Кроки моделювання

  1. Розбийте дані на тренувальні та тестові
  2. Ініціалізуйте модель
  3. Навчіть модель на тренувальних даних
  4. Передбачте значення на тестових даних
  5. Оцініть якість моделі на тесті
Machine Learning для маркетингу в Python

Навчання моделі

Імпортуйте класифікатор Logistic Regression

from sklearn.linear_model import LogisticRegression

Ініціалізуйте екземпляр Logistic Regression

logreg = LogisticRegression()

Навчіть модель на тренувальних даних

logreg.fit(train_X, train_Y)
Machine Learning для маркетингу в Python

Метрики якості моделі

Ключові метрики:

  • Accuracy — частка правильно передбачених міток (і Churn, і не Churn)
  • Precision — частка правильних серед усіх позитивних передбачень моделі (тут — «Churn»)
  • Recall — частка правильно виявлених серед усіх позитивних зразків (усіх клієнтів з відтоком)
Machine Learning для маркетингу в Python

Вимірювання accuracy моделі

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 для маркетингу в Python

Вимірювання precision і recall

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(test_recall, test_recall))
Training precision: 0.6725, Training recall: 0.5736
Test precision: 0.5736, Test recall: 0.4835
Machine Learning для маркетингу в Python

Регуляризація

  • Додає штрафний коефіцієнт на етапі побудови моделі
  • Бореться з перенавчанням (коли модель «запам'ятовує» шаблони)
  • Деякі методи також виконують відбір ознак, напр., L1
  • Підвищує здатність моделі узагальнювати на нові зразки
Machine Learning для маркетингу в Python

L1-регуляризація та відбір ознак

  • LogisticRegression із sklearn за замовчуванням застосовує L2-регуляризацію
  • L1-регуляризацію (LASSO) можна задати явно; вона виконує відбір ознак, «стискаючи» частину коефіцієнтів до нуля.
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(penalty='l1', C=0.1, solver='liblinear')
logreg.fit(train_X, train_Y)
  • Параметр C слід налаштовувати, щоб знайти оптимальне значення
Machine Learning для маркетингу в Python

Налаштування 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 для маркетингу в Python

Вибір оптимального C

Налаштування параметра C для L1-регуляризації

Machine Learning для маркетингу в Python

Вибір оптимального C

Налаштування параметра C для L1-регуляризації

Machine Learning для маркетингу в Python

Запустімо кілька моделей логістичної регресії!

Machine Learning для маркетингу в Python

Preparing Video For Download...