Совет для моего плана - большой набор данных об учениках и оценках, которые хотят отнести нижние 2% - PullRequest
2 голосов
/ 25 мая 2020

У меня есть набор данных, который включает c социально-экономические показатели учащихся по всей стране, а также их оценки. В частности, в этом наборе данных 36 переменных с примерно 30 миллионами студентов в качестве предикторов, а затем ученики выставляют оценки как ответы. в нижних 2% населения страны по оценкам). Я понимаю, что классификация с несбалансированным набором данных (98%: 2%) приведет к смещению. Основываясь на некоторых исследованиях, я планировал учесть это за счет увеличения стоимости неправильной классификации в классе меньшинства.

Кто-нибудь может подтвердить, что это правильный подход (и что нет лучшего, Я предполагаю, что есть)? А также, учитывая характер этого набора данных, не мог бы кто-нибудь помочь мне выбрать алгоритм машинного обучения для выполнения sh этого?

Я работаю с TensorFlow 2.0 в Google Colab. Я собрал все данные вместе в файл .feather, используя pandas.

1 Ответ

1 голос
/ 25 мая 2020

В случае наличия несбалансированного набора данных наиболее распространенным подходом является использование взвешенного класса, но наличие такого большого набора данных ( 30M обучающий пример) для задачи двоичной классификации, представляющей 2% для первого класса и 98% для второго, я могу сказать, что это слишком сложно предотвратить модель, которая будет несмещенной по сравнению с первым классом с использованием взвешенного класса, поскольку это не слишком сильно отличается от уменьшения размера обучающего набора, который необходимо сбалансировать.

Вот несколько шагов для оценки точности модели.


  1. разделите набор данных на наборы для обучения, оценки и тестирования.

  2. Для оценочных показателей c я предлагаю эти альтернативы.

    a. Убедитесь, что у вас есть не менее + 20%, что соответствует первому классу как для оценочных, так и для тестовых наборов.

    b. Установите метрику оценки c на точность и отзыв для точности вашей модели (вместо использования показателя f1).

    c. Установить метрику оценки * 1 116 * будет оценка Каппа Коэна (коэффициент).

    С моей точки зрения, я предпочитаю использовать b .


Поскольку вы используете тензорный поток, я предполагаю, что вы знакомы с глубоким обучением. поэтому используйте глубокое обучение вместо машинного обучения, это дает вам возможность иметь множество дополнительных альтернатив, в любом случае, вот некоторые шаги как для машинного обучения, так и для подхода к глубокому обучению.

Для алгоритмов машинного обучения


  1. Деревья решений Алгоритмы (особенно Случайный лес ).
  2. Если у моих функций нет корреляции, корреляция приближается к нулю (т.е. 0,01), я собираюсь попробовать Дополнять наивный байесовский классификаторы для полиномиальных функций или гауссовского наивного байесовского , используя взвешенный класс для непрерывные функции .
  3. Попробуйте некоторые непараметрические c алгоритмы обучения. Возможно, вам не удастся легко подогнать этот обучающий набор с помощью машин опорных векторов ( SVM ) из-за большого объема данных, но вы можете попробовать.
  4. Попробуйте обучение без учителя алгоритмы (иногда это дает больше generi c модель)

Для алгоритмов глубокого наклона


  1. Энкодер и декодер архитектуры или просто генеративные состязательные сети ( GAN ).
  2. Сиамская сеть .
  3. Обучить модель, используя 1D свертку Слои.
  4. Использовать взвешенный класс.
  5. Сбалансированные партии обучающего набора, случайно выбрано.

У вас есть много других альтернатив, с моей точки зрения, я могу очень постараться, чтобы получить его с помощью 1, 3 или 5.

Для глубокого обучения Пятый подход иногда работает очень хорошо, и я рекомендую попробовать его с 1, 3.

...