Какой алгоритм статистической классификации может предсказать истину / ложь для последовательности входных данных?

15

Учитывая последовательность входов, мне нужно определить, обладает ли эта последовательность определенным желаемым свойством. Свойство может быть только истинным или ложным, то есть существует только два возможных класса, к которым может принадлежать последовательность.

Точная связь между последовательностью и свойством неясна, но я считаю, что она очень последовательна и должна подойти для статистической классификации. У меня есть большое количество случаев для обучения классификатора, хотя это может быть немного шумно, в том смысле, что есть небольшая вероятность того, что последовательности назначен неправильный класс в этом обучающем наборе.

Пример тренировочных данных:

Sequence 1: (7 5 21 3 3) -> true
Sequence 2: (21 7 5 1) -> true
Sequence 3: (12 21 7 5 11 1) -> false
Sequence 4: (21 5 7 1) -> false
...

Грубо говоря, свойство определяется набором значений в последовательности (например, наличие «11» означает, что свойство почти наверняка будет ложным), а также порядком значений (например, «21 7 5»). «значительно увеличивает вероятность того, что свойство верно).

После обучения я смогу дать классификатору ранее невиданную последовательность, например (1 21 7 5 3), и он должен вывести свою уверенность в том, что свойство истинно. Существует ли хорошо известный алгоритм для обучения классификатора с такого рода входами / выходами?

Я рассмотрел наивный байесовский классификатор (который на самом деле нельзя адаптировать к тому факту, что порядок имеет значение, по крайней мере, без серьезного нарушения предположения о том, что входные данные независимы). Я также исследовал скрытый подход к модели Маркова, который представляется неприменимым, поскольку доступен только один выход вместо одного вывода на вход. Что я пропустил?

Роман Старков
источник
У вас есть способ измерить расстояние между парой последовательностей? Известна ли минимальная и / или максимальная длина последовательности?
Крейг Райт
@CraigWright Нет подходящей меры расстояния, о которой я могу думать. Можно предположить максимальную длину порядка 12 и минимум около 4. Кроме того, существует около 30 различных значений (они не являются неограниченными натуральными числами; достаточно небольшой набор возможностей)
Роман Старков
Какие переменные множественного ответа вы упоминаете? Я читал вашу проблему, так как это двоичный вывод, и, возможно, вы могли бы просто создать фиктивные переменные Var1.1, Var1.12, ..., Var12.12
B_Miner
@B_Miner Я, возможно, неправильно понимаю, как работает HMM, но кажется, что он работает следующим образом: я передаю ему свою входную последовательность (abcde), и она выводит скрытую последовательность, наиболее соответствующую этому, а именно (a 'b' c 'd' e ' ). Я не думаю, что фиктивные переменные решат это; Мне нужна истинная / ложная классификация для всей последовательности.
Роман Старков
@romkyns, это не совсем то, как работает HMM. HMM - это вероятностный процесс. Учитывая последовательность и HMM M , вы можете вычислить вероятность того, что M выведет s (используя динамическое программирование; прямой алгоритм). Кроме того, учитывая набор обучающих последовательностей, вы можете найти HMM M, который имеет максимальную вероятность создания этих обучающих последовательностей (используя алгоритм Баума-Уэлча). Так что HMM вполне можно попробовать здесь. Там будут некоторые детали, чтобы заполнить, хотя. sMMsM
DW

Ответы:

10

Вы можете попробовать вероятностные подходы, похожие на наивный байесовский классификатор, но с более слабыми предположениями. Например, вместо предположения о сильной независимости сделайте предположение Маркова:

p(xc)=p(x0c)tp(xtxt1,c)

- метка вашего класса, x - ваша последовательность. Вам необходимо оценить два условных распределения: одно для c = 1 и одно для c = 0 .cxc=1c=0

По правилу Байеса:

p(c=1x)=p(xc=1)p(c=1)p(xc=1)p(c=1)+p(xc=0)p(c=0).

Какие распределения выбрать для зависит от того, какие другие предположения вы можете сделать относительно последовательностей и сколько данных у вас есть.p(xtxt1,c)

Например, вы можете использовать:

p(xtxt1,c)=π(xt,xt1,c)iπ(xi,xt1,c)

С такими распределениями, если в ваших последовательностях встречается 21 различное число, вам придется оценить параметра π ( x t , x t , c ) плюс 21 2 = 42 параметра для p ( x 0c ) плюс 2 параметра для p ( c ) .21212=882π(xt,xt,c)212=42p(x0c)2p(c)

Если предположения вашей модели не выполняются, это может помочь в точной настройке параметров непосредственно в зависимости от эффективности классификации, например, путем минимизации средней логарифмической потери

1#D(x,c)Dlogp(cx)

используя градиент-спуск.

Лукас
источник
p(xt|xt1,c)
p(xtxt1,c)E[xtxt1,c]=xt1c
Лукас
6

Я хотел бы предложить вам определить некоторые функции, а затем выбрать алгоритм машинного обучения для применения к этим функциям.

Особенности: По сути, каждая функция должна быть чем-то, что может быть вычислено из определенной последовательности, и что, по вашему мнению, может иметь отношение к тому, имеет ли последовательность свойство или нет. Основываясь на вашем описании, вы можете рассмотреть следующие функции:

  • ii(7 5 21 3 3)

  • (7 5 21 3 3)7 55 2121 33 3302302

  • «Мешок триграмм». Вы также можете рассмотреть триграммы, которые являются подпоследовательностью трех последовательных чисел из исходной последовательности. Вы можете сделать то же, что и выше.

d=30+302+303d

ii

d

DW
источник
Первой попыткой, которую я фактически осуществил, была «сумка триграмм» с наивной байесовской классификацией. Результаты обнадеживают, но не велики. Я думал, что это может быть связано с тем фактом, что триграммы совсем не независимы: если у меня есть «1 2 3», то у меня также очень вероятно будет триграмма «2 3 *». Возможно, мне стоит поэкспериментировать с точными функциями еще.
Роман Старков
Хорошая идея - больше экспериментировать как с разными наборами функций, так и с разными алгоритмами обучения. Кроме того, основываясь на описании вашей проблемы, вы можете добавить функции для отображения каждого отдельного числа (пакет слов, а не просто пакет триграмм): если вы используете только триграммы, вам усложняется обучение алгоритму машинного обучения. такие факты, как «последовательности, содержащие 11, почти наверняка не имеют этого свойства».
DW
2

То, что вы эффективно делаете, это проверка гипотез на временных рядах. HMM будут работать для вас, хотя вам придется адаптировать их к вашему конкретному случаю.

Честно говоря, если вы не можете записать какое-то математическое описание того, что вы пытаетесь обнаружить, вы не уйдете слишком далеко. Возможно, вы можете рассказать нам о том, какую функцию вы ожидаете увидеть?

user873
источник
1
Машинное обучение показало нам, что мы можем очень далеко продвинуться, не имея представления о том, что искать.
Bayerj
1

Учитывая максимальную длину 12 в последовательности, может работать нейронная сеть с 12 входами и одним выходом, но вам придется заполнять конец каждой последовательности нулями или некоторым инертным значением.

Крейг Райт
источник
1

Вы пробовали использовать байесовские сети? Это первое, о чем я думаю, когда мне нужно объединить несколько кусков данных (поступающих по одному за раз), чтобы получить вероятности случайной величины.

Байесовские сети не полагаются на допущение независимости, которое делает наивный Байес.

Кстати, скрытые марковские модели являются частным случаем байесовских сетей.

DojoGojira
источник