符合潜在狄利克雷分配(LDA)模型
潜在狄利克雷分配(LDA)模型是一个话题模型,发现潜在主题的集合文件和推断单词概率在主题。如果模型是适合使用bag-of-n-grams模型,然后该软件将字格作为单独的单词。
复制的结果在这个例子中,集rng
来“默认”
。
rng (“默认”)
加载示例数据。该文件sonnetsPreprocessed.txt
莎士比亚的十四行诗的包含预处理版本。文件包含每行一个十四行诗,单词之间用一个空格来分隔。提取的文本sonnetsPreprocessed.txt
在换行字符,文本分割成文档,然后标记文件。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
创建一个bag-of-words模型使用bagOfWords
。
袋= bagOfWords(文档)
袋= bagOfWords属性:计数:[154 x3092双]词汇:“公平”“生物”“欲望”…]NumWords: 3092 NumDocuments: 154
适合一个LDA模型有四个主题。
numTopics = 4;numTopics mdl = fitlda(袋)
最初的话题作业在0.213222秒内取样。= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |迭代每个相对| | |时间培训|主题|主题| | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | 0 | 0.49 | 1.000 | 1.215 e + 03 | | 0 | | 1 | 0.02 | 1.0482 e-02 e + 03 | 1.128 | 1.000 | 0 | | 2 | 0.02 | 1.7190 e 03 e + 03 | 1.115 | 1.000 | 0 | | 3 | 0.02 | 4.3796 e-04 e + 03 | 1.118 | 1.000 | 0 | | 4 | 0.01 | 9.4193 e-04 e + 03 | 1.111 | 1.000 | 0 | | 5 | 0.01 | 3.7079 e-04 e + 03 | 1.108 | 1.000 | 0 | | 6 | 0.01 | 9.5777 e-05 e + 03 | 1.107 | 1.000 | 0 | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
mdl = ldaModel属性:NumTopics: 4 WordConcentration: 1 TopicConcentration: 1 CorpusTopicProbabilities: [0.2500 - 0.2500 0.2500 - 0.2500] DocumentTopicProbabilities: [154 x4双]TopicWordProbabilities: (x4 3092双)词汇:“公平”“生物”…]TopicOrder:“initial-fit-probability”FitInfo: [1 x1 struct]
使用词云可视化的话题。
图为topicIdx = 1:4次要情节(2,2,topicIdx) wordcloud (mdl topicIdx);标题(主题:“+ topicIdx)结束
适合一个LDA模型由一组文档字数矩阵。
复制这个例子的结果,集rng
来“默认”
。
rng (“默认”)
加载示例数据。sonnetsCounts.mat
包含一个单词统计矩阵和相应的预处理词汇版本的莎士比亚的十四行诗。的值计数(i, j)
对应的次数j
词的词汇出现在我
文档。
负载sonnetsCounts.mat大小(数量)
ans =1×2154 3092
适合7 LDA模型与主题。抑制详细输出,集“详细”
为0。
numTopics = 7;mdl = fitlda (numTopics计数,“详细”,0);
可视化多个主题混合使用堆叠柱形图表。可视化前三个输入文档的主题混合物。
topicMixtures =变换(mdl计数(1:3,:));图barh (topicMixtures,“堆叠”1)xlim([0])标题(“主题混合”)包含(“主题概率”)ylabel (“文档”)传说(“主题”+字符串(1:numTopics),“位置”,“northeastoutside”)
复制的结果在这个例子中,集rng
来“默认”
。
rng (“默认”)
加载示例数据。该文件sonnetsPreprocessed.txt
莎士比亚的十四行诗的包含预处理版本。文件包含每行一个十四行诗,单词之间用一个空格来分隔。提取的文本sonnetsPreprocessed.txt
在换行字符,文本分割成文档,然后标记文件。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
创建一个bag-of-words模型使用bagOfWords
。
袋= bagOfWords(文档)
袋= bagOfWords属性:计数:[154 x3092双]词汇:“公平”“生物”“欲望”…]NumWords: 3092 NumDocuments: 154
适合一个LDA模型与20的话题。
numTopics = 20;numTopics mdl = fitlda(袋)
最初的话题作业在0.035863秒内取样。= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |迭代每个相对| | |时间培训|主题|主题| | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | 0 | 0.02 | 5.000 | 1.159 e + 03 | | 0 | | 1 | 0.08 | 5.4884 e-02 e + 02 | 8.028 | 5.000 | 0 | | 2 | 0.06 | 4.7400 e 03 e + 02 | 7.778 | 5.000 | 0 | | 3 | 0.05 | 3.4597 e 03 e + 02 | 7.602 | 5.000 | 0 | | 4 | 0.05 | 3.4662 e 03 e + 02 | 7.430 | 5.000 | 0 | | 5 | 0.05 | 2.9259 e 03 e + 02 | 7.288 | 5.000 | 0 | | 6 | 0.06 | 6.4180 e-05 e + 02 | 7.291 | 5.000 | 0 | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
mdl = ldaModel属性:NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 CorpusTopicProbabilities: [0.0500 0.0500 0.0500 0.0500 0.0500……]DocumentTopicProbabilities: [154 x20的双]TopicWordProbabilities: [3092 x20的双]词汇:(“公平”“生物”…]TopicOrder:“initial-fit-probability”FitInfo: [1 x1 struct]
预测主题数组的新文档。
newDocuments = tokenizedDocument ([“在一个叫什么名字?增加了其他名字同样芬芳。”“如果音乐是爱情的食粮,玩。”]);newDocuments topicIdx =预测(mdl)
topicIdx =2×119日8
使用词云可视化预测主题。
图次要情节(1、2、1)wordcloud (mdl, topicIdx (1));标题(“主题”+ topicIdx(1)次要情节(1、2、2)wordcloud (mdl, topicIdx (2));标题(“主题”+ topicIdx (2))
袋
- - - - - -输入模型bagOfWords
对象|bagOfNgrams
对象输入bag-of-words或bag-of-n-grams模型,指定为一个bagOfWords
对象或一个bagOfNgrams
对象。如果袋
是一个bagOfNgrams
函数对象,然后将每个语法视为一个字。
numTopics
- - - - - -许多话题的话题,指定为一个正整数。对于一个例子,演示如何选择主题的数量,看看为LDA模型选择的主题。
例子:200年
计数
- - - - - -频率计数的单词频率计数的话,指定为一个矩阵的非负整数。如果您指定“DocumentsIn”
是“行”
值,然后计数(i, j)
对应的次数j词的词汇出现在我文档。否则,该值计数(i, j)
对应的次数我词的词汇出现在j文档。
指定可选的逗号分隔条名称,值
参数。的名字
参数名称和吗价值
相应的价值。的名字
必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家
。
“规划求解”、“真空断路”
指定使用近似变分求解贝叶斯。
解算器
- - - - - -为优化解算器研究生院理事会的
(默认)|“savb”
|“真空断路”
|“cvb0”
LogLikelihoodTolerance
- - - - - -相对宽容对数似0.0001
(默认)|积极的标量对数似相对宽容,指定为逗号分隔组成的“LogLikelihoodTolerance”
和积极的标量。当达到这个公差优化终止。
例子:“LogLikelihoodTolerance”, 0.001
FitTopicProbabilities
- - - - - -选择合适的语料库主题概率真正的
(默认)|假
选择合适的主题集中,指定为逗号分隔组成的“FitTopicConcentration”
,要么真正的
或假
。
符合之前的狄利克雷函数 的混合物, 浓度和话题吗 语料库是主题概率之和为1。
例子:“FitTopicProbabilities”,假的
数据类型:逻辑
FitTopicConcentration
- - - - - -选择合适的主题集中真正的
|假
选择合适的主题集中,指定为逗号分隔组成的“FitTopicConcentration”
,要么真正的
或假
。
批处理的解决者研究生院理事会的
,“真空断路”
,“cvb0”
,默认为FitTopicConcentration
是真正的
。的随机解算器“savb”
,默认的是假
。
符合之前的狄利克雷函数 的混合物, 浓度和话题吗 语料库是主题概率之和为1。
例子:“FitTopicConcentration”,假的
数据类型:逻辑
InitialTopicConcentration
- - - - - -初始浓度估计的话题numTopics / 4
(默认)|负的标量初始浓度估计的话题,指定为逗号分隔组成的“InitialTopicConcentration”
和一个负的标量。每个主题函数集浓度TopicConcentration / NumTopics
。有关更多信息,请参见潜在狄利克雷分配。
例子:“InitialTopicConcentration”, 25岁
TopicOrder
- - - - - -主题的顺序“initial-fit-probability”
(默认)|“无序”
主题订单,指定为以下之一:
“initial-fit-probability”
——分类主题的语料库主题概率(输入文档集CorpusTopicProbabilities
属性)。
“无序”
——不要把话题。
WordConcentration
- - - - - -词集中1
(默认)|负的标量词集中,指定为逗号分隔组成的“WordConcentration”
和一个负的标量。软件集主题上的狄利克雷之前(每个主题概率这个词)是对称的狄利克雷分布参数的值WordConcentration / numWords
,在那里numWords
是词汇输入文档的大小。有关更多信息,请参见潜在狄利克雷分配。
DocumentsIn
- - - - - -取向的文档“行”
(默认)|“列”
面向文档的字数矩阵,指定为逗号分隔组成的“DocumentsIn”
和下列之一:
“行”
——输入矩阵的单词统计行相应的文档。
“列”
——输入单词统计的转置矩阵列对应的文件。
此选项仅适用于如果你输入文件指定为一个矩阵的单词计数。
请注意
如果你东方字数矩阵,这样文件并指定对应列“DocumentsIn”、“列”
,那么你可能会经历在optimization-execution时间显著减少。
IterationLimit
- - - - - -最大迭代次数One hundred.
(默认)|正整数最大迭代次数,指定为逗号分隔组成的“IterationLimit”
和一个正整数。
此选项只支持批量解决(金宝app研究生院理事会的
,“真空断路”
,或“cvb0”
)。
例子:“IterationLimit”, 200年
DataPassLimit
- - - - - -通过数据的最大数量通过数据的最大数量,指定为逗号分隔组成的“DataPassLimit”
和一个正整数。
如果您指定“DataPassLimit”
但不是“MiniBatchLimit”
的默认值“MiniBatchLimit”
将被忽略。如果你指定“DataPassLimit”
和“MiniBatchLimit”
,然后fitlda
使用参数处理最少的观测结果。
此选项仅支持随机(金宝app“savb”
)解决。
例子:“DataPassLimit”, 2
MiniBatchLimit
- - - - - -最大数量的mini-batch传球最大数量的mini-batch流逝,指定为逗号分隔组成的“MiniBatchLimit”
和一个正整数。
如果您指定“MiniBatchLimit”
但不是“DataPassLimit”
,然后fitlda
忽略的默认值“DataPassLimit”
。如果你指定“MiniBatchLimit”
和“DataPassLimit”
,然后fitlda
使用参数处理最少的观测结果。默认值是装天花板(numDocuments / MiniBatchSize)
,在那里numDocuments
输入文档的数量。
此选项仅支持随机(金宝app“savb”
)解决。
例子:“MiniBatchLimit”, 200年
MiniBatchSize
- - - - - -Mini-batch大小Mini-batch大小,指定为逗号分隔组成的“MiniBatchLimit”
和一个正整数。函数过程MiniBatchSize
文档在每个迭代中。
此选项仅支持随机(金宝app“savb”
)解决。
例子:“MiniBatchSize”, 512年
LearnRateDecay
- - - - - -学习速率衰减学习速率衰减,指定为逗号分隔“LearnRateDecay”
和积极的标量小于或等于1。
对于mini-batcht学习速率的函数集 ,在那里 是学习速率衰减。
如果LearnRateDecay
接近于1,那么学习速率衰减更快,mini-batches早些时候模型主要来自学习。如果LearnRateDecay
是接近于0,那么学习速率衰减较慢和模型更mini-batches继续学习。有关更多信息,请参见随机解算器。
此选项只支持随机解算器(金宝app“savb”
)。
例子:“LearnRateDecay”, 0.75
ValidationData
- - - - - -验证数据[]
(默认)|bagOfWords
对象|bagOfNgrams
对象|稀疏矩阵的单词计数验证数据监控优化收敛,指定为逗号分隔组成的“ValidationData”
和一个bagOfWords
对象,bagOfNgrams
对象,或一个稀疏矩阵的单词计数。如果验证数据是一个矩阵,那么数据必须具有相同的取向和相同数量的单词作为输入文件。
ValidationFrequency
- - - - - -模型验证的频率模型验证的频率的迭代次数,指定为逗号分隔组成的“ValidationFrequency”
和一个正整数。
默认值取决于适合使用的求解模型。随机解算器的默认值是10。对于其他解决者,默认值是1。
详细的
- - - - - -冗长的水平冗长的层面上,指定为逗号分隔组成的“详细”
和下列之一:
0 -不显示详细的输出。
1 -显示进度信息。
例子:“详细”,0
一个潜在狄利克雷分配(LDA)模型是一个文档的主题模型,发现潜在主题的集合文件和推断单词概率在主题。LDA模型的集合D文档主题混合物 ,在K主题的特征向量的概率 。模型假定主题混合物 和主题 遵循狄利克雷分布与集中参数 和 分别。
这个话题混合物
是概率向量的长度K,在那里K是主题的数量。条目
的概率是主题我中出现的d文档。这个话题混合物对应的行DocumentTopicProbabilities
财产的ldaModel
对象。
的话题
是概率向量的长度V,在那里V词汇是词的数量。条目
对应的概率v词的词汇出现我主题。的话题
对应的列TopicWordProbabilities
财产的ldaModel
对象。
考虑到主题 之前和狄利克雷 的混合物,LDA假定以下文档的生成过程:
示例主题混合 。随机变量 是一个概率向量的长度K,在那里K是主题的数量。
每个单词的文档:
示例主题索引 。随机变量z是一个整数1到K,在那里K是主题的数量。
样一个词 。随机变量w是一个整数1到V,在那里V词汇表中的单词量,代表相应的单词词汇量。
在这种生成过程中,文档的联合分布 混合物,与主题 和主题索引 是由
在哪里N在文档的字数。求和的联合分布z然后整合 收益率文档的边缘分布w:
下面的图表说明了LDA模型作为概率图形模型。阴影节点观测变量,没有阴影的节点是潜变量,节点没有轮廓模型参数。箭头强调随机变量之间的依赖关系和板块显示重复节点。
的狄利克雷分布是一个持续的多项分布的泛化。给定类别的数量 ,浓度参数 ,在那里 是一个向量的正实数的长度K狄利克雷分布的概率密度函数是由
在哪里B表示的多元函数
狄利克雷分布的一个特例对称的狄利克雷分布。对称的狄利克雷分布的特点是浓度参数 的所有元素 都是一样的。
mini-batches随机规划求解过程文档。它更新每个主题词概率使用加权和的概率计算每个mini-batch前mini-batches和概率。
对于mini-batcht学习速率,解算器设置 ,在那里 是学习速率衰减。
学习速率衰减的函数使用更新 每个主题的词概率矩阵,设置
在哪里 矩阵从mini-batch吗t, 矩阵从mini-batches通过吗t1。
学习开始之前(当t= 0),该函数初始化初始词概率/主题 随机值。
fitlda
各种话题行为改变R2018b
从R2018b开始,fitlda
降序排列,默认情况下,类话题的主题概率输入文档集。这种行为使它更容易找到最高的主题概率。
在以前的版本中,fitlda
不会改变主题。繁殖行为,设置“TopicOrder”
选项“无序”
。
[1]福尔兹,詹姆斯,利瓦伊尔斯,克里斯托弗•杜布瓦Padhraic Smyth,麦克斯威灵电机。“随机崩溃对潜在狄利克雷分配变分贝叶斯推理。”In19 ACM SIGKDD学报》国际会议上知识发现和数据挖掘,446 - 454页。ACM, 2013年。
[2]霍夫曼,马修·D。,David M. Blei, Chong Wang, and John Paisley. "Stochastic variational inference."机器学习的研究》杂志上14日,没有。1 (2013):1303 - 1347。
[3]格里菲斯,托马斯·L。和马克Steyvers。“寻找科学话题。”美国国家科学院院刊》上101年,没有。增刊1 (2004):5228 - 5235。
[4]亚松森,亚瑟,马克斯•威林Padhraic Smyth, Yee Whye格兰。“平滑和主题模型的推理。”In二十五日会议程序的不确定性人工智能27-34页。AUAI出版社,2009年。
[5]格兰,绮W。,David Newman, and Max Welling. "A collapsed variational Bayesian inference algorithm for latent Dirichlet allocation." In先进的神经信息处理系统,1353 - 1360页。2007年。
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。