Как я могу значительно улучшить отчет о классификации одного класса с помощью ансамблевой модели?
У меня есть набор данных, включающий
{0: 6624, 1: 75} 0 для предложений ненаблюдения и 1 для предложений наблюдения. (в основном я аннотирую свои предложения, используя распознавание именованных сущностей, если есть конкретная сущность, такая как ДАННЫЕ, ВРЕМЯ, ДЛИННАЯ (координата), я помещаю метку 1)
Теперь я хочу создать модель для их классификации, лучшая модель (CV =3 ДЛЯ ВСЕХ), которую я сделал, - это модель ансамбля
clf= SGDClassifier()
trial_05=Pipeline([("vect",vec),("clf",clf)])
который имеет:
precision recall f1-score support
0 1.00 1.00 1.00 6624
1 0.73 0.57 0.64 75
micro avg 0.99 0.99 0.99 6699
macro avg 0.86 0.79 0.82 6699
weighted avg 0.99 0.99 0.99 669
[[6611 37]
[ 13 38]]
и эта модель, которая использовала передискретизированный sgd для классификации
precision recall f1-score support
0 1.00 0.92 0.96 6624
1 0.13 1.00 0.22 75
micro avg 0.92 0.92 0.92 6699
macro avg 0.56 0.96 0.59 6699
weighted avg 0.99 0.92 0.95 6699
[[6104 0]
[ 520 75]]
Как вы видите, проблема в обоих случаях - это класс 1, но в первом у нас довольно хорошая точность, а оценка f1 по сравнению со вторым у нас очень хороший отзыв.
Поэтому я решил использовать ансамблевую модель, используя оба способа следующим образом:
from sklearn.ensemble import VotingClassifier#create a dictionary of our models
estimators=[("trail_05",trial_05), ("resampled", SGD_RESAMPLED_Model)]#create our voting classifier, inputting our models
ensemble = VotingClassifier(estimators, voting='hard')
теперь у меня такой результат:
precision recall f1-score support
0 0.99 1.00 1.00 6624
1 0.75 0.48 0.59 75
micro avg 0.99 0.99 0.99 6699
macro avg 0.87 0.74 0.79 6699
weighted avg 0.99 0.99 0.99 6699
[[6612 39]
[ 12 36]]
Как вы, модель ensembe имеет лучшую точность относительно класса 1, но хуже отзыв и f1 socre, что привело к ухудшению матрицы путаницы относительно класса 1 (36 TP против 38 TP для класса 1)
МОЯ цель - улучшить TP для первого класса (оценка f1, отзыв для класса 1)
что вы рекомендуете для улучшения TP для первого класса (f1 score, вспомните для класса 1? Как правило, вы имеете какое-нибудь представление о моем рабочем процессе?
Я пробовал настройку параметров, это не улучшает модель sgd.