resume

Продолжите подбирать модель 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.02 |            |  3.292e+03 |         1.000 |             0 |
|          1 |       0.11 | 1.4970e-01 |  1.147e+03 |         1.000 |             0 |
|          2 |       0.14 | 7.1229e-03 |  1.091e+03 |         1.000 |             0 |
|          3 |       0.02 | 8.1261e-03 |  1.031e+03 |         1.000 |             0 |
|          4 |       0.13 | 8.8626e-03 |  9.703e+02 |         1.000 |             0 |
|          5 |       0.24 | 8.5486e-03 |  9.154e+02 |         1.000 |             0 |
|          6 |       0.24 | 7.4632e-03 |  8.703e+02 |         1.000 |             0 |
|          7 |       0.11 | 6.0480e-03 |  8.356e+02 |         1.000 |             0 |
|          8 |       0.12 | 4.5955e-03 |  8.102e+02 |         1.000 |             0 |
|          9 |       0.10 | 3.4068e-03 |  7.920e+02 |         1.000 |             0 |
|         10 |       0.14 | 2.5353e-03 |  7.788e+02 |         1.000 |             0 |
|         11 |       0.04 | 1.9089e-03 |  7.690e+02 |         1.222 |            10 |
|         12 |       0.16 | 1.2486e-03 |  7.626e+02 |         1.176 |             7 |
|         13 |       0.06 | 1.1243e-03 |  7.570e+02 |         1.125 |             7 |
|         14 |       0.09 | 9.1253e-04 |  7.524e+02 |         1.079 |             7 |
|         15 |       0.06 | 7.5878e-04 |  7.486e+02 |         1.039 |             6 |
|         16 |       0.06 | 6.6181e-04 |  7.454e+02 |         1.004 |             6 |
|         17 |       0.03 | 6.0400e-04 |  7.424e+02 |         0.974 |             6 |
|         18 |       0.06 | 5.6244e-04 |  7.396e+02 |         0.948 |             6 |
|         19 |       0.08 | 5.0548e-04 |  7.372e+02 |         0.926 |             5 |
|         20 |       0.06 | 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.05 | 3.4941e-04 |  7.334e+02 |         0.887 |             5 |
|         22 |       0.05 | 2.9495e-04 |  7.320e+02 |         0.871 |             5 |
|         23 |       0.02 | 2.6300e-04 |  7.307e+02 |         0.857 |             5 |
|         24 |       0.02 | 2.5200e-04 |  7.295e+02 |         0.844 |             4 |
|         25 |       0.02 | 2.4150e-04 |  7.283e+02 |         0.833 |             4 |
|         26 |       0.03 | 2.0549e-04 |  7.273e+02 |         0.823 |             4 |
|         27 |       0.04 | 1.6441e-04 |  7.266e+02 |         0.813 |             4 |
|         28 |       0.05 | 1.3256e-04 |  7.259e+02 |         0.805 |             4 |
|         29 |       0.05 | 1.1094e-04 |  7.254e+02 |         0.798 |             4 |
|         30 |       0.02 | 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.06 |            |  7.249e+02 |         0.791 |             0 |
|         31 |       0.05 | 8.0569e-05 |  7.246e+02 |         0.785 |             3 |
|         32 |       0.04 | 7.4692e-05 |  7.242e+02 |         0.779 |             3 |
|         33 |       0.02 | 6.9802e-05 |  7.239e+02 |         0.774 |             3 |
|         34 |       0.02 | 6.1154e-05 |  7.236e+02 |         0.770 |             3 |
|         35 |       0.05 | 5.3163e-05 |  7.233e+02 |         0.766 |             3 |
|         36 |       0.08 | 4.7807e-05 |  7.231e+02 |         0.762 |             3 |
|         37 |       0.02 | 4.1820e-05 |  7.229e+02 |         0.759 |             3 |
|         38 |       0.07 | 3.6237e-05 |  7.227e+02 |         0.756 |             3 |
|         39 |       0.02 | 3.1819e-05 |  7.226e+02 |         0.754 |             2 |
|         40 |       0.07 | 2.7772e-05 |  7.224e+02 |         0.751 |             2 |
|         41 |       0.04 | 2.5238e-05 |  7.223e+02 |         0.749 |             2 |
|         42 |       0.02 | 2.2052e-05 |  7.222e+02 |         0.747 |             2 |
|         43 |       0.03 | 1.8471e-05 |  7.221e+02 |         0.745 |             2 |
|         44 |       0.16 | 1.5638e-05 |  7.221e+02 |         0.744 |             2 |
|         45 |       0.09 | 1.3735e-05 |  7.220e+02 |         0.742 |             2 |
|         46 |       0.08 | 1.2298e-05 |  7.219e+02 |         0.741 |             2 |
|         47 |       0.03 | 1.0905e-05 |  7.219e+02 |         0.739 |             2 |
|         48 |       0.13 | 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 th слово словаря появляется в i th документ. В противном случае, значение counts(i,j) соответствует числу раз, i th слово словаря появляется в j th документ.

Примечание

Аргументы 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

Типы данных: логический

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

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

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

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

Типы данных: логический

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

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

  • 0 – Не отображайте многословный вывод.

  • 1 – Отобразите информацию о прогрессе.

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

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

свернуть все

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

Введенный в R2017b