В Классификации может ли разработка функций путем частого однократного кодирования оказаться неэффективной? - PullRequest
0 голосов
/ 04 апреля 2020

Краткий контекст

После того, как я завершил проектирование объектов, мой набор данных расширился с 15 столбцов до примерно 90. Более 90% моего нового набора данных кодируются одним горячим способом (большинство значений в столбцах 0 и 1 в наборе данных). После использования statsmodels и запуска Logisti c Сводка регрессии мой псевдо-R-2 имеет значение только 0,07 и продолжает уменьшаться по мере удаления статистически незначимых функций.

Основной вопрос

Возможно ли перегрузить конструктор объектов с помощью быстрого кодирования? Я сделал столько возможностей, сколько смог, чтобы извлечь как можно больше данных, поэтому мое низкое значение псевдо-R-2 сбивает с толку то, почему оно так мало.

Я занимаюсь машинным обучением в течение 3 месяцев и меня научили извлекать как можно больше информации в области разработки функций перед тестированием моделей. После всего этого я искренне застрял с моими текущими знаниями о том, почему мой псевдо R-2 может быть столь же низким, как и он.

Длинный контекст

I Я работаю над личным проектом с использованием набора данных publi c. Конечная цель состоит в том, чтобы предсказать, какие клиенты, скорее всего, не появятся на запланированной встрече. Я начал с 11 объясняющих переменных и 1 переменной ответа - Результат. Первоначально мои пояснительные переменные были:

  • Пол (F / M)
  • Запланированный день (объект «дата-время»)
  • День встреч («время-дата») объект)
  • Возраст
  • Окрестности (много разных)
  • Стипендия (0/1 значения)
  • Гипертония (0/1 значения)
  • Диабет (0/1 значения)
  • Алкоголизм (0/1 значения)
  • Гандикап (0/1 значения)
  • СМС получено (0/1 значения)

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

  • Извлечение названия месяца из дат и последующее горячее кодирование, чтобы каждый месяц был в столбце
  • Извлечение дня недели, а затем горячее кодирование, поэтому каждый день недели находится в отдельном столбце
  • Разделение времени по AM и PM и сохранение этой информации в столбцах с горячим кодированием
  • Определение выбросов для столбца Age и сохраняя их в отдельных столбцах и т. д.

Как только я завершил разработку функций, я использовал statsmodels для запуска сводной регрессии Logisti c моей модели с использованием следующего кода пример:

smf.logit(formula = """ Outcome ~ 
                                       Age +
                                       Scholarship + ...)

После того, как я все закончил, мое значение псевдо-R-2 в лучшем случае составляет всего 0,07. Я провел свое исследование и обнаружил, что псевдо-значение R-2 между 0,2 и 0,4 означает, что модель сильная. Поэтому меня смущает, почему мой счет настолько низок после извлечения всей информации, которую я, возможно, мог.

...