2015-04-17 2 views
1

Я работаю над прогностическим упражнением моделирования с использованием категориального вывода (pass/fail: двоичный 1 или 0) и около 200 функций. Для этого у меня есть около 350 тыс. Учебных примеров, но при необходимости я могу увеличить размер моего набора данных. Вот несколько вопросов, которые я запускаю:подготовка данных для случайного лесного и предсказательного моделирования в python

1- Я имею дело с категорически неуравновешенными классами. Из этих 350K примеров только 2K обозначаются как «fail» (т. Е. Категориальный вывод = 1). Как мне объяснить это? Я знаю, что существует несколько методов, таких как выборка с бутстрапом;

2- Большинство моих функций (~ 95%) являются категоричными (например, город, язык и т. Д.) С уровнем менее 5-6 уровней. Нужно ли преобразовывать их в двоичные данные для каждого уровня функции? Например, если функция «город» имеет 3 уровня с Нью-Йорком, Парижем и Барселоной, то я могу превратить ее в три бинарных объекта: city_New_york, city_Paris и city_Barcelona;

3 - Выбор модели сами: я имею в виду несколько таких как SVM, K-соседи, дерево решений Random Forest, логистическая регрессия, но я думаю, что Random Forest будет уместна для этого из большое количество категориальных особенностей. Есть предложения?

4 - Если я использую Random Forest, мне нужно (а) сделать функцию масштабирования для непрерывных переменных (я предполагаю, что нет), (б) изменить мои непрерывные переменные в двоичную, как описано в вопросе 2 выше (я угадываю не), (c) учитывают мои тяжелые несбалансированные классы, (d) удаляет отсутствующие значения.

Заранее благодарим за ответы!

+1

Почему это помечено питоном? –

ответ

2
  1. Это помогает тренироваться с симметричными классами (но не пересекаются проверки с ними) РФ удивительно эффективный с данными, так что вам не нужно будет все 350K отрицательных образцов для обучения, скорее всего. Выберите равное количество положительных примеров путем выборки с заменой из этого пула. Однако не забудьте оставить некоторые положительные примеры для проверки.

  2. Если вы находитесь в scikit-learn, используйте pandas 'df.get_dummies() для генерации двоичной кодировки. R выполняет двоичную кодировку для переменных, которые являются факторами. За кулисами он делает бит-вектор.

  3. Я всегда начинаю с RF, потому что так мало ручек, это хороший бенчмарк. После того, как я выпрямил свои функции и получил AUC, я пробую другие методы.

  4. a) нет b) нет c) да d) Да, это необходимо как-то зафиксировать. Если вы можете уйти с удалением данных, где у любого предсказателя отсутствуют значения, отлично. Однако, если это невозможно, медиана является общим выбором. Скажем, дерево строится, а переменная X4 выбрана для разделения. RF необходимо выбрать точку на линии и отправить все данные влево или вправо. Что делать для данных, где X4 не имеет значения? Вот стратегия 'randomForest' package занимает в R:

Для числовых переменных, NAs заменяются медиан столбцов. Для фактор-переменных НС заменяются наиболее частыми уровнями (случайное нарушение связей). Если объект не содержит NA, он возвращается без изменений.

Смежные вопросы