Учитывая последовательность входов, мне нужно определить, обладает ли эта последовательность определенным желаемым свойством. Свойство может быть только истинным или ложным, то есть существует только два возможных класса, к которым может принадлежать последовательность.
Точная связь между последовательностью и свойством неясна, но я считаю, что она очень последовательна и должна подойти для статистической классификации. У меня есть большое количество случаев для обучения классификатора, хотя это может быть немного шумно, в том смысле, что есть небольшая вероятность того, что последовательности назначен неправильный класс в этом обучающем наборе.
Пример тренировочных данных:
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)
, и он должен вывести свою уверенность в том, что свойство истинно. Существует ли хорошо известный алгоритм для обучения классификатора с такого рода входами / выходами?
Я рассмотрел наивный байесовский классификатор (который на самом деле нельзя адаптировать к тому факту, что порядок имеет значение, по крайней мере, без серьезного нарушения предположения о том, что входные данные независимы). Я также исследовал скрытый подход к модели Маркова, который представляется неприменимым, поскольку доступен только один выход вместо одного вывода на вход. Что я пропустил?
источник
Ответы:
Вы можете попробовать вероятностные подходы, похожие на наивный байесовский классификатор, но с более слабыми предположениями. Например, вместо предположения о сильной независимости сделайте предположение Маркова:
- метка вашего класса, x - ваша последовательность. Вам необходимо оценить два условных распределения: одно для c = 1 и одно для c = 0 .c x c=1 c=0
По правилу Байеса:
Какие распределения выбрать для зависит от того, какие другие предположения вы можете сделать относительно последовательностей и сколько данных у вас есть.p(xt∣xt−1,c)
Например, вы можете использовать:
С такими распределениями, если в ваших последовательностях встречается 21 различное число, вам придется оценить параметра π ( x t , x t , c ) плюс 21 ⋅ 2 = 42 параметра для p ( x 0 ∣ c ) плюс 2 параметра для p ( c ) .21⋅21⋅2=882 π(xt,xt,c) 21⋅2=42 p(x0∣c) 2 p(c)
Если предположения вашей модели не выполняются, это может помочь в точной настройке параметров непосредственно в зависимости от эффективности классификации, например, путем минимизации средней логарифмической потери
используя градиент-спуск.
источник
Я хотел бы предложить вам определить некоторые функции, а затем выбрать алгоритм машинного обучения для применения к этим функциям.
Особенности: По сути, каждая функция должна быть чем-то, что может быть вычислено из определенной последовательности, и что, по вашему мнению, может иметь отношение к тому, имеет ли последовательность свойство или нет. Основываясь на вашем описании, вы можете рассмотреть следующие функции:
(7 5 21 3 3)
(7 5 21 3 3)
7 5
5 21
21 3
3 3
«Мешок триграмм». Вы также можете рассмотреть триграммы, которые являются подпоследовательностью трех последовательных чисел из исходной последовательности. Вы можете сделать то же, что и выше.
источник
То, что вы эффективно делаете, это проверка гипотез на временных рядах. HMM будут работать для вас, хотя вам придется адаптировать их к вашему конкретному случаю.
Честно говоря, если вы не можете записать какое-то математическое описание того, что вы пытаетесь обнаружить, вы не уйдете слишком далеко. Возможно, вы можете рассказать нам о том, какую функцию вы ожидаете увидеть?
источник
Учитывая максимальную длину 12 в последовательности, может работать нейронная сеть с 12 входами и одним выходом, но вам придется заполнять конец каждой последовательности нулями или некоторым инертным значением.
источник
Вы пробовали использовать байесовские сети? Это первое, о чем я думаю, когда мне нужно объединить несколько кусков данных (поступающих по одному за раз), чтобы получить вероятности случайной величины.
Байесовские сети не полагаются на допущение независимости, которое делает наивный Байес.
Кстати, скрытые марковские модели являются частным случаем байесовских сетей.
источник