exponenta event banner

резюме

Возобновить установку модели LDA

Описание

пример

updatedMdl = resume(ldaMdl,bag) возвращает обновленную модель LDA путем обучения более итерациям на модели мешка слов или мешка n-граммов 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 с четырьмя темами. 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.
Параметры решателя

свернуть все

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

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

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

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

Примечание

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

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

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

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

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

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

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

Функция соответствует предшествующему Дирихле α = α0 (p1p2⋯pK) на смесях темы, где α0 - концентрация темы, а p1,...,pK - вероятности темы корпуса, которые суммируются до 1.

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

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

Относительный допуск на log-правдоподобие, указанный как разделенная запятыми пара, состоящая из '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' и bagOfWords объект, a bagOfNgrams объект или разреженная матрица подсчета слов. Если данные проверки являются матрицей, то они должны иметь ту же ориентацию и то же количество слов, что и входные документы.

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

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

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

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

  • 1 - Отображение информации о ходе выполнения.

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

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

свернуть все

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

Представлен в R2017b