Я запустил LDA на искру для набора документов и заметил, что значения topicMatrix, которые представляют распределение темы по срокам, более 1, например, 548.2201, 685.2436, 138.4013 ... Что делает эти значения означают? Являются ли они логарифмическими значениями распределения или чем-то. Как преобразовать эти значения в значения распределения вероятности. Спасибо заранее.Интерпретация результатов Spark MLLib LDA
ответ
В обеих моделях (т.е. DistributedLDAModel
и LocalLDAMoel
) метод topicsMatrix
будет, я считаю, возвращение (примерно, есть немного регуляризации из-за Дирихль предварительного по темам) ожидаемой слово-тема графы матрица. Чтобы проверить это, вы можете взять эту матрицу и суммировать все столбцы. Результирующий вектор (длины длины темы-размера) должен быть приблизительно равен счету слов (по всем вашим документам). В любом случае для получения тем (распределения вероятности по словам в словаре) вам необходимо нормализовать столбцы матрицы, возвращаемой topicsMatrix
таким образом, чтобы каждая сумма до 1.
Я не проверяла его полностью, но что-то, как это должно работать, чтобы нормализовать столбцы матрицы, возвращаемую topicsMatrix
:
import breeze.linalg.{DenseVector => BDV}
import org.apache.spark.mllib.linalg._
def normalizeColumns(m: Matrix): DenseMatrix = {
val bm = Matrices.toBreeze(m).toDenseMatrix
val columnSums = BDV.zeros[Double](bm.cols).t
var i = bm.rows
while (i > 0) { i -= 1; columnSums += bm(i, ::) }
i = bm.cols
while (i > 0) { i -= 1; bm(::, i) /= columnSums(i) }
new DenseMatrix(bm.rows, bm.cols, bm.data)
}
Нормализовать столбцы матрицы, возвращаемой темами. Матрица в чистом scala
def formatSparkLDAWordOutput(wordTopMat: Matrix, wordMap: Map[Int, String]): scala.Predef.Map[String, Array[Double]] = {
// incoming word top matrix is in column-major order and the columns are unnormalized
val m = wordTopMat.numRows
val n = wordTopMat.numCols
val columnSums: Array[Double] = Range(0, n).map(j => (Range(0, m).map(i => wordTopMat(i, j)).sum)).toArray
val wordProbs: Seq[Array[Double]] = wordTopMat.transpose.toArray.grouped(n).toSeq
.map(unnormProbs => unnormProbs.zipWithIndex.map({ case (u, j) => u/columnSums(j) }))
wordProbs.zipWithIndex.map({ case (topicProbs, wordInd) => (wordMap(wordInd), topicProbs) }).toMap
}
- 1. Понимание Spark MLlib Формат ввода LDA
- 2. Невозможно импортировать имя LDA MLlib в Spark
- 3. Spark 1.4 Mllib LDA topicDistributions() возвращает неправильное количество документов
- 4. Spark MLlib LDA, как определить распределение тем нового невидимого документа?
- 5. Понимание LDA in Spark
- 6. Spark MLLib Crossvalidation SVM
- 7. Объединение Spark Streaming + MLlib
- 8. Spark mllib перетасовывание данных
- 9. RowMatrix, MLlib, Java Spark
- 10. Настройка алгоритмов Apache Spark MLlib
- 11. Построение результатов MLLib (Scala)
- 12. Интерпретация линейной регрессии MLLib o/p
- 13. PCA в Spark MLlib и Spark ML
- 14. Apache Spark - MLlib - Матричное умножение
- 15. Как обслуживать модель Spark MLlib?
- 16. Spark mllib LinearRegression weird result
- 17. Spark MLlib: Включает категориальные функции
- 18. Spark MLlib рекомендуемые методы двигателя
- 19. Spark MLlib/K-Means интуиция
- 20. Spark MLLIB параллелизм нескольких узлов
- 21. Проблема в понимании модели темы LDA в MLlib
- 22. Спарк 1.5 MlLib LDA - получать тему distribusions новых документов
- 23. Скрытое распределение Дирихле (LDA) в Spark
- 24. Интерпретация результатов от lightFM
- 25. Интерпретация результатов XCode AddressSanitizer
- 26. интерпретация результатов Наивного Байеса
- 27. интерпретация результатов теста JUnit?
- 28. Интерпретация результатов теста нагрузки
- 29. Интерпретация результатов поиска
- 30. Интерпретация результатов для HPROF
Благодарим за ответ. Но есть ли какая-либо документация, в которой упоминаются эти вещи? – hari
Исходный код Scala - это документация. ;-) –
ОК, большое спасибо. Также я хотел проверить распространение темы для документов. Я пытался ldamodel.topicdistribution(), но он показывал, что он не является членом библиотеки искры. Знаете ли вы, как найти распределение тем для обученных и новых документов? – hari