Введем матричные обозначения.

Пусть - оператор нормирования матрицы по строкам (по столбцам для фортрана).

Для матриц символы   обозначают соответствующие индексы.

Операторы  обозначают поэлементные операции умножения и деления.

Пусть

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

Для фортрана индексация для матриц и должна быть обратной, так как матрица размещается в памяти по столбцам.

Заметим, что

  1. Аналогично

Запишем основной шаг PLSA-EM алгоритма в матричной форме.

EM:

  1.  
  2.  
  1.  

Шаги a и b  в каждом случае назависимы, это позволяет оптимизировать программу при распараллеливании.