Тогда возникает вопрос. Какие могут быть недостатки у функции?
1. Смещение к «да» или смещение к «нет».
Для всех случившихся событий перемножаем вероятности соотв. исхода. То же самое для всех неслучившихся. Одно делим на другое, в идеале должна получиться единица.
Можно работать с логарифмами, даже очень широкая статистика не даст переполнения: на мантиссу в double шесть байтов, а на порядок — и двух нет. Можно проводить сброс порядка: получили, скажем, число меньше 1e−50 — множим на эту цифру, запоминаем: 50 порядков в уме.
Если статистики очень много, стоит кластеризовать входы и для каждого кластера посчитать эту статистику.
2. Излишняя самоуверенность. Функция говорит «0,9», в то время как вероятность максимум 0,7. Думаю, можно решить той самой кластеризацией по выходу функции.
3. Неуверенная работа. Функция не даёт статистических аномалий, но просто неуверенно работает, слишком часто выдавая «а хрѣнъ его знает».
Vlad_Fedorenko предлагает площадь под ROC-кривой. Я бы просто предложил произведение вероятностей соответствующих исходов. Например, если у нас 6 пусков, можно сказать: «вероятность всегда 0,5», и получить результат 1/64≈0,016. А можно сказать: для трёх пусков вероятность 2/3, и для трёх — 1/3. Если так и случится, результат — 2
4/3
6≈0,022. Какой будет нормирующий коэффициент, сказать пока не могу.
UPD3. А ещё можно попробовать информационную энтропию.
UPD4. Эта конструкция, возможно, справится и с излишней самоуверенностью. Если она скажем этим тройкам 0,9 и 0,1, будет (0,9·0,9·0,1)² < 0,01.
UPD5. Идеал — разумеется, 1 (событию говорит 100%, если оно будет, и 0%, если нет).
UPD. Подкорректировал 1 — я так и имел в виду, но проглючил.
UPD2. Добавил неуверенную работу.