Выбор алгоритма классификации для классификации сочетания номинальных и числовых данных?
У меня есть набор данных около 100000 записей о структуре покупок клиентов. Набор данных содержит
- Возраст (непрерывное значение от 2 до 120), но я планирую также классифицировать по возрастным диапазонам.
- Пол (0 или 1)
- Адрес (может быть только шести типов или я также могу представлять, используя цифры от 1 до 6)
- Магазин предпочтений (может быть только из 7 магазинов), который является моей проблемой класса.
Поэтому моя задача - классифицировать и прогнозировать клиентов по возрасту, полу и местоположению магазина предпочтений. Я пытался использовать наивные и решающие деревья, но их точность классификации немного ниже.
Я думаю также о логистической регрессии, но я не уверен в такой дискретной ценности, как пол и адрес. Но я также принял SVM с некоторыми кернальными трюками, но еще не пробовал.
Так какой алгоритм машинного обучения вы предлагаете для большей точности с этими функциями.
2 ответа
Проблема в том, что вы представляете номинальные переменные в непрерывной шкале, что накладывает (ложные) порядковые отношения между классами, когда вы используете методы машинного обучения. Например, если вы кодируете адрес как одно из шести возможных целых чисел, то адрес 1 ближе к адресу 2, чем к адресу 3,4,5,6. Это будет вызывать проблемы, когда вы пытаетесь чему-то научиться.
Вместо этого переведите свою категориальную переменную с 6 значениями в шесть двоичных переменных, по одной для каждого категориального значения. Ваша оригинальная функция даст шесть функций, из которых только одна будет включена. Кроме того, укажите возраст как целочисленное значение, поскольку вы теряете информацию, делая ее категориальной.
Что касается подходов, то вряд ли что-то изменит (по крайней мере, на начальном этапе). Пойдите с тем, что вам легче реализовать. Однако перед запуском тестового набора убедитесь, что вы выполняете какой-то выбор параметров перекрестной проверки для набора разработчика, поскольку все алгоритмы имеют параметры, которые могут существенно повлиять на точность обучения.
Вам действительно нужно посмотреть на данные и определить, достаточно ли отличаются ваши ярлыки от тех функций, которыми вы пользуетесь в настоящее время. Поскольку функций так мало, а данных много, то такое, как kNN, может хорошо работать.
Вы можете адаптировать совместную фильтрацию для решения вашей проблемы, так как она также будет работать на основе аналогичных функций.