😱 Заметил тут вечером любопытный факт. С одной стороны простой технических нюанс, но с другой стороны не очень уж очевидная проблема.
🤔 Оказывается, если в модель (например LightGBM) подавать признаки в разной последовательности, то результаты будут разные, к тому же очень сильно! Получается, порядок обхода фичей важен?!
⛔️ Вы спросите меня, а зачем подавать признаки в разных последовательностях?! Например, если вы хотели удалить дубли в списке и реализовали это так: (привет LeetСode)
features = list(set(features))
😎 Вроде бы красивый трюк, как удалить дубли в одну строчку. Однако, если запустить этот код потом снова, последовательность будет уже иная. Как следствие - иной результат модели. 😵💫 Последствия оказываются болезненными, если вы проверяете разные гипотезы и результат модели должен четко отражать наличие/удаление признака, а не более удачную последовательность.
😬 В общем, будьте осторожнее. Вместо Set'а используйте лучше Numpy =)
features = np.unique(features)
👻 Теперь блендить можно не только по разным сидам, но и по разным последовательностям фичей!
