Я работаю над набором маркетинговых данных для несбалансированной двоичной классификации, который имеет:
- Нет: Да, соотношение 88:12 (Нет - не купил продукт, да - купил)
- ~ 4300 наблюдений и 30 признаков (9 числовых и 21 категориальный)
Я разделил свои данные на наборы поездов (80%) и тестов (20%), а затем использовал стандартные наборы и SMOTE в наборе поездов. SMOTE сделал соотношение данных поезда: «Нет: Да» к 1: 1. Затем я запустил классификатор логистической регрессии, как показано в приведенном ниже коде, и получил рейтинг отзыва 80% на тестовых данных, а не 21% на тестовых данных, применив классификатор логистической регрессии без SMOTE.
С SMOTE увеличение отзыва велико, однако ложные срабатывания довольно высоки (см. Изображение для матрицы путаницы), что является проблемой, потому что мы в конечном итоге нацелимся на многих ложных (вряд ли купивших) клиентов. Есть ли способ снизить количество ложных срабатываний, не жертвуя при этом отзывами / истинными положительными результатами?
#Without SMOTE
clf_logistic_nosmote = LogisticRegression(random_state=0, solver='lbfgs').fit(X_train,y_train)
#With SMOTE (resampled train datasets)
clf_logistic = LogisticRegression(random_state=0, solver='lbfgs').fit(X_train_sc_resampled, y_train_resampled)