Які алгоритми вимагають однокольорового кодування?


12

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


2
Ви запитуєте про необхідність кодування категоричних даних у якийсь тип "контрастних змінних" або конкретно у фіктивний (гарячий) тип?
ttnphns

1
Це питання є дещо широким, але проста відповідь, яка стосується природи ОГЕ, може усунути плутанину ОП. Наявність таких відповідей означає, що це питання відповідає. Я голосую, щоб залишити відкритим.
gung - Відновіть Моніку

@ttnphns чесно не знаю, що ти маєш на увазі під контрастною змінною. Я лише знайомий з манекеном.
космоса

Космос, манекен (= показник = гарячий) - це лише один із ряду способів кодування категоричних змінних в аналізах. Тези способів єдино називають "контрастними змінними". Дивіться stats.meta.stackexchange.com/q/4669/3277 та stats.stackexchange.com/a/221868/3277
ttnphns

1
Я думаю, що повний список, про який ви просите, буде складно скласти.
mdewey

Відповіді:


6

Більшість алгоритмів (лінійна регресія, логістична регресія, нейронна мережа, машина підтримки вектора тощо) вимагають певного кодування за категоричними змінними. Це тому, що більшість алгоритмів приймають лише числові значення як вхідні дані.

Алгоритми, які не потребують кодування, - це алгоритми, які можуть безпосередньо мати справу з спільними дискретними розподілами, такими як ланцюг Маркова / мережа Naive Bayes / Bayesian, дерево на основі тощо.

Додаткові коментарі:


Досі не зрозуміло, чи потрібне одне гаряче кодування для НАЙБІЛЬШІХ АЛГОРИТМІВ. Ви просто говорите, що кодування потрібно. Але це одне гаряче кодування?
Прометей

4

Чи може хто-небудь дати перелік того, які алгоритми вимагатимуть, щоб категоричні функції були кодировані гарячими, а які - ні?

AFAIU, він повинен більше робити з конкретними даними , менше з конкретним алгоритмом . Зокрема, це залежить від того, є якийсь змістовний порядок у категоріях чи ні.

Розглянемо два випадки. У першому у вас є категорії погано, мех, добре , а в другому у вас яблуко, апельсин, груша . У першому випадку існує природний порядок, тому що мех , мабуть, знаходиться між поганим і хорошим , але, мабуть, нічого подібного не відбувається в яблуці, апельсині, груші .

Якщо уникнути гарячого кодування для першого випадку, ви "втрачаєте" інформацію про замовлення. Якщо ви використовуєте гаряче кодування для другого випадку, ви присвоюєте певне замовлення категоріям, що, природно, не відповідає дійсності.

Я це роблю, коли алгоритм використовує метрику відстані для обчислення подібності.

Чому? Припустимо, одна з особливостей - категорична погана, мех, добра , і у вас є три екземпляри, 1, 2 і 3, де вони однакові, за винятком того, що 1 є поганим , 2 - мех і 3 - хорошим. Ймовірно, ви хочете висловити алгоритму, що 1 схожий на 2, ніж на 3.


2
Це гарна відповідь. Я мав би уточнити це питання, хоча включати також не упорядковані категоричні змінні. У такому випадку це завжди має бути одне гаряче закодоване?
космоса

@ cosmos1990 IMHO, як правило, для не упорядкованих категоричних даних одношвидке кодування - це шлях (на відміну від присвоєння числових значень).
Амі Таворі

2

Жоден алгоритм машинного навчання не вимагає одного гарячого кодування. Це один метод поводження з категоричними змінними. Манекенні змінні - це інше. Традиційно кращими варіантами були кращі змінні. Наприклад, функція R lm () автоматично створює фіктивні змінні для категоричних даних. Якщо ви використовуєте python та scikt-learn, я вважаю, що для багатьох його альгів потрібне гаряче кодування категоричних змінних. Я вважаю, що tensorFlow також вимагає кодування з гарячим режимом. Це вибір способу кодування змінної. Немає жодної причини, щоб фіктивні змінні не могли використовуватись замість цього коду. Це все має стосуватися фактичної реалізації алгоритму в коді.

Як зазначає hxd1011, проблема опису "відстані" між категоричними змінними є делікатною проблемою. Окрім згаданих відстаней, існує ще й Жакардова відстань. Деякі методи ML, зокрема SVM, не підходять для категоричних даних і додавання категоричних змінних може / буде (або обидва, і ви вирішите) призводити до моделей з дуже поганою прогнозованою потужністю. Більшість моделей ансамблі обробляють категоричні дані "як є" і не вимагають попередньої обробки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.