Один многолетний классификатор или один для каждого типа метки?
-
16-10-2019 - |
Вопрос
Допустим, мне нужно классифицировать адреса с помощью Scikit-Learn, поэтому, если я хочу, чтобы мой классификатор мог классифицировать адреса по имени улицы и Post/Zip-код, если я выполняю классификатор OneVsRest или разделить их на два разных классификатора ( для того же обучения)?
Я попробовал оба, и, похоже, наличие нескольких классификаторов может быть лучшим выбором, так как это быстрее обучать несколько меньших классификаторов. Это как это должно быть сделано?
Решение
Оба способа действительны, и оба обычно используются. Иногда классификатор, который утверждает, что является MultiLabel, может просто разделить этикетки на несколько классификаторов OneVsRest под капюшоном и удобно соединять результаты вместе в конце.
Тем не менее, есть случаи, когда методы принципиально различаются. Например, при обучении нейронной сети с несколькими целями (метками) вы можете настроить структуру сети, так что существует общая структура. Общие узлы в конечном итоге будут функциями обучения, которые полезны для всех целей, которые могут быть очень полезными.
Например, если вы занятия (этикетки) являются «кошками», «кошками» и «собакой», вам может понадобиться алгоритм, который сначала учится различать любую кошку и любую собаку, а затем в Более поздний шаг учится разделять кошек, которые являются домашними животными от больших кошек (как лев!). Это называется иерархией, и если ваш классификатор может использовать иерархию, вы можете получить лучшую точность. Если ваши занятия полностью независимы, это может не иметь никакого значения.
Я предлагаю вам начать с самого простых методов (т. Е. Onevsrest), и посмотреть, подходит ли производительность вашим потребностям, а затем перейдите к более сложным методам (Multilabel, иерархические методы и т. Д.) Только после того, как вам нужна лучшая производительность.