Кілька міток у контрольованому алгоритмі навчання


10

У мене є корпус тексту з відповідною тематикою. Наприклад, "A rapper Tupac was shot in LA"це було позначено як ["celebrity", "murder"]. Отже, в основному кожен вектор функцій може мати багато міток (не однакова кількість. Перший вектор функцій може мати 3 мітки, другий 1, третій 5).

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

Чи є спосіб перетворити Naive Bayes в проблему класифікації мультиелементів (якщо є кращий підхід - будь ласка, повідомте мене)?

PS кілька речей про дані, які я маю.

  • приблизно 10 000 елементів у наборі даних
  • текст - це приблизно 2-3 речення
  • максимум 7 міток на текст

@fordprefect Multinomial Naive Bayes використовує мультиноміальне розподіл для ймовірностей певної ознаки, заданої класом: . ОП хоче, щоб класифікатор керував кількома виходами, як описано TheGrimmScientist. p(fi|c)
Роберт Сміт

Відповіді:


6

Для початку Naive Bayes, мабуть, тут не підходить. Це передбачає незалежність серед вхідних даних (звідси "Наївний") і слів у реченні дуже залежні.

Але, припускаючи, що ви дійсно хочете запустити з NB як алгоритм для початку експерименту, я б розглядав два варіанти:

Непристойно: багато класифікаторів NB

Це був би альтернативний підхід. Складіть коруп з усіх слів, які спостерігаються як ваш вектор вводу. Складіть корпус з усіх тегів, які спостерігаються як ваш вектор результатів. Класифікатор NB з декількома виходами є еквівалентом наявності декількох класифікаторів NB з одним висновком кожного (тому робити те, що легше реалізувати в будь-якій програмі, яку ви використовуєте). Розглядайте кожен елемент як навчальний зразок, де заданим введенням (словом) є 1якщо це слово є, а 0якщо це слово - ні. Використовуйте ту ж бінарну схему для виводу.

Цей грубий спосіб змушує застосувати класифікатор NB до ваших даних і залишає вам знайти сенс, як і раніше, щоб видобути величезний набір класифікаторів, які вам залишаться.

Більш витончено: обробляйте свої дані

Такий підхід я рекомендую, якщо ви хочете працювати з одним багатокласним класифікатором NB.

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

Цей метод перевантажує роботу з очищення ваших даних і полегшить розуміння результатів класифікатора NB.


дякую за ваш внесок, якщо ви маєте ідею, що було б краще, ніж NB, будь ласка, дайте мені знати.
Сальвадор Далі

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

@TheGrimmScientist Чи не було б розумним використовувати перший підхід? Якщо у вас є вектор функцій f1, f2, f3 і скажімо, 3 мітки для цього вектора, ми можемо розділити його на 3 вектори (усі, що містять однакові функції f1, f2, f3), з різними мітками як вихідні. Тоді можна використовувати Naive Bayes як завжди. Я не впевнений, чи це ви мали на увазі.
Роберт Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.