Задача состоит в нормализации(0-1) стакана приказов в биржевой торговле.
В стакане я могу видеть только 25 наилучших ценовых предложений, т.е. 25 приказов вида ASK и 25 приказов вида BID. Если я правильно понимаю то для нормализации нужно максимальное число в стакане(это будет 1), а минимальное(это будет 0), остальные числа это разброс между макс и мин значениями. Таким образом получается, что 1 всегда будет первый приказ в списке ASK, а 0 последний приказ в списке BID.
Подскажите, пожалуйста, как можно нормализовать быстро меняющиеся данные такого рода? Нужно ли создавать отдельную БД для нормализации? И если да, то как?(Приказы быстро отменяются/появляются и непонятно какие данные надо записывать)
Описанная вами нормализация называется Min-Max Scaling
и вычисляется по формуле:
z[i] = (x[i] - min(x)) / (max(x) - min(x))
Соответственно самым быстрым способом скалирования быстроизменяющихся данных будет хранение трёх дополнительных значений (переменных):
Расчёт скалированного значения:
z[i] = (x[i] - min_value) / diff_max_min
Далее по мере поступления новых значений обновлять эти три переменные при необходимости (если новое значение больше текущего максимума или меньше текущего минимума).
PS Другие способы нормализации данных
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть таблица avatars и таблица usersВ таблице users есть поле avatar_id
Использую laravel+nginxДопустим утром сделал chown -R 777 www-data /var/www/site
аргумент $value принимает значение только первого свойстваКак правильно применить это ко второму свойству?