Класифікація з частково "невідомими" даними


11

Припустимо, я хочу вивчити класифікатор, який приймає вектор чисел як вхідний і дає мітку класу як вихід. Мої дані навчання складаються з великої кількості пар вхід-вихід.

Однак, коли я приходжу до тестування деяких нових даних, ці дані, як правило, лише частково завершені. Наприклад, якщо вектор вводу має довжину 100, лише 30 елементам можуть бути задані значення, а решта - "невідомі".

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

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

Зокрема, я думаю про нейронні мережі, але я відкритий для інших класифікаторів.

Будь-які ідеї? Дякую!


en.m.wikipedia.org/wiki/Missing_data може бути місцем для початку.
Хатшепсут

Я думаю, що напівконтрольне навчання - це той випадок, коли дані про навчання не мають маркування повністю. У моєму випадку всі мої дані про навчання мають маркування, але окремі частини тестових даних є "невідомими".
Karnivaurus

Навчальне навчання за допомогою драбинних
itdxer

Відповіді:


2

Я думаю, що є розумний спосіб змусити його працювати з нейронними мережами.

p

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


1

Я думаю, що є кілька варіантів, які працюють з будь-яким класифікатором:

  • Імпулюйте пропущені значення з одним значенням, наприклад, середнім або медіаною з навчального набору або деяким значенням, передбаченим із спостережуваних частин введення, або просто використовуйте випадкове число або константу.
  • Використовуйте кілька різних значень для невідомих та узагальнюйте результати, наприклад, середнє їх значення

Крім того, ви можете використовувати класифікатори на основі дерев (наприклад, випадкові ліси), і якщо дереву потрібно оцінити розкол за відсутньою ознакою, воно може просто передати дані в обидва дочірні вузли.

p(x,y)xyxxі середній результат, зважений на ймовірність цієї імпутації. Це може бути здійснено або в аналітичному, у закритому вигляді для деяких класифікаторів, наприклад, моделі лінійного дискримінантного аналізу, або приблизно шляхом відбору проб невідомих, наприклад, для машини з обмеженою діяльністю Больцмана або глибоких її варіантів (пов'язаних з подачею нейронних мереж вперед).


я не думаю, що це спрацює. Використовуйте типовий приклад комп’ютерного зору, кожен піксель зображення може бути пов'язаний з різною частиною об'єкта. Наприклад, піксель (50,50) зображення 1 - це око кішки, але кіт трохи переміщений у зображенні 2, тому (50, 50) - це лише піксель фону. Якщо розташування НА, тобто. випадкова оклюзія, залежить від спостереження, ваша імпутація не працюватиме.
horaceT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.