Здравствуйте!
Есть задача классификации на основе табличных документов и классификатора должностей.
В самом классификаторе прописаны области их коды, описания и какие уровни должностей сущействуют в данной области. уровней должностей ~10 кодов. областей ~250
Классификатор используется чтобы вручную проставлять данные в таблицах excel. Иерархия подразделений по уровням 2-8ур., должность, количество подчиненных, а также город, все это влияет на уровень должности и коды областей
Нужно по данным определить:
Уровень должности (например, р0, р1, р2, р3, с1, с2…)
Код области (например, 1.11, 2.25, 81.33 и т.п.)
Пример структуры данных (таблица excel):
"Подразделение 2 уровня": "Управление безопасности",
"Подразделение 3 уровня": "Отдел внутреннего контроля",
"Должность": "Начальник отдела",
"Город": "Москва",
"Код области": "81.33",
"Уровень должности": "р2"
"Подчиненные": "10"
Уровень должности:
Классов 10–15 (р0, р1, р2, ..., с3)
Модель (CatBoost) обучается быстро, даёт:
85% точности на обучающей выборке
~75% на новых, но внутри одной компании (не внешние данные)
Код области:
Классов более 100 (например, 1.11, 2.25, 90.66, 81.33)
Модель обучается долго (CatBoost), и точность всего ~50%
Особенно плохо предсказывает редкие коды
Вопрос:
Можно ли посоветовать рабочую стратегию, чтобы:
Модель предсказывала код области с точностью >80%
Работала стабильно даже на новых документах других компаний или то же компании
Пробовал:
Двухэтапную модель: кластер → код
CatBoost с текстовыми признаками ("контекст" из подразделений и должности)
эмбеддинги + CatBoost
Буду благодарен за рекомендации по архитектуре модели или пайплайна. Какой флоу нужно реализовать чтобы решить данную зачдачу с высокой точностью?
Спасибо!