Для надежного тестирования необходим большой объем данных
В прошлых статьях мы рассматривали проблемы разработки экспериментов и анализа данных, возникающие при определении производительности системы. В первой из них мы говорили о влиянии человеческого фактора, во второй - об аппаратных проблемах. Давайте сегодня закончим обсуждением ловушек, которые кроются в обычных статистических методах, если применять их в нашей работе.
Как я отмечал в прошлой статье, расчет среднего - грубый метод, который легко может привести к неверным заключениям. Если брать среднее, подброшенная монета всегда становится на ребро, однако это нельзя назвать типичным результатом. Это просто середина между обычными (и при этом крайними) результатами - орлом и решкой.
Пользователь, который в половине случаев получает отличные результаты, а в половине - никакие, вряд ли будет доволен, при этом неважно, какой получается средняя оценка производительности системы. Так что нам надо уметь правильно ставить вопросы, чтобы утверждение, что одна система работает лучше, чем другая, имело смысл.
Пол Коэн, профессор информатики Университета штата Массачусетс в Эмхерсте, предлагает следующий образец диалога между автором "улучшенной" системы и его скептически настроенным коллегой.
"Доказательства, - говорит первый, - у меня есть доказательства. Сегодня вечером я запущу программу, средний показатель будет выше 60, и тогда все поймут, что модифицированный код лучше". Скептик отвечает: "Показатели старого кода уже были выше 60 в 16 из 120 тестов, и поэтому у нового кода есть шанс примерно в одной восьмой случаев пройти тест благодаря чистой случайности, а не потому, что он действительно лучше".
В чем-то скептик Коэна прав. Если переложить его тираду на технический язык, то получится, что в одной восьмой случаев существует шанс ложно-позитивного результата данного теста. Скептик доказывает: тест недостаточно хорош для оправдания высоких затрат на внедрение нового решения. Тому, кто предлагает изменения, придется спросить: "Хорошо, каким должен быть риск, чтобы вы признали это дело стоящим?" Если все соглашаются, что приемлемый риск составляет примерно 5%, тогда вы можете просто определить производительность существующей системы по результатам тестов с достоверностью 95 % и договориться, что новая система будет принята, если покажет такие же или лучшие результаты.
Нам надо правильно ставить вопросы о том, что значит, что одна система работает лучше, чем другая |
Но представим, вам приходится сравнивать не новое предложение и существующие базовые параметры с долгой историей реальной работы в прошлом, а одно новое предложение с другим, да еще ни по одному из них нет достаточного количества данных о производительности. Что такое производительность с достоверностью 95% для системы, которая прошла полномасштабное тестирование всего десять раз?
Кому-то захочется воспользоваться методом нормального распределения, подсчитать среднее значение и стандартное отклонение по результатам каждой из систем. Затем они возьмут стандартные таблицы и по значениям вероятностей сделают заключение, что одна из систем лучше другой. Однако, если данных по каждому случаю немного, это может привести к ошибке.
При небольших наборах данных (выборка меньше, скажем, 30) соответствующее распределение - это Т-распределение: куполообразная кривая типа кривой нормального распределения, но с более "толстыми" "концами", отображающими более высокий шанс экстремального результата. Большинству из нас интуиция подсказывает, что такое возможно, но такой принцип распределения подводит под это ощущение базу.
Мы не можем назвать победителя, если не знаем, как вести счет. Давайте измерять то, что действительно важно, и сравнивать то, что сравнимо.
К Питеру Коффи можно обратиться через MCI Mail: 357-1756, или через CompuServe: 72631,113, или Internet 3571756@MCIMAIL.COM.
Питер Коффи