Возобновите подгонку модели LDA
возвращает обновленную модель LDA путем обучения для большего количества итераций на модели bag-of-words или bag-of-n-gams updatedMdl = resume(ldaMdl,bag)bag. Область входа bag должна быть той же моделью, которая используется для подгонки ldaMdl.
возвращает обновленную модель LDA путем обучения для получения дополнительных итераций в документах, представленных матрицей счетчиков слов updatedMdl = resume(ldaMdl,counts)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]
ldaMdl - Входная модель LDAldaModel объектВходная модель LDA, заданная как ldaModel объект. Чтобы возобновить подбор модели, необходимо подогнать ldaMdl с решателем 'savb', 'avb', или 'cvb0'.
bag - Входная модельbagOfWords | объекта bagOfNgrams объектВходная модель мешка слов или мешка n-граммов, заданная как bagOfWords объект или bagOfNgrams объект. Если bag является bagOfNgrams объект, затем функция обрабатывает каждый n-грамм как одно слово.
counts - Частотные счетчики словСчетчики частот слов, заданные как матрица неотрицательных целых чисел. Если вы задаете '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'Ориентация документов в матрице count слов, заданная как разделенная разделенными запятой парами, состоящая из 'DocumentsIn' и одно из следующих:
'rows' - Вход является матрицей счетчиков слов со строками, соответствующими документам.
'columns' - Вход является транспонированной матрицей счетчиков слов со столбцами, соответствующими документам.
Эта опция применяется только в том случае, если документы входа заданы как матрица счетчиков слов.
Примечание
Если вы ориентируете матрицу count слов так, чтобы документы соответствовали столбцам и задавали 'DocumentsIn','columns', тогда вы можете испытать значительное сокращение времени оптимизации-выполнения.
'FitTopicConcentration' - Опция для подгонки тематического параметра концентрацииtrue | falseОпция для подгонки концентрации темы, заданная как разделенная разделенными запятой парами, состоящая из 'FitTopicConcentration' и любой из них true или false.
Значение по умолчанию является значением, используемым для подгонки ldaMdl.
Пример: 'FitTopicConcentration',true
Типы данных: logical
'FitTopicProbabilities' - Опция для подгонки тематических вероятностейtrue | falseОпция для подгонки концентрации темы, заданная как разделенная разделенными запятой парами, состоящая из 'FitTopicConcentration' и любой из них true или false.
Значение по умолчанию является значением, используемым для подгонки ldaMdl.
Функция подходит для Dirichlet private по теме смеси, где является темой концентрации и являются вероятностями corpus topic, которые равны 1.
Пример: 'FitTopicProbabilities',true
Типы данных: logical
'LogLikelihoodTolerance' - Относительная погрешность по логарифмической правдоподобности0.0001 (по умолчанию) | положительная скалярная величинаОтносительная погрешность по логарифмической правдоподобности, заданный как разделенная разделенными запятой парами, состоящая из 'LogLikelihoodTolerance' и положительная скалярная величина. Оптимизация заканчивается, когда достигается этот допуск.
Пример: 'LogLikelihoodTolerance',0.001
'IterationLimit' - Максимальное количество итераций100 (по умолчанию) | положительное целое числоМаксимальное количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit' и положительное целое число.
Эта опция поддерживает модели, оснащенные только пакетными решателями ('cgs', 'avb', и 'cvb0').
Пример: 'IterationLimit',200
'DataPassLimit' - Максимальное количество проходов через данныеМаксимальное количество проходов через данные, заданное как разделенная разделенными запятой парами, состоящая из 'DataPassLimit' и положительное целое число.
Если вы задаете 'DataPassLimit' но не 'MiniBatchLimit', затем значение по умолчанию 'MiniBatchLimit' игнорируется. Если вы задаете оба 'DataPassLimit' и 'MiniBatchLimit', затем resume использует аргумент, который приводит к обработке наименьшего количества наблюдений.
Эта опция поддерживает модели, оснащенные только стохастическими решателями ('savb').
Пример: 'DataPassLimit',2
'MiniBatchLimit' - Максимальное количество проходов мини-партииМаксимальное количество проходов мини-пакета, заданное как разделенная разделенными запятой парами, состоящая из 'MiniBatchLimit' и положительное целое число.
Если вы задаете 'MiniBatchLimit' но не 'DataPassLimit', затем resume игнорирует значение по умолчанию 'DataPassLimit'. Если вы задаете оба 'MiniBatchLimit' и 'DataPassLimit', затем resume использует аргумент, который приводит к обработке наименьшего количества наблюдений. Значение по умолчанию ceil(numDocuments/MiniBatchSize), где numDocuments количество входа документов.
Эта опция поддерживает модели, оснащенные только стохастическими решателями ('savb').
Пример: 'MiniBatchLimit',200
'MiniBatchSize' - Размер мини-партииМини-пакет, заданный как разделенная разделенными запятой парами, состоящая из 'MiniBatchLimit' и положительное целое число. Функция обрабатывает MiniBatchSize документы в каждой итерации.
Эта опция поддерживает модели, оснащенные только стохастическими решателями ('savb').
Пример: 'MiniBatchSize',512
'ValidationData' - Данные валидации[] (по умолчанию) | bagOfWords | объекта bagOfNgrams объект | разреженной матрицей счетчиков словДанные валидации для мониторинга сходимости оптимизации, заданные как разделенная разделенными запятой парами, состоящая из 'ValidationData' и a bagOfWords объект, a bagOfNgrams объект или разреженная матрица отсчётов слов. Если данные валидации являются матрицей, то данные должны иметь ту же ориентацию и то же количество слов, что и входные документы.
'ValidationFrequency' - Частота валидации моделиЧастота валидации модели в количестве итераций, заданная как разделенная разделенными запятой парами, состоящая из 'ValidationFrequency' и положительное целое число.
Значение по умолчанию зависит от решателя, используемого для подгонки модели. Для стохастического решателя значение по умолчанию является 10. Для других решателей значение по умолчанию является 1.
'Verbose' - Уровень подробностейУровень подробностей, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose' и одно из следующих:
0 - Не отображать подробные выходы.
1 - отображение информации о прогрессе.
Пример: 'Verbose',0
updatedMdl - Обновленная модель LDAldaModel объект (по умолчанию)Обновленная модель LDA, возвращенная как ldaModel объект.
bagOfNgrams | bagOfWords | fitlda | ldaModel | logp | predict | transform | wordcloud
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.