Обработка категориальных данных со многими значениями в sklearn - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь предсказать удержание клиентов с помощью различных функций.

Одной из них является org_id, который представляет организацию, к которой принадлежит клиент.В настоящее время это столбец с плавающей точкой с числами в диапазоне от 0,0 до 416,0 и 417 уникальных значений.

Мне интересно, каков наилучший способ предварительной обработки этого столбца перед его передачей в scikit-learn RandomForestClassifier.Как правило, я бы однозначно кодировал категорические функции, но здесь так много значений, что это радикально увеличило бы размерность моих данных.У меня 12 000 строк данных, поэтому я могу быть в порядке, и только около 10 других функций.

В качестве альтернативы можно оставить столбец со значениями с плавающей запятой, преобразовать значения с плавающей запятой в значения int или преобразовать с плавающей запятойкатегориальным объектам панд.

Любые советы очень ценятся.

1 Ответ

2 голосов
/ 21 марта 2019

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

В классификаторе вы хотите передать только признаки, которые являются дискриминационными для задачи, которую вы пытаетесь выполнить: здесь элементы, которые могут повлиять на сохранение или отток. Идентификатор компании не приносит никакой ценной информации в этом контексте, поэтому ее не следует использовать.

Редактировать следующий комментарий ОП:

Прежде чем идти дальше, давайте кое-что заявим: что касается количества выборок (12000) и относительной простоты модели, можно легко сделать несколько попыток попробовать различные конфигурации функций.

Итак, в качестве основы я бы сделал, как я уже говорил, отбросил эту функцию все вместе. Вот ваш базовый балл, т. Е. Балл, с которым вы можете сравнить ваши другие комбинации функций.

Я думаю, что попытка горячего кодирования org_id ничего не стоит, какой бы результат вы ни увидели, это дополнит ваш опыт и знания о том, как случайный лес ведет себя в таких случаях. Поскольку у вас есть только 10 дополнительных функций, булевы функции is_org_id_1, is_org_id_2, ... будут в значительной степени преобладать, и на результаты классификации могут сильно влиять эти функции.

Тогда я бы попытался сократить число логических функций, найдя новые функции, которые могут «описать» эти 400+ организаций. Например, если они являются только организациями США, их состояние составляет ~ 50 функций или их количество пользователей (что будет одной числовой функцией), их годы существования (еще одна единая числовая функция). Отметим, что это только примеры, иллюстрирующие процесс создания новых функций, только тот, кто знает все проблемы, может разумно спроектировать эти функции.

Кроме того, мне было бы интересно узнать, что, как только вы решите свою проблему, вы вернетесь сюда и напишете другой ответ на ваш вопрос, так как я считаю, что многие люди сталкиваются с такими проблемами при работе с реальными данными:)

...