{
  "id": 596592,
  "title": "Ensemble: NN + Stacker",
  "content": "<p>Главные пункты, которые привели к финальному решению:</p>\n<ol>\n<li><p>Было создано несколько новых столбцов с различными отношениями. Модель прогонялась как с новосозданными данными, так и без них. Результат с добавочными отношениями был лучше. Также категориальные переменные были трансформированы при помощи one-hot encoding, а числовые стандартизированы.</p></li>\n<li><p>В датасете присутствует дисбаланс классов (количество ушедших клиентов составляло лишь 20% от общего числа). Был посчитан параметр scale_pos_weight, который был испробован как гиперпараметр в раличных моделях у stacker'а. Однако обучение происходило намного дольше, а ROC AUC не становился сильно лучше. Также были испробованы техники недостаточной (RandomUnderSampler) или избыточной (RandomOverSampler) выборки из библиотеки imblearn, но результат с ними оставался таким же. Также была использована техника SMOTE, где данные синтезируются с помощью техники kNN. Однако это также не дало улучшения в метрике.</p></li>\n<li><p>Train датасет был разделен 80:20, чтобы иметь валидационную выборку для локальной оценки модели. Пропорции также менялись, давая больше данных на тренировку, но улучшений это не принесло.</p></li>\n<li><p>Количество слоев, а также значение различных гиперпараметров в модели NeuralNetwork на основе torch.nn тестировались в различных симуляциях. Для регуляризация был использован Dropout. В NN также были испробованы техники, делая архитектуру похожими больше на ResNet, но это не принесло видимых улучшений.</p></li>\n<li><p>Набор моделей в stacker менялся. Также туда добавлялся и MLP (в виде обычного из sklearn, или через wrapper на основе NN). Финальным классификатором лучше всего (на удивление) оказалась логистическая регрессия.</p></li>\n<li><p>Пропорция веса NN (65%) и Stacker (35%) оказалась наилучшей. Передача большего веса NN не позволяло добиться более высокого ROC AUC, а больший акцент на Stacker уменьшал метрику довольно сильно.</p></li>\n</ol>",
  "comments": [],
  "comment_count": 0,
  "messages": [
    {
      "id": 3262952,
      "postDate": "2025-08-04T14:32:49.170Z",
      "content": "<p>Главные пункты, которые привели к финальному решению:</p>\n<ol>\n<li><p>Было создано несколько новых столбцов с различными отношениями. Модель прогонялась как с новосозданными данными, так и без них. Результат с добавочными отношениями был лучше. Также категориальные переменные были трансформированы при помощи one-hot encoding, а числовые стандартизированы.</p></li>\n<li><p>В датасете присутствует дисбаланс классов (количество ушедших клиентов составляло лишь 20% от общего числа). Был посчитан параметр scale_pos_weight, который был испробован как гиперпараметр в раличных моделях у stacker'а. Однако обучение происходило намного дольше, а ROC AUC не становился сильно лучше. Также были испробованы техники недостаточной (RandomUnderSampler) или избыточной (RandomOverSampler) выборки из библиотеки imblearn, но результат с ними оставался таким же. Также была использована техника SMOTE, где данные синтезируются с помощью техники kNN. Однако это также не дало улучшения в метрике.</p></li>\n<li><p>Train датасет был разделен 80:20, чтобы иметь валидационную выборку для локальной оценки модели. Пропорции также менялись, давая больше данных на тренировку, но улучшений это не принесло.</p></li>\n<li><p>Количество слоев, а также значение различных гиперпараметров в модели NeuralNetwork на основе torch.nn тестировались в различных симуляциях. Для регуляризация был использован Dropout. В NN также были испробованы техники, делая архитектуру похожими больше на ResNet, но это не принесло видимых улучшений.</p></li>\n<li><p>Набор моделей в stacker менялся. Также туда добавлялся и MLP (в виде обычного из sklearn, или через wrapper на основе NN). Финальным классификатором лучше всего (на удивление) оказалась логистическая регрессия.</p></li>\n<li><p>Пропорция веса NN (65%) и Stacker (35%) оказалась наилучшей. Передача большего веса NN не позволяло добиться более высокого ROC AUC, а больший акцент на Stacker уменьшал метрику довольно сильно.</p></li>\n</ol>",
      "rawMarkdown": "Главные пункты, которые привели к финальному решению:\n\n1. Было создано несколько новых столбцов с различными отношениями. Модель прогонялась как с новосозданными данными, так и без них. Результат с добавочными отношениями был лучше. Также категориальные переменные были трансформированы при помощи one-hot encoding, а числовые стандартизированы.\n\n2. В датасете присутствует дисбаланс классов (количество ушедших клиентов составляло лишь 20% от общего числа). Был посчитан параметр scale_pos_weight, который был испробован как гиперпараметр в раличных моделях у stacker'а. Однако обучение происходило намного дольше, а ROC AUC не становился сильно лучше. Также были испробованы техники недостаточной (RandomUnderSampler) или избыточной (RandomOverSampler) выборки из библиотеки imblearn, но результат с ними оставался таким же. Также была использована техника SMOTE, где данные синтезируются с помощью техники kNN. Однако это также не дало улучшения в метрике.\n\n3. Train датасет был разделен 80:20, чтобы иметь валидационную выборку для локальной оценки модели. Пропорции также менялись, давая больше данных на тренировку, но улучшений это не принесло.\n\n4. Количество слоев, а также значение различных гиперпараметров в модели NeuralNetwork на основе torch.nn тестировались в различных симуляциях. Для регуляризация был использован Dropout. В NN также были испробованы техники, делая архитектуру похожими больше на ResNet, но это не принесло видимых улучшений.\n\n5. Набор моделей в stacker менялся. Также туда добавлялся и MLP (в виде обычного из sklearn, или через wrapper на основе NN). Финальным классификатором лучше всего (на удивление) оказалась логистическая регрессия.\n\n6. Пропорция веса NN (65%) и Stacker (35%) оказалась наилучшей. Передача большего веса NN не позволяло добиться более высокого ROC AUC, а больший акцент на Stacker уменьшал метрику довольно сильно."
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T00:43:36Z",
  "competition_id": 95461,
  "competition_slug": "bank-churn-competition-by-ipii-hs-ex-mts",
  "team_id": 14068730,
  "solution_url": "/competitions/bank-churn-competition-by-ipii-hs-ex-mts/writeups/ensemble-nn-stacker"
}