резюме

Продолжите соответствовать модели LDA

Синтаксис

updatedMdl = resume(ldaMdl,bag)
updatedMdl = resume(ldaMdl,counts)
updatedMdl = resume(___,Name,Value)

Описание

пример

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

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

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

свернуть все

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

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

  • '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