Вы можете начать с Марковская модель . В модели Маркова вы предполагаете, что вероятность каждого состояния определяется только предыдущим состоянием. Например, в серии, подобной 000111100111, вы получаете следующие вхождения перехода:
Xn=0 Xn=1
X(n-1)=0 3 2
X(n-1)=1 1 5
Написано в вероятности:
Xn=0 Xn=1
X(n-1)=0 0.6 0.4
X(n-1)=1 0.17 0.83
И вы можете использовать его как функцию: вы сканируете все серии тренировок и отмечаете частоту переходов от 0-> 0, 0-> 1, 1-> 0 и 1-> 1. Для классификации вы смотрите на последнее состояние вашей строки запроса и ищите вероятность того, что следующее состояние будет 0 или, соответственно, 1, в матрице перехода. И исходя из этого вы выбираете более вероятное состояние.
Даже если этот подход прост, он обычно работает очень хорошо.
Как только вы заставите его работать с предыдущей цифрой, вы можете начать смотреть на две предыдущие цифры и использовать их в качестве другой функции. Следовательно, матрица перехода для примера может выглядеть следующим образом:
Xn=0 Xn=1
X(n-2)=0, X(n-1)=0 1 2
X(n-2)=0, X(n-1)=1 0 2
X(n-2)=1, X(n-1)=0 1 0
X(n-2)=1, X(n-1)=1 1 3
И вы даже можете расширить его до трех последних цифр и т. Д.
Чтобы объединить функции вместе, вы просто умножаете все вероятности того, что следующее состояние равно 0, из всех функций вместе:
p(next is 0)=p1(next is 0)*p2(next is 0)*p3(next is 0)*...*pn(next is 0)
и вы можете аналогичным образом рассчитать вероятность того, что следующее состояние будет 1:
p(next is 1)=p1(next is 1)*p2(next is 1)*p3(next is 1)*...*pn(next is 1)
и выберите более вероятное состояние. Конечно, вам не нужно вычислять p (далее 1) как
p(next is 0)+p(next is 1)=1
Просто для иллюстрации того, насколько эффективен этот подход, сыграйте «Рок-ножницы-ножницы» против компьютера на The New York Times и нажмите «Посмотреть, что думает компьютер», чтобы увидеть модель Маркова в действии.