У меня проблема с машинным обучением, которую я пытаюсь решить. Я использую гауссовский HMM (от hmmlearn) с 5 состояниями, моделируя экстремальные отрицательные, отрицательные, нейтральные, положительные и экстремальные положительные в последовательности. Я создал модель в сущности нижеСкрытая марковская модель, сходящаяся к одному состоянию с использованием hmmlearn
https://gist.github.com/stevenwong/cb539efb3f5a84c8d721378940fa6c4c
import numpy as np
import pandas as pd
from hmmlearn.hmm import GaussianHMM
x = pd.read_csv('data.csv')
x = np.atleast_2d(x.values)
h = GaussianHMM(n_components=5, n_iter=10, verbose=True, covariance_type="full")
h = h.fit(x)
y = h.predict(x)
Проблема в том, что большинство из предполагаемых состояний сходится к середине, даже когда я явно вижу, что есть пики положительных значений и пики отрицательных значений, но все они сосредоточены вместе. Любая идея, как я могу получить его, чтобы лучше соответствовать данным?
РЕДАКТИРОВАТЬ 1:
Здесь матрица перехода. Я считаю, что, как он прочитал в hmmlearn находится через ряд (то есть строка [0] означает Prob о переходе к себе, состояние 1, 2, 3 ...)
In [3]: h.transmat_
Out[3]:
array([[ 0.19077231, 0.11117929, 0.24660208, 0.20051377, 0.25093255],
[ 0.12289066, 0.17658589, 0.24874935, 0.24655888, 0.20521522],
[ 0.15713787, 0.13912972, 0.25004413, 0.22287976, 0.23080852],
[ 0.14199694, 0.15423031, 0.25024992, 0.2332739 , 0.22024893],
[ 0.93, 0.12500688, 0.24880728, 0.21205912, 0.2409158 ]])
Если установить все Probs перехода до 0,2, это выглядит так (если я усредняю по состоянию, то разделение хуже).
Незначительный nitpick: рассматриваемая модель является гауссовой HMM, а не гауссовой смесью модели aka GMM. –
Спасибо. Это то, что я уже сделал с данными: 1) исходные данные имеют видимые циклы, но очень шумные, поэтому я использовал фильтр kalman для его сглаживания, параметры были выбраны с использованием алгоритма EM; 2) данные, которые вы видите выше, - это разница в журналах исходного временного ряда. Я отредактировал сообщение выше, следуя вашим предложениям. Хорошее Рождество – swmfg
Если вы поделились кодом визуализации состояний, я мог бы сыграть с ним и, возможно, предложить что-то полезное. Теперь я могу только сказать, что 10 итераций выглядят немного слишком мало. Кроме того, всего 157 образцов данных ... –