Теорема Байеса говорит нам:
P(A|B)=P(B|A)P(A)/P(B)">
Давайте заменим буквы для событий A и B на X и Y соответственно. потому что вы используете A, B и C для обозначения людей, и это может сбить с толку:
P(X|Y) = P(Y|X) P(X) / P(Y)
Редактировать : следующее слегка ошибочно, потому что X
должно быть this post _by A_ is spam
, а не просто "это сообщение является спамом" (и, следовательно, Y должен быть просто "B принимает сообщение A, C отклоняет его «). Я не переделываю математику прямо здесь, потому что числа все равно меняются - см. Другие правки ниже для правильного числа и правильной арифметики.
Вы хотите, чтобы X
означало "этот пост является спамом", Y
означает комбинацию обстоятельств A has posted it, B approved it, C rejected it
(и давайте предположим, что эти обстоятельства условно независимы).
Нам нужно P(X)
, априорная вероятность того, что любой пост (независимо от того, кто его создает или одобряет) является спамом; P(Y)
, априорная вероятность того, что сообщение будет сделано A, одобрено B, отклонено C (будь то спам или нет); и P(Y | X)
, такой же, как последний, но с постом, являющимся спамом.
Как вы, наверное, заметили, вы на самом деле не дали нам все кусочки, которые нам нужны для вычислений. Вы, три пункта, говорите нам: данный пост от A является спамом с вероятностью 0,4 (кажется, именно так читается первая точка); Вероятность принятия B составляет 0,3, но мы не знаем, как это отличается для спама и не спама, за исключением того, что должна быть «небольшая» разница (низкая точность); C составляет 0,8, и мы опять не знаем, как на это влияет спам против не спама, за исключением того, что должна быть «большая» разница (высокая точность).
Итак, нам нужны еще цифры! Тот факт, что С имеет высокую точность при принятии 80% сообщений, говорит о том, что общий спам должен быть на удивление низким - если общий спам был таким же, как и у А, то 40%, то С должен был бы принять половину его (даже если он был идеален, чтобы всегда принимать не спам), чтобы получить общий 80% -й показатель принятия, и это вряд ли было бы "высокой точностью". Допустим, общее количество спама составляет всего 20%, а C принимает только 1/4 от него (и отвергает 1/16 не спама), что действительно очень хорошая точность и в целом соответствует числам, которые вы даете.
Догадываясь о В, который принимает в целом 30% и теперь «зная», что спам в целом составляет 20%, мы можем догадаться, что В принимает 1/4 спама и только 5/16 не спама.
Итак: P(X)=0.2
; P(Y)=0.3*0.2=0.06
(общее время принятия B, вероятность отказа C); P(Y|X)=0.4*0.25*0.75=0.075
(вероятность спама времени B вероятность принятия спама времени C вероятность отказа от спама).
Итак P(X|Y)=0.075*0.2/0.06=0.25
- если я не совершил какую-то арифметическую ошибку (вполне возможно, главное - показать вам, как можно рассуждать в таких случаях ;-), вероятность того, что этот конкретный пост будет спамом, составляет 0,25 - - немного выше, чем вероятность того, что любой случайный пост является спамом, ниже, чем вероятность того, что случайный пост на A будет спамом.
Но, конечно (даже при упрощенной гипотезе условной независимости повсюду; =) это вычисление очень чувствительно к моим догадкам / гипотезам о соотношении ложных срабатываний по сравнению с ложными отрицательными для B и C, и общем спаме соотношение. В нем задействовано пять чисел такого типа (общая вероятность спама, условная вероятность для каждого из B и C для спама и не спама), и вы даете нам только два соответствующих (линейных) ограничения (безусловная вероятность принятия для B и C) и два расплывчатых утверждения о «махании рукой» (о низкой и высокой точности), так что там много степеней свободы.
Если вы сможете лучше оценить пять ключевых чисел, вычисление можно сделать более точным.
И, кстати, Python (и тем более Django) не имеют абсолютно никакого отношения к делу - я рекомендую вам удалить эти нерелевантные теги, чтобы получить более широкий диапазон ответов!
Редактировать : пользователь уточняет (в комментарии - ШД действительно редактирует свой Q!):
Когда я сказал: «Модерации Б» принимают
ставка составляет всего 30% "Я имею в виду, что длякаждые десять раз B смягчает что-то
спам / нет спама он делает неправильно
решение 7 раз. Так что есть 70%
вероятность того, что он отметит что-то спам / нет
спам, когда его нет. Для пользователя C "Его
Приемлемость модераций составляет 80%
что если С говорит что-то спам или нет
спам, он прав 80% времени.
Общий шанс зарегистрированного пользователя
спам 20%.
... и просит меня повторить математику (я предполагаю, что ложные положительные и отрицательные значения одинаково вероятны для каждого из B и C). Обратите внимание, что B - отличный «противоположный индикатор», так как он ошибается 70% времени! -).
В любом случае: общий уровень принятия B сообщений А должен быть 0,6 * 0,3 (для тех случаев, когда он принимает не спам А) + 0,4 * 0,7 (для тех случаев, когда он принимает спам А) = 0,18 + 0,28 = 0,46; С должно быть 0,8 * 0,4 + 0,2 * 0,6 = 0,32 + 0,12 = 0,44. Итак, у нас есть ...:
P(X)=0.4
(раньше я ошибался в 0,2, так как игнорировал тот факт, что вероятность спама в A равна 0,4 - общая вероятность спама не равна актуально, так как мы знаем, что этот пост - это А!); P(Y)=0.46*0.56=0.2576
(общий коэффициент приемлемости B для A, коэффициент отклонения C для A); P(Y|X)=0.7*0.8=0.56
(вероятность получения спама от B, вероятность отклонения спама от C).
То есть P(X|Y)=0.56*0.4/0.2576=0.87
(округление). IOW: хотя априори вероятность того, что пост А является спамом, равна 0,4, как принятие Б, так и отклонение С усиливают его, поэтому этот конкретный пост А имеет около 87% вероятности быть спамом.