DPGMM кластеризация всех значений в один кластер

Итак, я преобразовал свой корпус в красивую матрицу word2vec. Эта матрица представляет собой матрицу с плавающей точкой с отрицательными и положительными числами.

Я не могу заставить бесконечный процесс Дирихле дать мне какой-либо сплоченный ответ.

Пример вывода [за 2 шага] выглядит так:

original word2vec matrix:
[[-0.09597077 -0.1617426  -0.01935256 ...,  0.03843787 -0.11019679
   0.02837373]
 [-0.20119116  0.09759717  0.1382935  ..., -0.08172804 -0.14392921
  -0.08032629]
 [-0.04258473  0.03070175  0.11503845 ..., -0.10350088 -0.18130976
  -0.02993774]
 ..., 
 [-0.08478324 -0.01961064  0.02305113 ..., -0.01231162 -0.10988192
   0.00473828]
 [ 0.13998444  0.05631495  0.00559074 ...,  0.05252389 -0.14202785
  -0.03951728]
 [-0.02888418 -0.0327519  -0.09636743 ...,  0.10880557 -0.08889513
  -0.08584201]]
Running DGPMM for 20 clusters of shape (4480, 100)
Bound after updating        z: -1935576384.727921
Bound after updating    gamma: -1935354454.981427
Bound after updating       mu: -1935354033.389434
Bound after updating  a and b: -inf
Cluster proportions: [  4.48098985e+03   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00]
covariance_type: full
Bound after updating        z: -inf
Bound after updating    gamma: -inf
Bound after updating       mu: -inf
Bound after updating  a and b: -inf
Cluster proportions: [  4.48098985e+03   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00]

Как можно заметить, все выглядит так, как будто z, gamma & mu взрываются, и в итоге система сходится к одному кластеру, что не совсем точно. Я попытался поиграться с альфа-версией для DPGMM, но она не сильно изменилась.

Я пытаюсь автоматически кластеризовать слова, которые ближе к значению, используя автономную систему кластеризации. K-Means требует "K", которое я не хочу предоставлять.

1 ответ

Решение

Здесь могут быть некоторые скрытые числовые проблемы. Проблема заключается в высокой размерности вашего набора данных. Это приведет к бесконечно малым вероятностям при моделировании гауссовой смеси, что сделает модель очень маловероятной. В какой-то момент вы, кажется, получите -inf значение, а затем это не удается.

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

Один кластер имеет размер 4480,98985, остальные 19 кластеров имеют размер 1.00053406. Это должно добавить до 4480, я думаю... но это не так. Кроме того, 19 из 20 кластеров состоят из одного элемента тогда? Так что у вас тоже могут быть проблемы с выбросами.

К-значит тоже не будет работать лучше.

Другие вопросы по тегам