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: ["fairest"    "creatures"    "desire"    ...    ]
        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.41 |            |  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.00 | 8.1261e-03 |  1.031e+03 |         1.000 |             0 |
|          4 |       0.00 | 8.8626e-03 |  9.703e+02 |         1.000 |             0 |
|          5 |       0.00 | 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.01 | 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: ["fairest"    "creatures"    ...    ]
                    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.00 | 8.0569e-05 |  7.246e+02 |         0.785 |             3 |
|         32 |       0.00 | 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: ["fairest"    "creatures"    ...    ]
                    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 имя аргумента и 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 объект или разреженная матрица подсчетов слов. Если данные о валидации являются матрицей, то данные должны иметь ту же ориентацию и то же количество слов как входные документы.

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

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

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

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

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

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

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

свернуть все

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

Введенный в R2017b