拟合潜在狄利克雷分配(LDA)模型
潜在Dirichlet分配(LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。如果模型适合使用n-g包模型,那么软件将n-g作为单个单词处理。
要重现本例中的结果,请设置RNG.
到“默认”
.
rng (“默认”)
加载示例数据。文件sonnetsPreprocessed.txt
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetsPreprocessed.txt
,将文本拆分为换行符的文档,然后授权文档。
文件名=“sonnetsPreprocessed.txt”;str = inthelfiletext(filename);textdata = split(str,newline);文档= tokenizeddocument(textdata);
创建一个词袋模型使用Bagofwords.
.
袋= bagOfWords(文档)
BAG =具有属性的BagofWords:计数:[154x3092双]词汇:[1x3092字符串] numwords:3092 numfocuments: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]
使用词汇云将主题形象化。
数字为topicIdx = 1:4 subplot(2,2,topicIdx) wordcloud(mdl,topicIdx);标题(主题:“+ topicIdx)结束
将LDA模型适用于由单词计数矩阵表示的文档集合。
要重现此示例的结果,请设置RNG.
到“默认”
.
rng (“默认”)
加载示例数据。sonnetscounts.mat
包含一个单词计数矩阵和相应的词汇预处理版本的莎士比亚十四行诗。的值计数(i, j)
对应于次数j
词汇表中的单词出现在我
文档。
负载sonnetscounts.mat尺寸(计数)
ans =1×2154 3092
拟合7个主题的LDA模型。要抑制verbose输出,请设置“详细”
为0。
numtopics = 7;mdl = fitlda(计数,numtopics,“详细”,0);
使用堆叠条形图可视化多个主题混合物。可视化前三个输入文档的主题混合。
topicMixtures =变换(mdl计数(1:3,:));图barh (topicMixtures,“堆叠”) xlim([0 1]) title(“主题混合”)xlabel(“主题概率”)ylabel(“文档”) 传奇(“话题 ”+字符串(1:numtopics),'地点',“northeastoutside”)
要重现本例中的结果,请设置RNG.
到“默认”
.
rng (“默认”)
加载示例数据。文件sonnetsPreprocessed.txt
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetsPreprocessed.txt
,将文本拆分为换行符的文档,然后授权文档。
文件名=“sonnetsPreprocessed.txt”;str = inthelfiletext(filename);textdata = split(str,newline);文档= tokenizeddocument(textdata);
创建一个词袋模型使用Bagofwords.
.
袋= bagOfWords(文档)
BAG =具有属性的BagofWords:计数:[154x3092双]词汇:[1x3092字符串] numwords:3092 numfocuments: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 ([“名字有什么关系呢?”玫瑰不管叫什么名字都一样芳香。”“如果音乐成为爱的食物,就会扮演。”]);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.
对象或A.Bagofngrams.
目的。如果袋
是一个Bagofngrams.
对象,则该函数将每个n-gram视为单个单词。
numTopics
- - - - - -许多话题主题数,指定为正整数。有关如何选择主题数量的示例,请参见选择LDA模型的主题数.
例子:200.
算
- - - - - -单词频率计数单词频率计数,指定为非负整数的矩阵。如果您指定“DocumentsIn”
成为“行”
,则值为计数(i, j)
对应于次数j词汇表中的单词出现在我文档。否则,该值计数(i, j)
对应于次数我词汇表中的单词出现在j文档。
指定可选的逗号分隔的对名称,值
参数。姓名
参数名和价值
是相应的价值。姓名
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“规划求解”、“真空断路”
指定使用近似变分贝叶斯作为解算器。
'求解'
- - - - - -为优化解算器研究生院理事会的
(默认)|“savb”
|'avb'
|“cvb0”
'loglikelihoodtolerance'
- - - - - -对数似然的相对公差0.0001
(默认)|积极的标量对逻辑可能性的相对容忍,指定为逗号分隔的对组成'loglikelihoodtolerance'
一个正标量。当达到此公差时,优化终止。
例子:“LogLikelihoodTolerance”,0.001
“FitTopicProbabilities”
- - - - - -拟合语料库主题概率的选项真的
(默认)|假
用于拟合主题浓度的选项,指定为逗号分隔的对,由“FitTopicConcentration”
,要么真的
或者假
.
函数符合狄利克雷先验 关于混合主题,哪里 主题是否集中和 是总和的主题主题概率。
例子:“FitTopicProbabilities”,假的
数据类型:逻辑
“FitTopicConcentration”
- - - - - -选择合适的主题集中真的
|假
用于拟合主题浓度的选项,指定为逗号分隔的对,由“FitTopicConcentration”
,要么真的
或者假
.
用于批处理求解器研究生院理事会的
,'avb'
, 和“cvb0”
,默认值为Fittopicconcentation.
是真的
.对于随机解算器“savb”
,默认为假
.
函数符合狄利克雷先验 关于混合主题,哪里 主题是否集中和 是总和的主题主题概率。
例子:“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”、“列”
,那么您可能会经历优化执行时间的显著减少。
“IterationLimit”
- - - - - -最大迭代次数100.
(默认)|正整数最大迭代次数,由逗号分隔对组成“IterationLimit”
一个正整数。
此选项仅支持批处理解决程金宝app序(研究生院理事会的
,'avb'
, 或者“cvb0”
).
例子:'iterationlimit',200
“DataPassLimit”
- - - - - -通过数据的最大传递数通过数据的最大次数,由逗号分隔的对组成“DataPassLimit”
一个正整数。
如果您指定“DataPassLimit”
但不是“MiniBatchLimit”
,则为的默认值“MiniBatchLimit”
被忽略了。如果您指定两者“DataPassLimit”
和“MiniBatchLimit”
,然后fitlda
使用导致处理最少观察的参数。
此选项仅支持随机(金宝app“savb”
)解决。
例子:“DataPassLimit”,2
“MiniBatchLimit”
- - - - - -最小批处理通过的最大数量最小批处理通过的最大数量,指定为由逗号分隔的对组成“MiniBatchLimit”
一个正整数。
如果您指定“MiniBatchLimit”
但不是“DataPassLimit”
,然后fitlda
忽略的默认值“DataPassLimit”
.如果您指定两者“MiniBatchLimit”
和“DataPassLimit”
,然后fitlda
使用导致处理最少观察的参数。默认值是装天花板(numDocuments / MiniBatchSize)
,在那里numDocuments
是输入文档的数量。
此选项仅支持随机(金宝app“savb”
)解决。
例子:'minibatchlimit',200
“MiniBatchSize”
- - - - - -Mini-batch大小迷你批量大小,指定为逗号分隔对组成“MiniBatchLimit”
一个正整数。函数过程MiniBatchSize
每次迭代中的文档。
此选项仅支持随机(金宝app“savb”
)解决。
例子:“MiniBatchSize”,512年
“LearnRateDecay”
- - - - - -学习率衰减学习速率衰减,指定为逗号分隔对“LearnRateDecay”
一个小于等于1的正标量。
对于mini-batcht,函数将学习率设置为 ,在那里 是学习率衰减。
如果LearnRateDecay
接近1,则学习率下降得更快,模型主要从早期的小批量学习。如果LearnRateDecay
接近0,则学习率下降得更慢,模型继续从更多的小批量中学习。有关更多信息,请参见随机解算器.
此选项仅支持随机求解器(金宝app“savb”
).
例子:“LearnRateDecay”,0.75
“ValidationData”
- - - - - -验证数据[]
(默认)|Bagofwords.
对象|Bagofngrams.
对象|单词计数稀疏矩阵要监视优化收敛的验证数据,指定为逗号分隔对组成“ValidationData”
A.Bagofwords.
对象,Bagofngrams.
对象,或单词计数的稀疏矩阵。如果验证数据是一个矩阵,那么数据必须与输入文档具有相同的方向和相同的字数。
'验证职业'
- - - - - -模型验证频率模型验证的迭代次数,指定为逗号分隔对组成'验证职业'
一个正整数。
默认值取决于用于拟合模型的求解器。对于随机求解器,默认值为10。对于其他求解器,默认值是1。
“详细”
- - - - - -冗长水平详细程度,指定为逗号分隔对,由“详细”
以及以下其中之一:
0 -不显示详细输出。
1 -显示进度信息。
例子:'verbose',0
一个潜在狄利克雷分配(LDA)模型是一种文档主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。LDA对集合进行建模D文档作为主题混合物 ,在K以单词概率向量为特征的主题 .该模型假设主题混合 和主题 服从带有浓度参数的狄利克雷分布 和 分别。
主题混音
概率向量的长度是多少K,在那里K是主题的数量。条目
题目的概率是多少我中出现的d文档。主题混合对应的行DocumentTopicProbabilities.
财产的ldaModel
目的。
的话题
概率向量的长度是多少V,在那里V是词汇表中的单词数。条目
对应的概率v中出现的单词我主题。的话题
对应于该列的列主题点心
财产的ldaModel
目的。
考虑到主题 之前和狄利克雷 对于主题混合,LDA假设文档的生成过程如下:
样本一个主题混合物 .随机变量 是长度的概率向量吗K,在那里K是主题的数量。
对于文档中的每个单词:
示例主题索引 .随机变量z是从1到整数吗K,在那里K是主题的数量。
样一个词 .随机变量w是从1到整数吗V,在那里V是词汇表中的单词数,并表示词汇表中的相应单词。
在这个生成过程中,文档与文字的联合分布 ,主题混合物 ,并附有主题索引 是(谁)给的
在哪里N为文档中的字数。求和联合分布z然后对 生成文件的边缘分布w:
下图将LDA模型描述为一个概率图形模型。阴影节点为观测变量,未阴影节点为潜变量,无轮廓节点为模型参数。箭头突出了随机变量之间的相关性,而板块则表示重复的节点。
的狄利克雷分布是多项分布的持续概括。鉴于类别数量 、浓度参数 ,在那里 一个长度为正实数的向量K,给出了狄利克雷分布的概率密度函数
在哪里B为给出的多元Beta函数
小小的分布的特殊情况是对称的狄利克雷分布.对称狄利克雷分布由浓度参数表征 ,其中的所有元素 都是一样的。
随机求解器以小批量处理文档。它使用从每个小批量计算的概率和从所有之前的小批量计算的概率的加权和来更新每个主题的单词概率。
对于mini-batcht,求解器将学习率设置为 ,在那里 是学习率衰减。
该功能使用学习速率衰减更新 ,每个主题的单词概率矩阵,通过设置
在哪里 矩阵是从小批量学习的吗t, 和 矩阵是从第1批到第2批学到的吗t1。
在学习开始之前(何时t= 0),函数初始化每个主题的初始单词概率 随机值。
fitlda
各种话题R2018b中行为改变
从R2018b开始,fitlda
,默认情况下,按照输入文档集的主题概率降序排列主题。这种行为使得找到概率最高的主题变得更容易。
在以前的版本中,fitlda
不会更改主题顺序。重现行为,设置“TopicOrder”
选项“无序”
.
[1] Foulds, James, Levi Boyles, Christopher DuBois, Padhraic smith, and Max Welling。"潜在狄利克雷分配的随机坍塌变分贝叶斯推断"在第19届美国计算机学会SIGKDD知识发现和数据挖掘国际会议论文集,pp.446-454。ACM,2013。
[2] Hoffman, Matthew D., David M. Blei, Chong Wang和John Paisley。“随机变分推理”。机器学习研究杂志14日,没有。1(2013): 1303 - 1347。
[3]格里菲斯,托马斯L.和Mark Steyvers。“寻找科学主题。”国家科学院的诉讼程序101,没有。4(2004):5228-5235。
Asuncion, Arthur, Max Welling, Padhraic Smyth, and Yee Whye Teh。"关于主题模型的平滑和推理"在第25届人工智能不确定性会议论文集,pp。27-34。奥海新闻,2009年。
Teh, Yee W., David Newman, Max Welling。"潜在狄利克雷分配的失效变分贝叶斯推理算法"在神经信息处理系统的进展, 1353 - 1360页。2007.
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。