Позвольте мне сначала объяснить, какой набор данных я использую.
У меня три комплекта.
- поезд с формой (1277, 927), цель присутствует около 12% времени
- Eval установлен с формой (174, 927), цель присутствует около 11,5% времени
- Выдержать сет с формой (414, 927), цель присутствует около 10% времени
Этот набор также строится с использованием временных интервалов. Набор поездов - самые старые данные. Продлите набор новейших данных. и набор Eval находится в среднем наборе.
Сейчас я строю две модели.
Model1:
# Initialize CatBoostClassifier
model = CatBoostClassifier(
# custom_loss=['Accuracy'],
depth=9,
random_seed=42,
l2_leaf_reg=1,
# has_time= True,
iterations=300,
learning_rate=0.05,
loss_function='Logloss',
logging_level='Verbose',
)
## Fitting catboost model
model.fit(
train_set.values, Y_train.values,
cat_features=categorical_features_indices,
eval_set=(test_set.values, Y_test)
# logging_level='Verbose' # you can uncomment this for text output
)
прогнозирование в режиме ожидания.
Model2:
model = CatBoostClassifier(
# custom_loss=['Accuracy'],
depth=9,
random_seed=42,
l2_leaf_reg=1,
# has_time= True,
iterations= 'bestIteration from model1',
learning_rate=0.05,
loss_function='Logloss',
logging_level='Verbose',
)
## Fitting catboost model
model.fit(
train.values, Y.values,
cat_features=categorical_features_indices,
# logging_level='Verbose' # you can uncomment this for text output
)
Обе модели идентичны, кроме итераций. Первая модель имеет исправление 300 раундов, но она будет сокращать модель до лучших изменений. Где вторая модель использует это лучшее изменение от model1.
Однако, когда я сравниваю важность функции. Это выглядит радикально разница.
Feature Score_m1 Score_m2 delta
0 x0 3.612309 2.013193 -1.399116
1 x1 3.390630 3.121273 -0.269357
2 x2 2.762750 1.822564 -0.940186
3 x3 2.553052 NaN NaN
4 x4 2.400786 0.329625 -2.071161
Как вы можете видеть, одна из функций х3, которая была на вершине 3 в первой модели, выпала во второй модели. Мало того, но есть большой сдвиг в весах между моделями для данной функции. Существует около 60 функций, которые присутствуют в модели1, но не представлены в модели2. И там около 60 функций, которые присутствуют в модели2, нет в модели1. дельта - это разница между Score_m1 и Score_m2. Я видел, где смена модели немного не такая радикальная. AUC и LogLoss не сильно меняются, когда я использую модель1 или модель2.
Теперь у меня есть следующие вопросы относительно этой ситуации.
Являются ли эти модели нестабильными из-за малого количества образцов и большого количества функций. Если это так, как это проверить?
Есть ли в этой модели особенность, которая просто не дает столько информации относительно результата модели, и есть случайное изменение, которое создает разделение. Если этот случай, как проверить эту ситуацию?
Этот catboost является подходящей моделью для этой ситуации?
Любая помощь по этому вопросу будет оценена