resume

Возобновите подгонку модели LDA

Описание

пример

updatedMdl = resume(ldaMdl,bag) возвращает обновленную модель LDA путем обучения для большего количества итераций на модели bag-of-words или bag-of-n-gams bag. Область входа bag должна быть той же моделью, которая используется для подгонки ldaMdl.

updatedMdl = resume(ldaMdl,counts) возвращает обновленную модель LDA путем обучения для получения дополнительных итераций в документах, представленных матрицей счетчиков слов counts. Область входа counts должна быть такой же матрицей, как и у ldaMdl.

пример

updatedMdl = resume(___,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение".

Примеры

свернуть все

Чтобы воспроизвести результаты в этом примере, установите rng на 'default'.

rng('default')

Загрузите данные примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит по одному сонету на линию со словами, разделенными пространством. Извлеките текст из sonnetsPreprocessed.txtразделите текст на документы в символах новой строки, а затем пометьте его токеном.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

Создайте модель мешка слов с помощью bagOfWords.

bag = bagOfWords(documents)
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: [1x3092 string]
        NumWords: 3092
    NumDocuments: 154

Подгонка модели LDA с четырьмя темами. The resume функция не поддерживает решатель по умолчанию для fitlda. Установите решатель LDA в свернутый вариационный порядок Байеса, нули.

numTopics = 4;
mdl = fitlda(bag,numTopics,'Solver','cvb0')
=====================================================================================
| Iteration  |  Time per  |  Relative  |  Training  |     Topic     |     Topic     |
|            | iteration  | change in  | perplexity | concentration | concentration |
|            | (seconds)  |   log(L)   |            |               |   iterations  |
=====================================================================================
|          0 |       0.35 |            |  3.292e+03 |         1.000 |             0 |
|          1 |       0.01 | 1.4970e-01 |  1.147e+03 |         1.000 |             0 |
|          2 |       0.00 | 7.1229e-03 |  1.091e+03 |         1.000 |             0 |
|          3 |       0.01 | 8.1261e-03 |  1.031e+03 |         1.000 |             0 |
|          4 |       0.00 | 8.8626e-03 |  9.703e+02 |         1.000 |             0 |
|          5 |       0.01 | 8.5486e-03 |  9.154e+02 |         1.000 |             0 |
|          6 |       0.00 | 7.4632e-03 |  8.703e+02 |         1.000 |             0 |
|          7 |       0.00 | 6.0480e-03 |  8.356e+02 |         1.000 |             0 |
|          8 |       0.00 | 4.5955e-03 |  8.102e+02 |         1.000 |             0 |
|          9 |       0.00 | 3.4068e-03 |  7.920e+02 |         1.000 |             0 |
|         10 |       0.00 | 2.5353e-03 |  7.788e+02 |         1.000 |             0 |
|         11 |       0.02 | 1.9089e-03 |  7.690e+02 |         1.222 |            10 |
|         12 |       0.00 | 1.2486e-03 |  7.626e+02 |         1.176 |             7 |
|         13 |       0.00 | 1.1243e-03 |  7.570e+02 |         1.125 |             7 |
|         14 |       0.00 | 9.1253e-04 |  7.524e+02 |         1.079 |             7 |
|         15 |       0.00 | 7.5878e-04 |  7.486e+02 |         1.039 |             6 |
|         16 |       0.00 | 6.6181e-04 |  7.454e+02 |         1.004 |             6 |
|         17 |       0.00 | 6.0400e-04 |  7.424e+02 |         0.974 |             6 |
|         18 |       0.00 | 5.6244e-04 |  7.396e+02 |         0.948 |             6 |
|         19 |       0.00 | 5.0548e-04 |  7.372e+02 |         0.926 |             5 |
|         20 |       0.00 | 4.2796e-04 |  7.351e+02 |         0.905 |             5 |
=====================================================================================
| Iteration  |  Time per  |  Relative  |  Training  |     Topic     |     Topic     |
|            | iteration  | change in  | perplexity | concentration | concentration |
|            | (seconds)  |   log(L)   |            |               |   iterations  |
=====================================================================================
|         21 |       0.00 | 3.4941e-04 |  7.334e+02 |         0.887 |             5 |
|         22 |       0.00 | 2.9495e-04 |  7.320e+02 |         0.871 |             5 |
|         23 |       0.00 | 2.6300e-04 |  7.307e+02 |         0.857 |             5 |
|         24 |       0.00 | 2.5200e-04 |  7.295e+02 |         0.844 |             4 |
|         25 |       0.00 | 2.4150e-04 |  7.283e+02 |         0.833 |             4 |
|         26 |       0.00 | 2.0549e-04 |  7.273e+02 |         0.823 |             4 |
|         27 |       0.00 | 1.6441e-04 |  7.266e+02 |         0.813 |             4 |
|         28 |       0.00 | 1.3256e-04 |  7.259e+02 |         0.805 |             4 |
|         29 |       0.00 | 1.1094e-04 |  7.254e+02 |         0.798 |             4 |
|         30 |       0.00 | 9.2849e-05 |  7.249e+02 |         0.791 |             4 |
=====================================================================================
mdl = 
  ldaModel with properties:

                     NumTopics: 4
             WordConcentration: 1
            TopicConcentration: 0.7908
      CorpusTopicProbabilities: [0.2654 0.2531 0.2480 0.2336]
    DocumentTopicProbabilities: [154x4 double]
        TopicWordProbabilities: [3092x4 double]
                    Vocabulary: [1x3092 string]
                    TopicOrder: 'initial-fit-probability'
                       FitInfo: [1x1 struct]

Просмотрите информацию о подгонке.

mdl.FitInfo
ans = struct with fields:
          TerminationCode: 1
        TerminationStatus: "Relative tolerance on log-likelihood satisfied."
            NumIterations: 30
    NegativeLogLikelihood: 6.3042e+04
               Perplexity: 724.9445
                   Solver: "cvb0"
                  History: [1x1 struct]

Возобновите подгонку модели LDA с более низким допуском логарифмической правдоподобности.

tolerance = 1e-5;
updatedMdl = resume(mdl,bag, ...
    'LogLikelihoodTolerance',tolerance)
=====================================================================================
| Iteration  |  Time per  |  Relative  |  Training  |     Topic     |     Topic     |
|            | iteration  | change in  | perplexity | concentration | concentration |
|            | (seconds)  |   log(L)   |            |               |   iterations  |
=====================================================================================
|         30 |       0.00 |            |  7.249e+02 |         0.791 |             0 |
|         31 |       0.01 | 8.0569e-05 |  7.246e+02 |         0.785 |             3 |
|         32 |       0.02 | 7.4692e-05 |  7.242e+02 |         0.779 |             3 |
|         33 |       0.00 | 6.9802e-05 |  7.239e+02 |         0.774 |             3 |
|         34 |       0.00 | 6.1154e-05 |  7.236e+02 |         0.770 |             3 |
|         35 |       0.00 | 5.3163e-05 |  7.233e+02 |         0.766 |             3 |
|         36 |       0.00 | 4.7807e-05 |  7.231e+02 |         0.762 |             3 |
|         37 |       0.00 | 4.1820e-05 |  7.229e+02 |         0.759 |             3 |
|         38 |       0.00 | 3.6237e-05 |  7.227e+02 |         0.756 |             3 |
|         39 |       0.00 | 3.1819e-05 |  7.226e+02 |         0.754 |             2 |
|         40 |       0.00 | 2.7772e-05 |  7.224e+02 |         0.751 |             2 |
|         41 |       0.00 | 2.5238e-05 |  7.223e+02 |         0.749 |             2 |
|         42 |       0.00 | 2.2052e-05 |  7.222e+02 |         0.747 |             2 |
|         43 |       0.00 | 1.8471e-05 |  7.221e+02 |         0.745 |             2 |
|         44 |       0.00 | 1.5638e-05 |  7.221e+02 |         0.744 |             2 |
|         45 |       0.00 | 1.3735e-05 |  7.220e+02 |         0.742 |             2 |
|         46 |       0.00 | 1.2298e-05 |  7.219e+02 |         0.741 |             2 |
|         47 |       0.00 | 1.0905e-05 |  7.219e+02 |         0.739 |             2 |
|         48 |       0.00 | 9.5581e-06 |  7.218e+02 |         0.738 |             2 |
=====================================================================================
updatedMdl = 
  ldaModel with properties:

                     NumTopics: 4
             WordConcentration: 1
            TopicConcentration: 0.7383
      CorpusTopicProbabilities: [0.2679 0.2517 0.2495 0.2309]
    DocumentTopicProbabilities: [154x4 double]
        TopicWordProbabilities: [3092x4 double]
                    Vocabulary: [1x3092 string]
                    TopicOrder: 'initial-fit-probability'
                       FitInfo: [1x1 struct]

Просмотрите информацию о подгонке.

updatedMdl.FitInfo
ans = struct with fields:
          TerminationCode: 1
        TerminationStatus: "Relative tolerance on log-likelihood satisfied."
            NumIterations: 48
    NegativeLogLikelihood: 6.3001e+04
               Perplexity: 721.8357
                   Solver: "cvb0"
                  History: [1x1 struct]

Входные параметры

свернуть все

Входная модель LDA, заданная как ldaModel объект. Чтобы возобновить подбор модели, необходимо подогнать ldaMdl с решателем 'savb', 'avb', или 'cvb0'.

Входная модель мешка слов или мешка n-граммов, заданная как bagOfWords объект или bagOfNgrams объект. Если bag является bagOfNgrams объект, затем функция обрабатывает каждый n-грамм как одно слово.

Счетчики частот слов, заданные как матрица неотрицательных целых чисел. Если вы задаете 'DocumentsIn' чтобы быть 'rows', затем значение counts(i,j) соответствует количеству раз, когда j-е слово словаря появляется во i-м документе. В противном случае значение counts(i,j) соответствует количеству раз, когда i-е слово словаря появляется во j-м документе.

Примечание

Аргументы bag и counts должно быть то же, что и для подгонки ldaMdl.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'LogLikelihoodTolerance',0.001 задает допуск логарифмической правдоподобности 0,001.
Опции решателя

свернуть все

Ориентация документов в матрице count слов, заданная как разделенная разделенными запятой парами, состоящая из 'DocumentsIn' и одно из следующих:

  • 'rows' - Вход является матрицей счетчиков слов со строками, соответствующими документам.

  • 'columns' - Вход является транспонированной матрицей счетчиков слов со столбцами, соответствующими документам.

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

Примечание

Если вы ориентируете матрицу count слов так, чтобы документы соответствовали столбцам и задавали 'DocumentsIn','columns', тогда вы можете испытать значительное сокращение времени оптимизации-выполнения.

Опция для подгонки концентрации темы, заданная как разделенная разделенными запятой парами, состоящая из 'FitTopicConcentration' и любой из них true или false.

Значение по умолчанию является значением, используемым для подгонки ldaMdl.

Пример: 'FitTopicConcentration',true

Типы данных: logical

Опция для подгонки концентрации темы, заданная как разделенная разделенными запятой парами, состоящая из 'FitTopicConcentration' и любой из них true или false.

Значение по умолчанию является значением, используемым для подгонки ldaMdl.

Функция подходит для Dirichlet private α=α0(p1p2pK) по теме смеси, где α0 является темой концентрации и p1,,pK являются вероятностями corpus topic, которые равны 1.

Пример: 'FitTopicProbabilities',true

Типы данных: logical

Относительная погрешность по логарифмической правдоподобности, заданный как разделенная разделенными запятой парами, состоящая из 'LogLikelihoodTolerance' и положительная скалярная величина. Оптимизация заканчивается, когда достигается этот допуск.

Пример: 'LogLikelihoodTolerance',0.001

Опции решателя пакета

свернуть все

Максимальное количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit' и положительное целое число.

Эта опция поддерживает модели, оснащенные только пакетными решателями ('cgs', 'avb', и 'cvb0').

Пример: 'IterationLimit',200

Опции Стохастического решателя

свернуть все

Максимальное количество проходов через данные, заданное как разделенная разделенными запятой парами, состоящая из 'DataPassLimit' и положительное целое число.

Если вы задаете 'DataPassLimit' но не 'MiniBatchLimit', затем значение по умолчанию 'MiniBatchLimit' игнорируется. Если вы задаете оба 'DataPassLimit' и 'MiniBatchLimit', затем resume использует аргумент, который приводит к обработке наименьшего количества наблюдений.

Эта опция поддерживает модели, оснащенные только стохастическими решателями ('savb').

Пример: 'DataPassLimit',2

Максимальное количество проходов мини-пакета, заданное как разделенная разделенными запятой парами, состоящая из 'MiniBatchLimit' и положительное целое число.

Если вы задаете 'MiniBatchLimit' но не 'DataPassLimit', затем resume игнорирует значение по умолчанию 'DataPassLimit'. Если вы задаете оба 'MiniBatchLimit' и 'DataPassLimit', затем resume использует аргумент, который приводит к обработке наименьшего количества наблюдений. Значение по умолчанию ceil(numDocuments/MiniBatchSize), где numDocuments количество входа документов.

Эта опция поддерживает модели, оснащенные только стохастическими решателями ('savb').

Пример: 'MiniBatchLimit',200

Мини-пакет, заданный как разделенная разделенными запятой парами, состоящая из 'MiniBatchLimit' и положительное целое число. Функция обрабатывает MiniBatchSize документы в каждой итерации.

Эта опция поддерживает модели, оснащенные только стохастическими решателями ('savb').

Пример: 'MiniBatchSize',512

Параметры отображения

свернуть все

Данные валидации для мониторинга сходимости оптимизации, заданные как разделенная разделенными запятой парами, состоящая из 'ValidationData' и a bagOfWords объект, a bagOfNgrams объект или разреженная матрица отсчётов слов. Если данные валидации являются матрицей, то данные должны иметь ту же ориентацию и то же количество слов, что и входные документы.

Частота валидации модели в количестве итераций, заданная как разделенная разделенными запятой парами, состоящая из 'ValidationFrequency' и положительное целое число.

Значение по умолчанию зависит от решателя, используемого для подгонки модели. Для стохастического решателя значение по умолчанию является 10. Для других решателей значение по умолчанию является 1.

Уровень подробностей, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose' и одно из следующих:

  • 0 - Не отображать подробные выходы.

  • 1 - отображение информации о прогрессе.

Пример: 'Verbose',0

Выходные аргументы

свернуть все

Обновленная модель LDA, возвращенная как ldaModel объект.

Введенный в R2017b