Комментарии 6
False Positives - благонадежный заемщик спрогнозирован неверно;
False Negatives – неблагонадежный заемщик спрогнозирован неверно.
Разве не наоборот? False Positive - на самом деле он неблагонадёжный, но мы его класс спрогнозировали неверно. А False Negative - благонадёжный и мы его класс тоже предсказали неверно.
Немного не понял момент с использованием метрики MAE. По коду видно, что она применяется к таргету, принимающему значения 0 или 1:
print('MAE Train:', mean_absolute_error(df_full[df_full['split'] == 'train']['default'], log_reg.predict(df_full[df_full['split'] == 'train'][feat_cols])))
В этом случае MAE вырождается в Accuracy, т.е. MAE = 1 - Accuracy. Не правильней ли ("каноничней") посмотреть на Accuracy в задаче классификации?
А какой у вас доверительный интервал, чтобы понять, что 0.629 лучше, чем 0.613 ? Может, у вас оценки ±5%? Тогда вы не отличите одно от другого, как вам и показывает MAE.
В общем, вы просто не знаете мат статистику, и с умным видом сравниваете случайные величины как обычные числа.
Кроме того (и вот тут вы должны испытывать особый стыд), ROC AUC определяет кривую для всех значений precision и recall, а на практике, вы будете использовать только одно конкретное значение на этой кривой, выбрав threshold. Правильно сравнить две кривые по одному числу нельзя, поэтому вы берёте какую-то функцию от этих кривых, которая даёт число для каждой кривой. И естественно, можно найти одну функцию, по которой одна меньше другой, и функцию, по которой всё наоборот.
Например, если зафиксировать TPR = 0.5 и TPR=0.8 здесь, то получим разные ответы о том, какая кривая лучше (считаем, что линии разного цвета -- это скоры разных моделей).

Доверять Джини или нет: вот в чем вопрос