Задать вопрос
@A1ikse1

Как можно предиктить дату регистрации при массиве данных?

Допустим у меня есть некоторые данные в формате:
{ 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 встречаются одинаковые даты)
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Средний 8 комментариев
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Единственная мысль: попробуйте что-то вроде кубических сплайнов. Для первого интервала делайте квадратичную интерполяцию по 3 первым точкам. Для каждого следующего интервала - кубическую по 4 точкам (начало предыдущего интервала, этот интервал, конец следующего).
Типа если мы видим что между точками 1 и 2 много регистраций, между 3 и 4 мало, то скорее всего на текущем интервале от 2 до 3 точки идут более плотно в начале.

Но тут может быть косяк: кубическая интерполяция может дать и отрицательное приращение дат. Тогда текущий отрезок надо сделать линейно или квадратично.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы