Подход к машинному обучению с иерархической классификацией сверху вниз

У меня есть набор данных предложений, которые были помечены ярлыками из иерархии. Иерархия - это набор музыкальных жанров. Это дерево, а не группа DAG - у каждого узла есть только один родительский элемент и один родительский элемент. Вот отрывок в качестве примера:

root = music
     parent = latin
            child = afro-cuban
                    child = salsa
            child = brazilian
                    child = axe
     parent = non-latin
            child = classical
     ...

Например, для предложения Mozart is the best из собранных аннотаций большинство согласны с тем, что метка класса для этого предложения или основной истины - classical. Из иерархии мы знаем, что classical также является формой non-latin музыки, которая является формой music. В то время как i prefer salsa мог быть аннотирован как latin.

С точки зрения классификации, выравнивание иерархии - что я сделал - интуитивно не решает проблему, поскольку мы полностью игнорируем иерархию классов. Он также дает низкие результаты при использовании Weka и выбора классификаторов, поскольку мы сталкиваемся с проблемой многоклассовой классификации.

Моя проблема в том, что я читал очень расплывчатую литературу и онлайн-статьи о том, как реализована иерархическая классификация. Я бы хотел использовать Weka и Python. Но я просто хотел пояснить, как выполнять иерархическую классификацию в этой ситуации. Итак, мои вопросы:

1) как лучше всего обойти это? Будет ли оптимальным вариантом нисходящий подход? Если я сделаю это, как мне избежать проблемы неправильной классификации на каждом уровне? т.е. он может предсказывать latin на уровне 1 и classical на уровне 2. А как насчет двоичного классификатора? Я открыт для предложений.

2) как сюда попадают данные обучения и тестирования?

3) как можно оценить эффективность классификации? В частности, при нисходящем подходе, так как у нас будут оценки для каждого отдельного уровня.


person user47467    schedule 22.04.2016    source источник
comment
Разве не достаточно предсказать level3? Потому что, если вы знаете, что что-то classical, тогда оно неявно содержит, что level2 = non-latin и level1 = music.   -  person knb    schedule 11.04.2018


Ответы (3)



Я не уверен, что полностью понимаю вашу проблему, но из того, что я действительно понял, похоже, что Дерево решений или наиболее продвинутый алгоритм, такой как Random Forest, будет хорошим выбором. Вам нужно будет построить дерево, возможно, использовать некоторые техники НЛП для удаления ненужных слов, таких как «есть», «я», «the» (возможно, но нужно проверить это глубже) и использовать эти слова как функции дерева.

Что касается второго вопроса, вам, вероятно, стоит почитать о машинном обучении. Курс Эндрю Нг на Coursera - хороший выбор для начала. Но что касается вашего вопроса, обучение - это часть данных, которые вы выбираете для обучения, а тестовые данные - это то, что вы оцениваете производительности своего алгоритма. Это также должно ответить на ваш третий вопрос

person lazary    schedule 24.04.2016
comment
спасибо за ответ. Я знаю о цели обучения и тестирования данных, о том, что они делают, и о машинном обучении в целом. Я просто не понимаю, как вы будете делать это иерархически. Так вы предлагаете извлекать черты из моих предложений? Это только производит предложение в меньшем пространстве. Как это разрешить мою иерархическую проблему? Проблема в том, что класс принадлежит нескольким уровням. Как я объяснил, узел также можно классифицировать как его родительский, потому что концептуально это тоже было бы правильно. Как это сделать? - person user47467; 24.04.2016
comment
Извлечение функций из предложений - ну да, во-первых, это удалит много ненужных данных, во-вторых, в предложениях, которые вы указали в своем примере, он сохранит только значимые слова. Иерархическая проблема будет решена деревьями, и это тоже довольно интуитивно понятно. Например, в предложении: я предпочитаю сальсу, сальса будет сильной стороной, и когда она попадет в ваш классификатор, она, вероятно, будет указывать на сильный сигнал для афро-кубинцев, латыни или музыки. Зависит от того, какие у вас ярлыки В какой именно части дерева вас интересуют? высший уровень? второй? - person lazary; 24.04.2016
comment
У меня нет предварительных знаний о деревьях, поэтому, если бы вы знали или могли бы помочь мне с тем, как вы бы сделали эту Weka, это было бы здорово. Меня интересует все дерево, я думаю, это зависит от метки класса в предложении? - person user47467; 24.04.2016
comment
Я однажды нашел это вступление, оно содержит часть на деревьях и очень визуализирована. Мне это и вправду нравится. Надеюсь, поможет - person lazary; 24.04.2016
comment
Я не уверен, что деревья решений - это то, что мне нужно. Предыдущие статьи, которые я читал, классифицируют каждый узел как двоичную классификацию или на каждом иерархическом уровне. Нет никаких разъяснений относительно того, как это делается, или онлайн-руководств, если вы ничего не знаете? Было бы здорово. - person user47467; 24.04.2016

иерархическая организация классов, создание дерева или DAG (направленный ациклический граф) категорий, использование информации об отношениях между ними.

мы используем так называемый нисходящий подход, тренируя классификатор для каждого уровня (или узла) дерева (опять же, хотя это не единственный иерархический подход, он определенно наиболее широко используется и тот, который мы выбрали для наша проблема), где данное решение приведет нас к другому пути классификации.

ПРИМЕР МУЗЫКИ Из блога, ссылка на который дана ниже: мы начинаем с обучения классификатора предсказанию, скажем, жанра музыки (Death Metal), а затем обучаем другой классификатор для предсказания, например, национальности группы ( Шведский), и тогда у нас может быть классификатор, обученный предсказанию существующих диапазонов в этой подгруппе (Arch Enemy, At the Gates,…)

ознакомьтесь с этим сообщением об иерархической классификации для получения более подробной информации.

https://www.kdnuggets.com/2018/03/hierarchical-classification.html

person manish Prasad    schedule 11.04.2018