Машинное обучение с категориальными и непрерывными данными

9

Этот вопрос может идти здесь или на ТАК, возможно ...

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

 Animal, breed,  sex, age, weight, blood_pressure, annual_cost
 cat,    calico, M,   10,  15    ,   100         , 100 
 cat,    tabby,  F,   5,   10    ,   80          , 200
 dog,    beagle, M,   3,   30    ,   90          , 200
 dog,    lab,    F,   8,   75    ,   80          , 100

И зависимая переменная, которая будет предсказана, является ежегодной стоимостью ветеринара. Я немного сбит с толку относительно конкретных методов, доступных для работы с таким набором данных. Какие методы обычно используются для обработки наборов данных, представляющих собой смесь как непрерывных, так и категориальных данных?

Рептиликус
источник

Ответы:

8

Для каждого класса (породы, пола ...) категориальных атрибутов вы можете добавить количество компонентов в свой вектор объектов, равное количеству возможных значений в этом классе. Затем, если точка данных имеет i-е значение, вы устанавливаете i-й один из этих компонентов на 1, а остальные для этого атрибута - на 0.

В вашем примере для пола вы добавили бы два новых компонента к вектору объектов. Если животное мужского пола, вы должны установить первое на 1, а второе на 0, и наоборот, если животное женское. Для животных, если бы вы могли использовать кошку, собаку и рыбу, вы бы сделали то же самое с тремя компонентами.

Они будут сосуществовать бок о бок с непрерывными атрибутами. Возможно, вы захотите отрегулировать величину «значения индикатора» (значение, которое вы используете, когда атрибут «включен»), чтобы оно было сопоставимо с величинами непрерывных значений, которые вы используете.

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

DJLamar
источник
1
Крутые, отличные советы! Как насчет возможной ситуации в данных испытаний, когда порода никогда не появлялась в данных обучения? Например, был ли в данных испытаний пудель, а не данные тренировки? Будет ли лучший способ пойти просто иметь нули для всех компонентов вектора породы?
reptilicus
2
Фактически, противоположный подход (известный как дискретизация данных) обычно является лучшим выбором для иерархических методов (таких как алгоритмы дерева решений). Дискретизация данных также является методом предварительной обработки данных (как упоминалось в другом ответе).
rvcoutinho
2

Вы должны взглянуть на предварительную обработку данных . Это до любой техники машинного обучения. Вот хорошее введение (найдено в Google).

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

rvcoutinho
источник