Как можно предиктить дату регистрации при массиве данных?
Допустим у меня есть некоторые данные в формате:
{ id: 1, date: unixdata }
И эти данные которые у меня есть это id с датами в шаг примерно 50 000 000. И для этого есть линейная прогрессия но она не подходит из за очень больших перепад в регистрации id'шников. Также есть интерполяция но при этом погрешность при таких данных 18 часов и 37 минут. При возрастании id погрешность будет только расти.
Что можно сделать?
При этом id не может быть ниже 1
Поправлю вопрос. Есть данные пользователей с полями id и date, поле id начинается с единицы. Всего id около 1.2млрд. В моей базе данных есть информация о id1 , id50млн и так далее в шаг 50млн до id1миллиард. Мне нужно узнать дату регистрации пользователя по известным данным но при использовании методов приведённых выше погрешность имеется и при вводе самого нового id выдается некорректная дата и из-за этого код работает не правильно. Нужны идеи, при этом есть примерные данные о росте пользователей (≈80k/d-140k/d и в пике 1 год был прирост ≈320k/d, и ещё из за этого у id встречаются одинаковые даты)
rPman, нет, по интерполяции через lowest и highest значениям рядом с id и у каждого id есть дата, таких значений от 1 до 1 миллиарда с шагом в 50млн и если нужно найти дату у 25млн id мы сравниваем самый маленький (id1) и самый большой (id50млн), точнее их значение (два поля id и date), и с помощью интерполяции получаем приближенное число. Получается погрешность в виде 12-18 часов из за неравномерного роста даты у id'шников
A1ikse1, что это за данные? Правильно ли я понимаю, что регистрация была бы в данных с id 0, но ее нет. И эти точки с даты регистрации примерно линейно падают, пропуская какие-то айдишники?
Очень запутанный вопрос, сложно сформулирован, приходится додумывать.
Например, "дата при массиве" по идее означает единственную дату на весь массив, но из контекста следует, что дата для каждого элемента массива. И таких запутывающих моментов много. Советую переформулировать так, чтобы было чётко и однозначно.
Если сайт - региональный то люди регистрируются в дневное время. И здесь например
анализ Фурье событий по суткам может показать наиболее вероятный пик.
Я так понимаю, что массив данных представляет монотонно возрастающую последовательность, формально колеблющуюся вокруг прямой или достаточно гладкой, почти "прямообразной", кривой. Такие последовательности очень неплохо интерполируются. Например, квадратными или кубическими сплайнами. Причём для достаточно точной интерполяции не требуется обрабатывать весь массив данных, достаточно обработать сравнительно узкое окно, погрешность интерполяции при этом возрастает незначительно.
Единственная мысль: попробуйте что-то вроде кубических сплайнов. Для первого интервала делайте квадратичную интерполяцию по 3 первым точкам. Для каждого следующего интервала - кубическую по 4 точкам (начало предыдущего интервала, этот интервал, конец следующего).
Типа если мы видим что между точками 1 и 2 много регистраций, между 3 и 4 мало, то скорее всего на текущем интервале от 2 до 3 точки идут более плотно в начале.
Но тут может быть косяк: кубическая интерполяция может дать и отрицательное приращение дат. Тогда текущий отрезок надо сделать линейно или квадратично.