拟合潜在狄利克雷分配(LDA)模型
潜在的dirichlet分配(LDA)模型是一个主题模型,它在主题中集合的文件和Infers Word概率中的基础主题。如果模型适合使用袋式革袋模型,那么软件将N-GRAM视为单独的单词。
符合LDA模型mdl
= FITLDA(袋
,numtopics.
)numtopics.
单词袋或n-gram袋模型的主题袋
.
将LDA模型适用于由频率计数矩阵表示的文档。mdl
= FITLDA(计数
,numtopics.
)
要重现本例中的结果,请设置rng
来'默认'
.
RNG('默认')
加载示例数据。该文件sonnetspreprocessed.txt.txt.
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetspreprocessed.txt.txt.
,将文本以换行符分割为文档,然后标记文档。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用袋式模型使用bagOfWords
.
BAG = BAGOFWORDS(文件)
bag = bagOfWords with properties: Counts: [154x3092 double]词汇:[1x3092 string] NumWords: 3092 NumDocuments: 154
适合具有四个主题的LDA模型。
numTopics = 4;numTopics mdl = fitlda(袋)
初始主题分配的采样时间为0.142331秒。===================================================================================== | 迭代每个相对| | |时间培训|主题| | | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代 | =====================================================================================| 0 | 0.41 | 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.02 | 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 with properties: 1 WordConcentration: 1 TopicConcentration: 1 corpustopicprobability: [0.2500 0.2500 0.2500 0.2500 0.2500] documenttopicprobability: [154x4 double] topicwordprobability: [3092x4 double]
使用Word云可视化主题。
数字为TopicIDX = 1:4子图(2,2,TopicIDX)WordCloud(MDL,TopicIDX);标题(“话题: ”+ topicidx)结束
将LDA模型适用于由单词计数矩阵表示的文档集合。
要重现此示例的结果,请设置rng
来'默认'
.
RNG('默认')
加载示例数据。sonnetsCounts.mat
包含一个字数矩阵和Precosencesed版本的Shakespeare Sonnets的相应词汇。价值计数(i,j)
对应的次数j
词汇表中的单词出现在我
文档。
负载sonnetsCounts.mat大小(数量)
ans =1×2154 3092
拟合7个主题的LDA模型。要抑制verbose输出,请设置'verbose'
到0。
numTopics = 7;mdl = fitlda (numTopics计数,'verbose', 0);
使用堆叠条形图可视化多个主题混合物。可视化前三个输入文档的主题混合。
主题xtures = transform(mdl,counts(1:3,:));图Barh(主题模拟,“堆叠”) xlim([0 1]) title(“主题混音”)包含(“主题概率”) ylabel (“文档”)传说(“主题”+字符串(1:numTopics),“位置”,“northeastoutside”)
要重现本例中的结果,请设置rng
来'默认'
.
RNG('默认')
加载示例数据。该文件sonnetspreprocessed.txt.txt.
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetspreprocessed.txt.txt.
,将文本以换行符分割为文档,然后标记文档。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用袋式模型使用bagOfWords
.
BAG = BAGOFWORDS(文件)
bag = bagOfWords with properties: Counts: [154x3092 double]词汇:[1x3092 string] NumWords: 3092 NumDocuments: 154
拟合具有20个主题的LDA模型。
numTopics = 20;numTopics mdl = fitlda(袋)
初始主题任务的采样时间为0.042481秒。===================================================================================== | 迭代每个相对| | |时间培训|主题| | | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代 | =====================================================================================| 0 | 0.01 | 5.000 | 1.159 e + 03 | | 0 | | 1 | 0.03 | 5.4884 e-02 e + 02 | 8.028 | 5.000 | 0 | | 2 | 0.03 | 4.7400 e 03 e + 02 | 7.778 | 5.000 | 0 | | 3 | 0.03 | 3.4597 e 03 e + 02 | 7.602 | 5.000 | 0 | | 4 | 0.03 | 3.4662 e 03 e + 02 | 7.430 | 5.000 | 0 | | 5 | 0.03 | 2.9259 e 03 e + 02 | 7.288 | 5.000 | 0 | | 6 | 0.03 | 6.4180 e-05 e + 02 | 7.291 | 5.000 | 0 |=====================================================================================
mdl = ldaModel with properties: NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 corpustopicprobability: [1x20 double] documenttopicprobability: [154x20 double] documenttopicprobability: [154x20 double] topicwordprobability: [3092x20 double]
预测新文档数组的顶级主题。
newDocuments = tokenizedDocument ([“名字有什么关系呢?”玫瑰不管叫什么名字都一样芳香。”“如果音乐是爱情的食粮,那就继续演奏吧。”]);topicidx = predict(mdl,newdocuments)
topicIdx =2×119日8
使用Word云可视化预测主题。
图次要情节(1、2、1)wordcloud (mdl, topicIdx (1));标题(“主题”+ topicIdx(1) subplot(1,2,2) wordcloud(mdl,topicIdx(2));标题(“主题”+ topicIdx (2))
袋
- - - - - -输入模型bagOfWords
对象|bagOfNgrams
对象输入袋式袋或n-grams模型,指定为abagOfWords
对象或一个bagOfNgrams
对象。如果袋
是A.bagOfNgrams
对象,则该函数将每个n-gram视为单个单词。
numtopics.
- - - - - -许多话题主题数,指定为正整数。有关如何选择主题数量的示例,请参见选择LDA模型的主题数.
例子:200
计数
- - - - - -单词频率计数单词的频率计数,指定为非负整数矩阵。如果您指定“DocumentsIn”
是“行”
,则值为计数(i,j)
对应的次数j词汇表中的单词出现在我文档。否则,该值计数(i,j)
对应的次数我词汇表中的单词出现在j文档。
指定可选的逗号分隔的对名称,值
论点。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
'求解','avb'
指定使用近似变分贝内斯作为求解器。
“规划求解”
- - - - - -为优化解算器研究生院理事会的
(默认)|'Savb'
|“真空断路”
|“cvb0”
“LogLikelihoodTolerance”
- - - - - -对日志可能性的相对容忍0.0001
(默认)|积极的标量对数似然的相对容忍度,指定为逗号分隔的对,由“LogLikelihoodTolerance”
一个正标量。当达到此公差时,优化终止。
例子:'loglikelihoodtolerance',0.001
'fittopicprobabilities'
- - - - - -拟合语料库主题概率的选项真正的
(默认)|假
拟合主题集中的选项,指定为逗号分隔的配对'fittopicconcordration'
和任何一种真正的
或假
.
函数符合狄利克雷先验 关于主题混音,在哪里 是主题集中和 为语料库主题概率之和为1。
例子:“FitTopicProbabilities”,假的
数据类型:逻辑
'fittopicconcordration'
- - - - - -选择合适的主题集中真正的
|假
拟合主题集中的选项,指定为逗号分隔的配对'fittopicconcordration'
和任何一种真正的
或假
.
用于批量求解器研究生院理事会的
,“真空断路”
,“cvb0”
,默认为FitTopicConcentration
是真正的
.对于随机求解器'Savb'
,默认为假
.
函数符合狄利克雷先验 关于主题混音,在哪里 是主题集中和 为语料库主题概率之和为1。
例子:'fittopicconcentation',false
数据类型:逻辑
“InitialTopicConcentration”
- - - - - -主题浓度的初步估计numTopics / 4
(默认)|负的标量初始估计主题集中,指定为逗号分隔对组成“InitialTopicConcentration”
一个非负标量。函数将每个主题的浓度设置为主题康力/ numtopics.
.有关更多信息,请参见潜在狄利克雷分配.
例子:'itsialtopicconcentration',25
“TopicOrder”
- - - - - -主题的顺序“initial-fit-probability”
(默认)|“无序”
主题顺序,指定为以下其中之一:
“initial-fit-probability”
-根据输入文档集的语料库主题概率对主题排序CorpusTopicProbabilities
属性)。
“无序”
- 不要对主题进行排序。
“WordConcentration”
- - - - - -字集中1
(默认)|负的标量单词浓度,指定为逗号分隔对组成“WordConcentration”
一个非负标量。该软件将狄利克雷优先于主题(每个主题的单词概率)设置为对称狄利克雷分布参数的值WordConcentration / numWords
, 在哪里numWords
输入文档的词汇表大小。有关更多信息,请参见潜在狄利克雷分配.
“DocumentsIn”
- - - - - -文件的方向“行”
(默认)|“列”
文档的方向在单词计数矩阵中,指定为逗号分隔对组成“DocumentsIn”
以及以下其中之一:
“行”
—输入是一个单词计数矩阵,对应文档的行数。
“列”
-输入是一个转置的字数矩阵,其列对应于文档。
如果您将输入文档指定为单词计数的矩阵,则此选项仅适用。
请注意
如果您对单词计数矩阵进行了定位,使文档与列对应并指定“DocumentsIn”、“列”
,那么您可能会经历优化执行时间的显著减少。
“IterationLimit”
- - - - - -最大迭代次数One hundred.
(默认)|正整数最大迭代次数,由逗号分隔对组成“IterationLimit”
和一个正整数。
此选项仅支持批处理解决程金宝app序(研究生院理事会的
,“真空断路”
,或“cvb0”
).
例子:“IterationLimit”,200年
'datapasslimit'
- - - - - -最大通过的数据数通过数据的最大传递数,指定为逗号分隔的对组成'datapasslimit'
和一个正整数。
如果您指定'datapasslimit'
但不是“MiniBatchLimit”
,则为的默认值“MiniBatchLimit”
将被忽略。如果你指定两者'datapasslimit'
和“MiniBatchLimit”
,然后fitlda
使用导致处理最少观察结果的论证。
此选项仅支持随机(金宝app'Savb'
)求解器。
例子:“DataPassLimit”,2
“MiniBatchLimit”
- - - - - -最大百分比数量指定为逗号分隔对的最大迷你批次通过数量“MiniBatchLimit”
和一个正整数。
如果您指定“MiniBatchLimit”
但不是'datapasslimit'
,然后fitlda
忽略的默认值'datapasslimit'
.如果你指定两者“MiniBatchLimit”
和'datapasslimit'
,然后fitlda
使用导致处理最少观察结果的论证。默认值为CEIL(NumFocuments / minibatchsize)
, 在哪里numDocuments
是输入文档的数量。
此选项仅支持随机(金宝app'Savb'
)求解器。
例子:“MiniBatchLimit”,200年
'minibatchsize'
- - - - - -迷你批量尺寸小批量大小,指定为逗号分隔的对,由“MiniBatchLimit”
和一个正整数。功能流程MiniBatchSize
每次迭代中的文档。
此选项仅支持随机(金宝app'Savb'
)求解器。
例子:“MiniBatchSize”,512年
'shearchratedecay'
- - - - - -学习速率衰减学习速率衰减,指定为逗号分隔对'shearchratedecay'
和正标量小于或等于1。
对于mini-batcht,函数将学习率设置为 , 在哪里 就是学习速率的衰减。
如果学习ecay
接近1,则学习率下降得更快,模型主要从早期的小批量学习。如果学习ecay
接近0,则学习率下降得更慢,模型继续从更多的小批量中学习。有关更多信息,请参见随机解算器.
此选项仅支持随机求解器(金宝app'Savb'
).
例子:“LearnRateDecay”,0.75
“ValidationData”
- - - - - -验证数据[]
(默认)|bagOfWords
对象|bagOfNgrams
对象|字数稀疏矩阵要监视优化收敛的验证数据,指定为逗号分隔对组成“ValidationData”
和一个bagOfWords
对象,AbagOfNgrams
对象,或单词计数的稀疏矩阵。如果验证数据是矩阵,则数据必须具有相同的方向和与输入文档相同数量的单词。
“ValidationFrequency”
- - - - - -模型验证的频率迭代数量的模型验证频率,指定为逗号分隔对组成“ValidationFrequency”
和一个正整数。
默认值取决于用于适合模型的求解器。对于随机求解器,默认值为10.对于其他求解器,默认值为1。
'verbose'
- - - - - -冗长的水平详细级别,指定为逗号分隔对组成'verbose'
以及以下其中之一:
0 -不显示详细输出。
1 - 显示进度信息。
例子:“详细”,0
一个潜在狄利克雷分配(LDA)模型是一个文档主题模型,在主题中发现文档和Infers Word概率集中的基础主题。LDA模型一系列D文档作为主题混合物 ,在K以单词概率向量为特征的主题 .该模型假设主题混合 ,主题 遵循具有浓度参数的Dirichlet分布 和 分别。
这个话题混合物
是长度的概率向量K, 在哪里K是主题的数量。条目
是主题的概率我中出现的d文档。主题混合对应的行DocumentTopicProbabilities
财产的财产ldaModel
对象。
的话题
是长度的概率向量V, 在哪里V是词汇表中的单词数。条目
对应的概率v中出现的单词我主题。的话题
对应的列TopicWordProbabilities
财产的财产ldaModel
对象。
考虑到主题 和Dirichlet之前 在主题混音上,LDA假定文档的以下生成过程:
尝试主题混合 .随机变量 是长度的概率向量吗K, 在哪里K是主题的数量。
对于文件中的每个单词:
示例主题索引 .随机变量z是从1到整数吗K, 在哪里K是主题的数量。
样本一个单词 .随机变量w是从1到整数吗V, 在哪里V为词汇表中单词的个数,表示词汇表中相应的单词。
在这一生成过程下,用词的文档的联合分配 ,与话题混合 ,并附有主题索引 是由
在哪里N为文档中的字数。求和联合分布z然后对 生成文件的边缘分布w:
下图说明了LDA模型作为概率图形模型。被观察到的阴影节点变量,未脉冲节点是潜在变量,没有轮廓的节点是模型参数。箭头突出显示随机变量之间的依赖性,并且板表示重复节点。
的狄利克雷分布是多项式分布的一个连续推广。考虑到类别的数量 和浓度参数 , 在哪里 是积极实际长度的矢量K,给出了狄利克雷分布的概率密度函数
在哪里B为给出的多元Beta函数
狄利克雷分布的一个特殊情况是对称的狄利克雷分布.对称狄利克雷分布由浓度参数表征 ,其中的所有元素 是相同的。
随机求解器以小批量处理文档。它使用从每个小批量计算的概率和从所有之前的小批量计算的概率的加权和来更新每个主题的单词概率。
对于mini-batcht时,求解器将学习率设置为 , 在哪里 就是学习速率的衰减。
该函数使用学习率衰减进行更新 ,每个主题的单词概率矩阵,通过设置
在哪里 矩阵是从小批量学习的吗t, 是矩阵从迷你批次1到1t-1。
在学习开始之前t= 0),该函数初始化每个主题的初始字概率 随机值。
fitlda
排序主题R2018b中行为改变
从R2018B开始,fitlda
,默认情况下,以输入文档集的主题概率的降序对主题进行排序。此行为使得更容易找到具有最高概率的主题。
在以前的版本中,fitlda
不改变主题顺序。要重现该行为,请设置“TopicOrder”
选择“无序”
.
[1] Foulds,詹姆斯,Levi Boyles,Christopher Dubois,Padhraic Smyth和Max Welling。“随机折叠变分贝叶斯推论潜在的Dirichlet分配。”在第19届ACM SIGKDD知识发现和数据挖掘国际会议, 446 - 454页。ACM, 2013年。
[2] Hoffman, Matthew D., David M. Blei, Chong Wang和John Paisley。“随机变分推理”。机器学习研究杂志14,不。1(2013):1303-1347。
[3]格里菲斯,托马斯L.和马克斯泰尔弗斯。“寻找科学话题。”美国国家科学院学报101年,没有。增刊1(2004):5228-5235。
Asuncion, Arthur, Max Welling, Padhraic Smyth, and Yee Whye Teh。"关于主题模型的平滑和推理"在第25届人工智能不确定性会议论文集27-34页。AUAI出版社,2009年。
[5] Teh,Yee W.,David Newman,以及最大的好处。“潜伏的Dirichlet分配崩溃变分贝叶斯推理算法。”在神经信息处理系统的进展, 1353 - 1360页。2007.
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。