主要内容

菲达

适应潜在的Dirichlet分配(LDA)模型

描述

潜在Dirichlet分配(LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。如果模型适合使用n-g包模型,那么软件将n-g作为单个单词处理。

例子

MDL.= fitlda (numTopics适合LDA模型numTopics宗话的主题或n-r克模型的袋子

例子

MDL.= fitlda (numTopics将LDA模型适用于由频率计数矩阵表示的文档。

MDL.= fitlda (___名称,值使用一个或多个名称值对参数指定其他选项。

例子

全部折叠

在此示例中重现结果,设置RNG.“默认”

rng (“默认”

加载示例数据。文件sonnetsPreprocessed.txt包含Precrocessed版本的莎士比亚的十四行诗。该文件每行包含一个十四行诗,单词由空格分隔。从中提取文本sonnetsPreprocessed.txt,将文本拆分为换行符的文档,然后授权文档。

filename =.“sonnetsPreprocessed.txt”;str = inthelfiletext(filename);textdata = split(str,newline);文档= tokenizeddocument(textdata);

创建一个词袋模型使用Bagofwords.

袋= bagOfWords(文档)
BAG =具有属性的BagofWords:计数:[154x3092双]词汇:[1x3092字符串] numwords:3092 numfocuments:154

适合四个主题的LDA模型。

numTopics = 4;mdl = fitlda(袋子,numtopics)
初始主题分配的采样时间为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)结尾

图中包含wordcloud类型的对象。wordcloud类型的图表有标题Topic: 1。wordcloud类型的图表有标题Topic: 2。wordcloud类型的图表有标题Topic: 3。wordcloud类型的图表有标题Topic: 4。

将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),'地点'“东北朝”

图包含轴。标题主题混合的轴包含7个类型栏的物体。这些对象代表主题1,主题2,主题3,主题4,主题5,主题6,主题7。

在此示例中重现结果,设置RNG.“默认”

rng (“默认”

加载示例数据。文件sonnetsPreprocessed.txt包含Precrocessed版本的莎士比亚的十四行诗。该文件每行包含一个十四行诗,单词由空格分隔。从中提取文本sonnetsPreprocessed.txt,将文本拆分为换行符的文档,然后授权文档。

filename =.“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;mdl = fitlda(袋子,numtopics)
初始主题任务的采样时间为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))

图中包含wordcloud类型的对象。类型WordCloud的图表具有标题主题19. WordCloud类型的图表具有标题主题8。

输入参数

全部折叠

输入bag-of-words或bag-of-n-grams模型,指定为Bagofwords.对象或A.bagofngrams.目的。如果是一个bagofngrams.对象,然后该函数将每个n-gram视为单个单词。

主题数,指定为正整数。有关如何选择主题数量的示例,请参见选择LDA模型的主题数

例子:200.

单词频率计数,指定为非负整数的矩阵。如果您指定'documentsin'成为'行',那么值计数(i, j)对应于次数j词汇表中的单词出现在一世文件。否则,值计数(i, j)对应于次数一世词汇表中的单词出现在j文件。

名称-值对的观点

指定可选的逗号分离对名称,值参数。名称是参数名称和价值是相应的价值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“规划求解”、“真空断路”指定使用近似变分贝叶斯作为解算器。
求解器选项

全部折叠

优化的求解器,指定为逗号分隔的配对组成'求解'和以下之一:

随机求解器

  • “savb”-使用随机近似变分贝叶斯[1][2].此求解器最适合大型数据集,并在数据的较少通行证中适合良好的模型。

批量溶剂

  • 'cgs'- 使用折叠吉布斯抽样[3].此求解器可以更准确地以花费更长时间运行。这恢复功能不支持配有CGS的模型。万博1manbetx

  • 'avb'- 使用近似变分贝叶斯[4].该求解器通常比折叠的GIBBS采样和折叠变分贝内斯更快地运行,但可以不太准确。

  • 'cvb0'- 使用折叠变分贝叶斯,Zeroth订单[4][5].这个解算器可以比近似的变分贝叶斯更精确,但代价是运行时间更长。

有关如何比较求解器的示例,请参见比较LDA求解器

例子:“规划求解”、“savb”

对逻辑可能性的相对容忍,指定为逗号分隔的对组成'loglikelihoodtolerance'一个正标量。当达到此公差时,优化终止。

例子:“LogLikelihoodTolerance”,0.001

用于拟合主题浓度的选项,指定为逗号分隔的对,由“FitTopicConcentration”,要么真的要么错误的

该功能先前适合Dirichlet α = α 0. P. 1 P. 2 P. K. 关于混合主题,哪里 α 0. 主题是否集中和 P. 1 ...... P. K. 是总和的主题主题概率。

例子:'fittopicprobabilities',false

数据类型:逻辑

用于拟合主题浓度的选项,指定为逗号分隔的对,由“FitTopicConcentration”,要么真的要么错误的

用于批处理求解器'cgs''avb', 和'cvb0',默认值为Fittopicconcentation.真的.对于随机解算器“savb”,默认是错误的

该功能先前适合Dirichlet α = α 0. P. 1 P. 2 P. K. 关于混合主题,哪里 α 0. 主题是否集中和 P. 1 ...... P. K. 是总和的主题主题概率。

例子:“FitTopicConcentration”,假的

数据类型:逻辑

主题浓度的初始估计,指定为逗号分隔对,由“InitialTopicConcentration”和一个非负标量。该功能将每个主题的浓度设置为TopicConcentration / NumTopics.有关更多信息,请参阅潜在的Dirichlet分配

例子:“InitialTopicConcentration”,25岁

主题顺序,指定为以下之一:

  • '初始合适概率'- 通过输入文档集的语料库主题概率对主题进行排序(CorpustopicProbability.属性)。

  • “无序”-不要对主题进行分类。

字集中,指定为逗号分隔对,由“WordConcentration”和一个非负标量。该软件在主题之前的Dirichlet(每个主题的单词概率)设置为具有值的对称Dirichlet分布参数WordConcentration / numwords.,在那里numword.是输入文档的词汇量。有关更多信息,请参阅潜在的Dirichlet分配

文档的方向在单词计数矩阵中,指定为逗号分隔对组成'documentsin'和以下之一:

  • '行'- 输入是单词计数的矩阵,具有与文档相对应的行。

  • '列'- 输入是单词计数的转换矩阵,具有对应于文档的列。

此选项仅适用于将输入文档指定为单词计数矩阵的情况。

笔记

如果您对单词计数矩阵进行了定位,使文档与列对应并指定'docuidesin','列',然后您可能会遇到优化执行时间的显着减少。

批处理解决方案

全部折叠

指定为逗号分隔对的最大迭代次数'iterationlimit'一个正整数。

此选项仅支持批处理求解器万博1manbetx('cgs''avb', 要么'cvb0').

例子:'iterationlimit',200

随机求解器选项

全部折叠

通过数据的最大次数,由逗号分隔的对组成“DataPassLimit”一个正整数。

如果您指定“DataPassLimit”但不是'minibatchlimit',则为的默认值'minibatchlimit'被忽略了。如果您指定两者“DataPassLimit”'minibatchlimit', 然后菲达使用导致处理最少观察的参数。

此选项仅支持随机(万博1manbetx“savb”)解决。

例子:'datapasslimit',2

最小批处理通过的最大数量,指定为由逗号分隔的对组成'minibatchlimit'一个正整数。

如果您指定'minibatchlimit'但不是“DataPassLimit”, 然后菲达忽略默认值“DataPassLimit”.如果您指定两者'minibatchlimit'“DataPassLimit”, 然后菲达使用导致处理最少观察的参数。默认值是装天花板(numDocuments / MiniBatchSize),在那里numfocuments.是输入文档的数量。

此选项仅支持随机(万博1manbetx“savb”)解决。

例子:'minibatchlimit',200

迷你批量大小,指定为逗号分隔对组成'minibatchlimit'一个正整数。函数过程MiniBatchSize每次迭代中的文件。

此选项仅支持随机(万博1manbetx“savb”)解决。

例子:'minibatchsize',512

学习率衰减,指定为逗号分隔对“LearnRateDecay”一个小于等于1的正标量。

用于迷你批次T.,函数将学习率设置为 η T. = 1 / 1 + T. κ ,在那里 κ 是学习率衰减。

如果LearnRateDecay接近1,然后学习速率衰减更快,模型主要从早期的百分之批量学习。如果LearnRateDecay接近0,然后学习速度衰减速度较慢,模型继续从更多的批量中学习。有关更多信息,请参阅随机求解器

此选项仅支持随机求解器(万博1manbetx“savb”).

例子:'shearchratedecay',0.75

显示选项

全部折叠

要监视优化收敛的验证数据,指定为逗号分隔对组成'vightationdata'A.Bagofwords.对象,bagofngrams.对象,或单词计数的稀疏矩阵。如果验证数据是一个矩阵,那么数据必须与输入文档具有相同的方向和相同的字数。

模型验证的迭代次数,指定为逗号分隔对组成'验证职业'一个正整数。

默认值取决于用于拟合模型的求解器。对于随机求解器,默认值为10。对于其他求解器,默认值是1。

详细程度,指定为逗号分隔对,由“详细”和以下之一:

  • 0 - 请勿显示详细输出。

  • 1 -显示进度信息。

例子:'verbose',0

输出参数

全部折叠

输出LDA模型,返回为Ldamodel.目的。

更多关于

全部折叠

潜在的Dirichlet分配

一种潜在狄利克雷分配(LDA)模型是一种文档主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。LDA对集合进行建模D.文件作为主题混音 θ 1 ...... θ D. ,在K.以字概率的载体为特征的主题 φ 1 ...... φ K. .该模型假设主题混音 θ 1 ...... θ D. 和主题 φ 1 ...... φ K. 服从带有浓度参数的狄利克雷分布 α β 分别。

主题混音 θ 1 ...... θ D. 概率向量的长度是多少K.,在那里K.是主题的数量。入口 θ D. 一世 题目的概率是多少一世出现在D.文件。主题混音对应于行的行DocumentTopicProbabilities.财产的Ldamodel.目的。

主题 φ 1 ...... φ K. 概率向量的长度是多少V.,在那里V.是词汇中的单词数量。入口 φ 一世 V. 对应的概率V.词汇的单词出现在一世TH主题。主题 φ 1 ...... φ K. 对应于该列的列主题点心财产的Ldamodel.目的。

考虑到主题 φ 1 ...... φ K. 之前和狄利克雷 α 对于主题混合,LDA假设文档的生成过程如下:

  1. 样本一个主题混合物 θ 狄利克雷 α .随机变量 θ 是长度的概率矢量K.,在那里K.是主题的数量。

  2. 对于文档中的每个单词:

    1. 示例主题索引 Z. 分类 θ .随机变量Z.是从1到整数吗K.,在那里K.是主题的数量。

    2. 样一个词 W. 分类 φ Z. .随机变量W.是从1到整数吗V.,在那里V.是词汇表中的单词数,并表示词汇表中的相应单词。

在这个生成过程中,文档与文字的联合分布 W. 1 ...... W. N ,主题混合物 θ ,以及主题指数 Z. 1 ...... Z. N 是(谁)给的

P. θ Z. W. | α φ = P. θ | α π N = 1 N P. Z. N | θ P. W. N | Z. N φ

在哪里N是文档中的单词数。总结联合分配Z.然后整合到 θ 产生文件的边际分布W.

P. W. | α φ = θ P. θ | α π N = 1 N σ. Z. N P. Z. N | θ P. W. N | Z. N φ D. θ

下图将LDA模型描述为一个概率图形模型。阴影节点为观测变量,未阴影节点为潜变量,无轮廓节点为模型参数。箭头突出了随机变量之间的相关性,而板块则表示重复的节点。

狄利克雷分布

狄利克雷分布是多项分布的持续概括。鉴于类别数量 K. 2 、浓度参数 α ,在那里 α 一个长度为正实数的向量K.,Dirichlet分布的概率密度函数给出

P. θ | α = 1 B. α π 一世 = 1 K. θ 一世 α 一世 - 1

在哪里B.为给出的多元Beta函数

B. α = π 一世 = 1 K. Γ α 一世 Γ σ. 一世 = 1 K. α 一世

小小的分布的特殊情况是对称的狄利克雷分布.对称狄利克雷分布由浓度参数表征 α ,所有元素 α 都是一样的。

随机求解器

随机求解器在迷你批次中处理文献。它使用从每个迷你批处理计算的概率的加权和更新每个主题词概率,以及来自所有先前迷你批次的概率。

用于迷你批次T.,求解器将学习率设置为 η T. = 1 / 1 + T. κ ,在那里 κ 是学习率衰减。

该功能使用学习速率衰减更新 Φ ,通过设置,每个主题的单词概率矩阵

Φ T. = 1 - η T. Φ T. - 1 + η T. Φ T. *

在哪里 Φ T. * 矩阵是从小批量学习的吗T., 和 Φ T. - 1 矩阵是从第1批到第2批学到的吗T.-1.

在学习开始之前(何时T.= 0),函数初始化每个主题的初始单词概率 Φ 0. 随机值。

兼容性考虑因素

全部展开

R2018B的行为更改

参考文献

[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。

[4]亚洲亚胺,亚瑟,最大兴利,帕特里克·斯密,以及耶和为。“在平滑和推理主题模型上。”在第25届人工智能不确定性会议论文集,pp。27-34。奥海新闻,2009年。

Teh, Yee W., David Newman, Max Welling。"潜在狄利克雷分配的失效变分贝叶斯推理算法"在神经信息处理系统的进步, 1353 - 1360页。2007.

在R2017B中介绍