Многоцелевые деревья решений

Вот моя проблема. Мне нужно реализовать многоцелевой алгоритм дерева решений. Мультицель — это расширение обучения с несколькими метками, где метки не являются бинарными, а могут быть непрерывными, категоричными и т. д. Например, вектор меток для задачи классификации с несколькими метками может выглядеть так {1,0,1,0,0,0,1}, а для множественной цели может выглядеть так {2,35,3,-2, 24}. Моя проблема заключается в следующем. Если у меня есть метка, которая принимает 3 дискретных значения, как мне представить их в векторе? Допустим, у меня есть метка под названием «Работа» и принимает 3 значения: «механик», «учитель» и «спортсмен». Как я могу закодировать эту метку, чтобы использовать ее в векторе? В каждом узле дерева решений, чтобы найти свое разделение, мне нужно вычислить средний вектор всех векторов меток в этом узле (я использую уравнение метода дисперсии, чтобы найти свое разделение). Если бы у меня была двоичная метка, это было бы легко, потому что добавление 0 и 1 не представляет никакой проблемы. Если я закодирую эти 3 задания с помощью 0,1,2, то это проблема, потому что добавление вектора меток, в котором есть метка спортсмена, имеет большее значение, чем добавление вектора, в котором есть механика работы, а средний вектор неточен.

Возьмем этот пример. У меня есть эти 3 ярлыка:

          job: {mechanic,teacher,athlete}
          married:{yes,no}
          age:  continuous value

Легко сказать, что метка замужества может быть закодирована как {0,1}, а метка возраста — как непрерывное число. Но как я могу закодировать ярлык работы? Кодирование его как {0,1,2} вызывает следующую проблему. Представьте себе 2 вектора меток в узле: {0,0,45}, что соответствует механику, женатому и 45-летнему, и {2,1,48}, что соответствует спортсмену, неженатому, 45-летнему. Средний вектор равен {1,0,5,46,5}. С помощью этого вектора я могу предсказать, что возраст экземпляра, попадающего в этот узел, равен 46,5, я могу сказать, что экземпляр не состоит в браке (с правилом, которое говорит, что больше или равно 0,5 равно 1), и я могу сказать, что его работа учитель. Работа учителя совершенно неправильная, в то время как другие в порядке. Теперь вы видите проблему кодирования категориальных меток. Помощь или совет??? Спасибо


person jojoba    schedule 30.12.2011    source источник
comment
спасибо за отрицательный голос без причины, вы должны быть действительно ответственным человеком   -  person jojoba    schedule 03.01.2012


Ответы (1)


Как насчет того, чтобы взять все ваши дискретные значения функции и преобразовать их все в функции, если значения больше 2, например:

job: {mechanic, teacher, athlete}
married:{yes, no}
age:  continuous value

приведет к 5-мерному вектору

(механик 0/1, учитель 0/1, спортсмен 0/1, женат 0/1, возраст 0-инф)

person clyfe    schedule 30.12.2011
comment
Да, это может быть решением: D. Но это, вероятно, потребует много пост-обработки прогнозов, потому что это может предсказать, что человек является механиком и учителем. Вам нужно каким-то образом сохранить, что метки от индекса 0 до индекса 2 относятся к одной и той же метке, и назначить ту, которая ближе всего к 1. Но я не могу придумать никакого решения, у которого не было бы какой-либо публикации или предварительной работы над данными и это решение, вероятно, потребует меньше усилий. Так что спасибо :Д. Я оставлю этот пост открытым на случай, если в ближайшие несколько дней появится другое решение: D - person jojoba; 30.12.2011
comment
Спасибо д. Я посмотрю. - person jojoba; 30.12.2011