Представьте: пациент приходит на приём. Врач выслушивает жалобы и назначает обследование. Температура, общий анализ крови, рентген грудной клетки, УЗИ, мазок из горла – стандартная карточка. Часть из этого действительно нужна. Часть – назначается по привычке, «чтобы не пропустить».
Теперь вопрос: можно ли математически доказать какие симптомы несут реальную информацию о диагнозе, а какие – просто "шум"? Можно ли взять таблицу пациентов и получить на выходе точный ответ – вот эти три признака обязательны, этот четвёртый заменяем, а пятый почти бесполезен?
Оказывается, можно. И для этого не нужны нейросети, градиентный бустинг или сотни тысяч записей. Достаточно бинарной матрицы, красивой идеи из теории множеств и нескольких строк кода.
Сразу сделаю честную оговорку: я не врач и не претендую на медицинскую точность. Таблица пациентов в этой статье составлена по общедоступным представлениям из интернета – какие симптомы обычно сопровождают грипп, бронхит, пневмонию. Настоящие врачи составят такую матрицу куда точнее – на основе реальной клинической практики, статистики, протоколов. Моя цель другая: показать как математика может помочь врачу структурировать знания и найти в них закономерности. Не заменить клиническое мышление – а дать ему инструмент.
Медицина здесь – удобный и понятный пример. Тот же подход работает в промышленной диагностике, в анализе анкет, в задачах отбора признаков для машинного обучения, в системах поддержки принятия решений. Математика универсальна – меняется только предметная область.
В этой статье мы возьмём таблицу из 12 пациентов и 7 симптомов, переберём все возможные комбинации признаков, найдём те наборы которые позволяют однозначно поставить диагноз – и посчитаем вектор значимости каждого симптома. Реализацию сделаем в среде Engee на языке Julia.