метрики оценки для нескольких значений за сессию

Вопрос или проблема

У меня есть приложение, которое выполняет мою функцию foo() несколько раз для каждой сессии пользователя. Существуют 2 альтернативных алгоритма, которые я могу реализовать в качестве функции foo(), и моя цель — оценить их на основе задержки выполнения.

Количество вызовов foo() за сессию пользователя переменное, но не превысит 10000. Допустим, значения задержки таковы:

Algo1: [ [12, 30, 20, 40, 24, 280], [13, 14, 15, 100], [20, 40] ]
Algo2: [ [1, 10, 5, 4, 150, 20], [14, 10, 20], [21, 33, 41, 79] ]

Я рассматриваю следующие варианты выбора лучшего алгоритма.

  1. среднее значение по каждой сессии, а затем оценить cdf
  2. медиана по каждой сессии, а затем оценить cdf

Какой из них является лучшей метрикой для выбора победителя? Или есть другой метод, который лучше обоих?

Обычно обращают внимание на 90-й или 99-й процентиль задержки в компьютерных системах.

Пользователь не заметит разницу в пару миллисекунд задержки, но если функция иногда занимает несколько секунд, это очень заметно.

Вот предложение:

Стандартизируйте все (если вы опустите это, то какое-то большое число, например, $9999$, может все испортить), затем возьмите среднее значение за сессию пользователя. Затем, при необходимости, умножьте это число на $x/10$, например, где $x$ — это размер выборки в сессии пользователя (рассматривайте это как доказательство, где больше выборок добавляет больше уверенности), и, наконец, усредните по количеству сессий для алгоритма.

Ответ или решение

Оценочные метрики для многозначных сессий

Вопрос о том, какие метрики следует использовать для оценки двух альтернативных алгоритмов реализации функции foo(), требует четкого понимания значимости различных показателей задержки выполнения функций. В данном случае задержки представляют собой ключевой аспект, поскольку они влияют на общий пользовательский опыт и производительность приложения.

1. Введение в проблему

Каждая сессия пользователя вызывает функцию foo() несколько раз, и задержка выполнения этих функций варьируется. Чтобы определить, какой из двух алгоритмов — Algo1 или Algo2 — является более эффективным, необходимо тщательно анализировать полученные данные задержки. Приведенные данные задержек представляют собой списки значений, которые представляют время исполнения для каждого вызова функции в отдельной сессии.

Задержки:

  • Algo1: [ [12, 30, 20, 40, 24, 280], [13, 14, 15, 100], [20, 40] ]
  • Algo2: [ [1, 10, 5, 4, 150, 20], [14, 10, 20], [21, 33, 41, 79] ]

2. Основные метрики для оценки

В аранжировании задержки выполнения алгоритмов два основных подхода были предложены:

  • Среднее значение задержки по каждой сессии и дальнейшая оценка с помощью функции распределения вероятностей (CDF).
  • Медиана задержки по каждой сессии с последующей оценкой CDF.

Каждый из этих подходов может дать представление об общей производительности, но имеет свои особенности.

3. Оценка среднего и медианного значений

Среднее значение (Mean):

  • Рассмотрение среднего значения задержки позволяет получить общее представление о производительности функции. Однако это значение чувствительно к выбросам. Например, в случае с Algo1, задержка равная 280 значительно повысит среднее, что может привести к неправильным выводам.

Медиана (Median):

  • Медиана, с другой стороны, менее чувствительна к выбросам и дает хорошее представление о типичном времени выполнения функции. Это особенно важно в сценариях, где может быть значительная вариативность в данных.

4. Альтернативные методы оценки

В дополнение к вышеописанным способам, стоит рассмотреть минимальные и максимальные значения, а также процентильные метрики, такие как 90-й и 99-й перцентили. Эти метрики помогут понять не только средние значения, но и то, как часто функции могут испытывать задержки, которые могут значительно повлиять на пользовательский опыт.

  • 90-й и 99-й процентиль:
    • Эти показатели могут использоваться для понимания того, какие значения задержки являются "критическими". Например, высокий 99-й процентиль может указывать на то, что в редких случаях задержки выполнения функций могут быть заметными и ухудшают пользовательский опыт.

5. Стандартизация и финальная оценка

Перед проведением анализа, рекомендуется стандартизировать данные задержки. Это может помочь избежать влияния аномально высоких значений на конечные результаты. Рассмотрение случая, когда вы умножаете среднее значение на коэффициент, отражающий количество вызовов в сессии, также может усилить доверие к получаемым результатам.

6. Рекомендации по выбору метрики

На основании проведенного анализа, рекомендуется использовать медиану в качестве основной метрики для оценки производительности алгоритмов. Она предоставляет более устойчивое представление о времени выполнения функции, минимизируя влияние выбросов. Дополнительно, использование 90-го и 99-го перцентилей может предоставить ценную информацию о менее частых, но критически важных задержках, которые могут повлиять на общее восприятие работы приложения.

Таким образом, использование комплексного подхода, сочетающего медиану и процентильные метрики, позволит наиболее объективно оценить эффективность каждого из алгоритмов и сделать обоснованный выбор в пользу более быстрого и надежного решения.

Оцените материал
Добавить комментарий

Капча загружается...