Идея четвертая
Так как в последние несколько лет я работаю в сфере сельского хозяйства, примеры будут приведены именно из этой области. Однако описанные подходы применимы к любой сфере деятельности и любым наборам данных.
Представьте, что у вас есть несколько наборов данных за определённый период. Периодичность сбора данных здесь не критична, поскольку временные ряды можно (и нужно!) нормализовать при помощи базовой математики. На помощь приходят интерполяционные полиномы Ньютона, кривые Гаусса и другие полезные инструменты. Данные сохраняем в формате {id, date, value}. После нормализации date все ряды приводятся к единому виду и готовы к сопоставлению.
С помощью алгоритмов машинного обучения и математических моделей, таких как SARIMAX, можно провести анализ и выявить зависимости между сопоставляемыми значениями рядов в виде функций. Но, чтобы не погружаться в долгие и скучные объяснения работы ИИ и обучения нейронных сетей, опустим эту часть. Уверен, ваша собственная "нейронка", размещённая в вашей голове, справится не хуже.
Допустим, у нас есть несколько временных рядов:
— Показатель надоев — усреднённое значение надоев с одной коровы в регионе за день.
— Усреднённая температура воздуха в регионе.
— Количество корма, которое давали животным.
— Абстрактный показатель размера субсидии, которую можно получить с одного животного с указанным надоем.
Конечно, показатели я отчасти выдумал, но для примера они вполне годятся.
Теперь представим, что вы визуализировали эти данные на графике. Я для этого использовал библиотеку Chart.js, но вы можете выбрать любую другую. Вглядевшись в график, можно предположить, что при увеличении температуры воздуха надои растут. Ну любят коровы тепло, да и солнышко, судя по всему, способствует лактации. Также видно, что увеличение корма положительно влияет на надои.
При помощи методов математического анализа я выявил линейные зависимости между показателями, которые можно описать следующими формулами:
1) Надои = Температура - Корм/10
2) Надои = Надои * Корм / 10
3) Субсидия = Надои / 4
Коэффициенты я выбрал совершенно случайно, исключительно по наитию. Однако инструмент, который я создал, позволяет строить более сложные зависимости и экспериментировать с ними прямо на графике.
Для примера: откройте ссылку, нажмите кнопку "Загрузить предопределённые данные", чтобы увидеть набор цифр и показателей. Далее последовательно добавьте вышеуказанные формулы и посмотрите на график. Перемещая вверх и вниз значения показателей, вы увидите, как меняются зависимые величины. Если вашим целевым показателем является надой, можно искать оптимальные значения остальных переменных. Добавили корм — надои подскочили, снизили температуру — сделали поправку на осень и так далее.
Ещё одна интересная задача, которую можно решить с помощью этого подхода, — это сопоставление нечётких и чётких данных. Представьте, что у нас есть не точные значения, а диапазоны или качественные описания. Например, температура воздуха в одном хозяйстве измеряется в диапазонах ("тёплая", "холодная"), а в другом указывается с точностью до десятых градусов. Как их объединить? Очень просто! Здесь нам на помощь приходит концепция функции принадлежности. Мы задаём правила, описывающие, как точные значения температуры соответствуют нечётким категориям. Например, "тёплая температура" может быть представлена как диапазон от 20 до 30°C с функцией принадлежности, которая постепенно уменьшается к краям диапазона.
Теперь допустим, что показатели кормления у вас указаны чётко, например, 5 кг в день на корову. А у данных надоев есть некоторая неопределённость, так как разные хозяйства по-разному ведут учёт. Мы можем сопоставить эти данные, нормализуя их по единой шкале: превращаем чёткие данные (например, "5 кг") в функцию принадлежности (например, "обильное кормление"). Это делается через заранее заданные интервалы или статистические оценки. Затем применяем правила нечёткой логики, чтобы оценить, как "тёплая погода" и "обильное кормление" совместно влияют на надои.
При сопоставлении нечётких и чётких данных важно помнить, что даже самые строгие числа иногда не учитывают контекст. Например, "5 кг корма" для одной коровы зимой может быть недостаточно, а летом — избыточно. Используя гибкость нечеткой логики, можно моделировать зависимости таким образом, чтобы учитывать реальные сценарии: диапазоны температур, сезонные факторы и вариации в данных. Итоговый анализ даёт не только средние значения, но и диапазоны, которые отображают степень неопределённости и позволяют лучше прогнозировать результаты.
Собственно, инструмент примитивный. Да что там — это даже не инструмент, а прототип. Но мне кажется, что у такого подхода есть потенциал. Что думаете?
p.s. Формулы я исполняю при помощи eval. Да, небезопасно, да криво, но работает. Для прототипа годится.
Пример тут: https://stukalin.com/df/