catboost: оценка / тестовый набор с весами для наблюдений
Я работаю над набором данных, содержащим список людей (проиндексированных фискальным кодом). Целевая переменная является двоичной (1: купить книгу, 0: в противном случае). Все предикторы являются категориальными (например, национальность, город, дорога, корзина дохода и т. Д.). Фискальный код может повторяться дважды, и каждый экземпляр / наблюдение имеют вес (1, если не повторяется, значение от 0 до 1, если повторяется).
Например, набор данных выглядит как
fiscal_code | вес | цель | категорическая информация
AAAAA1 | 0,98 | 0 |......
AAAAA1 | 0,02 | 1 |........
У меня есть два набора данных (с одинаковыми переменными), один для поезда (X_train= матрица категориальных переменных, y_train, который является целевой переменной, train_weight, который является весом для каждого наблюдения в наборе поездов), и один для теста (с теми же переменными и значение: X_test, y_test и test_weight).
Я пробую модель Catboost - CatBoostClassifier.
Инициализировать бустер и гиперпараметры
categoryorical_features_indices = np.where(X.dtypes == np.category)[0]
модель = CatBoostClassifier(итерации =5000, learning_rate=0,1, глубина =7, loss_function='Logloss',eval_metric='AUC')
Подходящая модель
model.fit(X_train,
y_train,
eval_set=(X_test,y_test),
cat_features=categorical_features_indices,
use_best_model=True,
verbose=True,
sample_weight=train_weight)
Вопрос заключается в следующем: как я могу принять во внимание, что наблюдения в наборе TEST тоже имеют веса (test_weight)? Есть ли у вас какие-либо идеи?
Я прочитал документацию по https://tech.yandex.com/catboost/doc/dg/concepts/python-reference_catboostregressor_fit-docpage/ но не нашел ничего полезного, вместо документации lightgbm (если рассматривать другую модель повышения мощности).
0 ответов
Насколько я понимаю, это тот случай, когда вам нужно использовать пул, т.е.
model.fit(Pool(X_train,y_train,weight=train_weight)
eval_set=Pool(X_test,y_test,weight=test_weight),
cat_features=categorical_features_indices,
use_best_model=True,
verbose=True)