Теория грубых множеств: поиск минимального набора симптомов
Представьте: пациент приходит на приём. Врач выслушивает жалобы и назначает обследование. Температура, общий анализ крови, рентген, УЗИ — стандартная карточка. Часть из этого действительно нужна. Часть назначается по привычке.
Можно ли математически доказать какие симптомы несут реальную информацию о диагнозе, а какие — просто шум?
В этом примере мы делаем именно это. Берём таблицу 12 пациентов и 7 симптомов, перебираем все возможные комбинации признаков и проверяем каждую на согласованность — нет ли в ней конфликта когда одинаковые симптомы дают разные диагнозы. Наборы которые прошли проверку называются редуктами — это понятие из теории грубых множеств польского математика Здислава Павлака, предложенной в 1982 году.
По результатам перебора считаем вектор значимости: для каждого симптома — в какой доле валидных наборов он присутствует. Симптом с долей 1.0 обязателен — без него диагноз неоднозначен. Симптом с долей 0.5 заменяем — есть другие признаки которые справляются без него.
Результат оказывается неожиданным: температура и слабость — обязательны, а боль в горле, которую врачи проверяют почти автоматически — наименее информативный признак в данной таблице.
Метод не требует нейросетей, больших данных или сложных вычислений. Только таблица, логика и перебор. При этом он полностью интерпретируем: результат — конкретные списки симптомов с числовыми весами, а не чёрный ящик.
Реализация выполнена на языке Julia в среде Engee с использованием пакета Combinatorics. Код разбит на четыре логических блока: входные данные, функция проверки согласованности, основной перебор и подсчёт вектора значимости.
Медицина здесь — удобный пример. Тот же подход работает в промышленной диагностике, анализе анкет и отборе признаков для машинного обучения.
Подробный разбор математики, алгоритма и интерпретации результатов — в статье на Хабре: Какой минимум симптомов нужен врачу для постановки диагноза: теория грубых множеств вместо интуиции