Как описано в комментарии к вопросу,
I want to calculate the likelihood of a certain class to appear based on the given distribution of the training set
,
проблема тривиальна и вряд ли является машинным обучением :
Просто подсчитайте количество вхождений каждого класса в"тренировочный набор", Count_12, Count_34, ... Count_910.Вероятность появления данного класса xy определяется просто:
P(xy) = Count_xy / Total Number of elements in the "training set"
= Count_xy / (Count_12 + Count_34 + Count_56 + Count_78 + Count_910)
Более интересная проблема ...
... состоит в рассмотрении учебного набора как последовательность и угадать, каким будет следующий элемент в этой последовательности.Вероятность того, что следующий элемент будет принадлежать данной категории, будет тогда не только основана на предыдущем для этой категории (P (xy), вычисленный выше), но также будет учитывать элементы, которые предшествуют этому в последовательности.Одна из интересных частей этой проблемы заключается в том, чтобы выяснить, как «далеко назад» выглядеть и сколько «веса» придать предыдущим последовательностям предметов.
Редактировать (сейчасэтот OP указал на его / ее интерес к «более интересной проблеме»).
Эта проблема «прогнозирование с учетом предшествующей последовательности» почти напрямую отображается в
алгоритм машинного обучения-для прогнозирования порядка событий StackOverflow вопрос.
Небольшие различия заключаются в том, что алфавит имеет 10 различных кодов (4 в другом вопросе) и тот факт, что здесь мы пытаемся предсказать класс кодов, а не просто сам код.Что касается этого объединения, здесь, 2 кода на класс, у нас есть несколько вариантов:
- работа с классами с начала , т.е. заменить каждый код, считанный в последовательности, наего класс, и только затем учитывайте и отслеживайте классы.
- работайте только с кодами, т. е. создайте предиктор от 1 до 10 кодов и рассматривайте класс только в самом конце, добавляя вероятностьиз двух кодов, составляющих класс, для получения вероятности того, что следующий элемент принадлежит этому классу.
- некое гибридное решение: рассмотрите / работайте с кодами, но иногда объединяйте в класс.
Мой личный выбор состоял бы в том, чтобы сначала попытаться использовать предиктор кода (только агрегирование в самом конце) и, возможно, адаптировать его оттуда, если каким-то образом понимание, полученное в результате этой первоначальной попытки, скажет нам, что логика или ее производительность могут бытьупрощенный или улучшенный мы бы агрегировали раньше.Действительно, один и тот же предиктор можно использовать для проверки обоих подходов, просто нужно изменить входной поток, заменив все четные числа нечетным числом, предшествующим ему.Я предполагаю, что ценная информация (с целью угадывания будущих кодов) теряется, когда мы агрегируем рано.