Как стать автором
Обновить

Комментарии 2

Отличная статья, описаны все важные этапы.
К сожалению, есть ошибка в валидации. Следите за руками:
1. Весь текст пропускается через Tf-iDF vectorizer (это уже должно насторожить, т.к. может приводить к неявному data leak)

vectorizer = TfidfVectorizer(min_df=30)

vect_x = vectorizer.fit_transform(x)

2. Ко всем данными применяется upsampling


nm = NearMiss()

X_res, Y_res = nm.fit_resample(vect_x, y)

3. На полученном наборе данных подбираются гиперпараметры и обучается лучшая модель

xgbc = XGBClassifier()

xgbc.fit(X_res,[j-1 for j in Y_res])

4. Только теперь выделяется тестовая выборка и на ней оценивается качество.

X_train, X_test, y_train, y_test = train_test_split( vect_x, y, random_state=42, test_size=0.3, stratify=y )

pred_y = xgbc.predict(X_test)

Подвох в том, что на этапе 4 в тестовую выборку попадают примеры, которые на этапе 2 участвовали в upsampling и на этапе 3 участвовали в обучении модели. Т.е. качество модели оценивается на части обучающей выборке и соответственно, качество сильно завышено.

Добрый день!

Спасибо за столь развёрнутый комментарий, с ответом смогу вернуться к вам позднее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации