Пока абсолютно не понимаю, как бороться с проблемой
overfitting-а.
Если же
достаточно большое или количество алгоритмов достаточно маленькое, то можно в качестве первого приближения рассмотреть следующее решение.
В качестве оценки качества работы алгоритма
предлагается функция
Иными словами это
от логарифма вероятности того, что выпала последовательность
при условии того, что алгоритм работал идеально. Она максимальна, когда максимальна вероятность выпадения последовательности
при условии вероятностей, выдаваемых алгоритмом.
Она всегда будет отрицательной. Обычно, порядка
.
Если алгоритмов несколько (cкажем,
), то стоит рассмотреть функцию
определенную при
и найти ее максимум.
Функция выпукла вверх, а множество допустимых значений
выпукло, поэтому локальный максимум совпадет с глобальным. Можно взять
, скажем, все по
и, затем, в несколько итераций дойти до максимума с помощью какого-нибудь быстро-сходящегося метода (производные функции f можно сосчитать явно).
P.S. Если что-то по теме придумаете, буду рад увидеть это здесь, т.к. мне, например, очень интересна эта задача.
P.P.S. Если вы выложите реальные данные, то будет проще сравнивать различные методы. Например, если скажите, какого порядка
,
и
, то можно будет оценить быстродействие.
Хотя и сейчас можно. Оно порядка
, где
--- требуемая точность (то есть, допустимая погрешность) определения вероятностей (
--- оценка количества необходимых итераций), а
--- время, необходимое для вычисления числа
.