Як налаштувати нейронну мережу для виведення порядкових даних?


20

У мене створена нейронна мережа, щоб передбачити щось, де вихідна змінна є порядковою. Я опишу нижче, використовуючи три можливі виходи A <B <C.

Цілком очевидно, як використовувати нейронну мережу для виведення категоричних даних: вихід - це лише програмна макс останнього (зазвичай повністю підключеного) шару, по одному на категорію, а передбачувана категорія - сама з найбільшим вихідним значенням (це за замовчуванням у багатьох популярних моделях). Я використовував те саме налаштування для порядкових значень. Однак у цьому випадку виходи часто не мають сенсу, наприклад, мережеві виходи для A і C високі, але B низькі: це не правдоподібно для порядкових значень.

У мене є одна ідея для цього, яка полягає в обчисленні втрат на основі порівняння виходів з 1 0 0 для A, 1 1 0 для B і 1 1 1 для C. Точні пороги можна настроїти пізніше, використовуючи інший класифікатор (наприклад, Bayesian ), але це, здається, охоплює суттєву ідею впорядкування входів, не прописуючи жодної конкретної інтервальної шкали.

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


1
Я отримав у Google багато цікавих хітів для "порядкової логістичної регресії", наприклад, цей документ
shadowtalker

@ssdecontrol: Цікаво. Я спробував це; результати були кращими, ніж вибір одного виходу з найвищим значенням, але трохи гірший, ніж інші методи (наївні байєсівські тощо). Це корисно, але це не допомагає тренувати мережу, лише покращує результати трохи після факту ... або, принаймні, я не розумію, як зробити так, щоб допомогти тренувати мережу.
Олексій І

яке "це" ви спробували? Єдине, що пошукова система може бути кориснішою, ніж ви могли очікувати
shadowtalker

Також я не впевнений, що я розумію, що ви маєте на увазі під "наприклад, мережеві виходи для A і C високі, але B низькі: це неправдоподібно". Ти маєш на увазі, що ти прогнозуєш багато As і Cs, але мало Bs? Я не бачу, чому це має бути неправдоподібним, якщо у вас немає поважних чи доменних підстав для того, щоб так подумати
shadowtalker

Я також не знаю, як ви могли коли-небудь отримати результат типу "1 1 0". Я думаю, що тут є деяка плутанина щодо термінології. Ви описуєте сукупні порядкові результати? Як у кумулятивній моделі logit?
shadowtalker

Відповіді:


15

KK

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

  • клас 1 представлений як [0 0 0 0 ...]

  • клас 2 представлений як [1 0 0 0 ...]

  • 3 клас представлений як [1 1 0 0 ...]

P(y^<k)np.sum

Ця стратегія нагадує ансамбль Франка і Холла , і я думаю, що це перша публікація такого.


Цей підхід здається набагато привабливішим. Важливо усвідомити, що використовувати прогнозовані режими, щоб перетворити це на проблему класифікації, не є хорошою ідеєю. Прогнозовані сукупні ймовірності можна перетворити на передбачувані індивідуальні ймовірності, тому функція корисності для прийняття остаточного рішення може бути вставлена ​​набагато пізніше, коли відомі утиліти. Дивіться сторінку fharrell.com/post/classification .
Френк Харрелл

1
@RicardoCruz - Гм, це дуже схоже на те, що я запропонував: "1 0 0 для A, 1 1 0 для B, і 1 1 1 для C". Приємно знати, що працює! Крім того, що це був документ з 2007 року, ця ідея існує давно
Олексій I

Так, я сам здивувався, коли знайшов цей папір!
Рікардо Крус

Примітка. Як зазначено в "Нейрелевому мережевому підході до звичайної регресії": "... використання незалежних сигмоїдних функцій для вихідних вузлів не гарантує монотонне відношення (o1> = o2> = ....> = oK), яке є не потрібно, але бажано робити прогнози ". Тому просто виконувати "np.sum" під час прогнозування - не найкращий метод.
sccrthlt

1
Змінити на мій коментар вище: Виконання "np.sum" на виходах нейронної мережі вводить в оману. Наступна ситуація може виникнути, коли вихідний вектор є [0 1 0 1 0]. Виконання підсумовування за цим вектором дало б передбачення класу 2, коли насправді нейронна мережа не впевнена.
sccrthlt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.