Возобновите подгонку модели 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.