Многоцелевые деревья решений - PullRequest
0 голосов
/ 30 декабря 2011

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

1 Ответ

1 голос
/ 30 декабря 2011

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

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

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

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

...