Вывод новой непрерывной переменной из коэффициентов логистической регрессии - PullRequest
0 голосов
/ 06 марта 2019

У меня есть набор независимых переменных X и набор значений зависимой переменной Y. Задача - это биномиальная классификация, то есть предсказать, будет ли должник дефолт по своему долгу (1) или нет (0).После фильтрации статистически незначимых переменных и переменных, которые приводят к мультиколлинеарности, у меня осталось следующее резюме модели логистической регрессии:

Accuracy ~0.87
Confusion matrix [[1038 254]
                  [72 1182]]
Parameters Coefficients
intercept  -4.210
A          5.119
B          0.873
C          -1.414
D          3.757

Теперь я преобразовываю эти коэффициенты в новую непрерывную переменную "default_probability" через log odds_ratio, т.е.

import math
e = math.e
power = (-4.210*1) + (A*5.119) + (B*0.873) + (C*-1.414) + (D*3.757)
default_probability = (e**power)/(1+(e**power))

Когда я делю свой исходный набор данных на квартили в соответствии с этой новой непрерывной переменной "default_probability", тогда:

1st quartile contains 65% of defaulted debts (577 out of 884 incidents)
2nd quartile contains 23% of defaulted debts (206 out of 884 incidents)
3rd quartile contains 9% of defaulted debts (77 out of 884 incidents)
4th quartile contains 3% of defaulted debts (24 out of 884 incidents)

В то же время:

overall quantity of debtors in 1st quartile - 1145
overall quantity of debtors in 1st quartile - 516
overall quantity of debtors in 1st quartile - 255
overall quantity of debtors in 1st quartile - 3043

Я хотел использовать «вероятность дефолта» для хирургического удаления наиболее проблемных кредитов, навязывая бизнес-правило «нет кредита 1-му квартилю», но теперь мне интересно, является ли оно «хирургическим» вообще (по этому правилу я будупотерять (1145 - 577 = 568 "хороших" клиентов) и в целом математически / логически правильно ли выводить новые непрерывные переменные для набора данных из коэффициентов логистической регрессии по описанной выше линии рассуждений?

1 Ответ

1 голос
/ 07 марта 2019

Вы забыли перехват, когда вычислили power. Но если предположить, что это только опечатка, как вы сказали в комментариях, то ваш подход верен. Тем не менее, вы можете использовать функцию scikit-learn predict_proba, которая избавит вас от хлопот. Пример:

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
import numpy as np

data = load_breast_cancer()
X = data.data
y = data.target

lr = LogisticRegression()

lr.fit(X,y)

Предположим, что затем я хочу вычислить вероятность принадлежности к классу 1 для данного наблюдения (скажем, наблюдение i), я могу сделать то, что вы сделали, по существу, используя коэффициенты регрессии и перехват, как вы сделали:

i = 0
1/(1+np.exp(-X[i].dot(lr.coef_[0])-lr.intercept_[0]))

Или просто сделайте:

lr.predict_proba(X)[i][1]

что быстрее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...