主要内容

fitlda

拟合潜在狄利克雷分配(LDA)模型

描述

潜在的dirichlet分配(LDA)模型是一个主题模型,它在主题中集合的文件和Infers Word概率中的基础主题。如果模型适合使用袋式革袋模型,那么软件将N-GRAM视为单独的单词。

例子

mdl= FITLDA(numtopics.符合LDA模型numtopics.单词袋或n-gram袋模型的主题

例子

mdl= FITLDA(计数numtopics.将LDA模型适用于由频率计数矩阵表示的文档。

mdl= FITLDA(___名称,值使用一个或多个名称-值对参数指定其他选项。

例子

全部折叠

要重现本例中的结果,请设置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)结束

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

将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”

图中包含一个坐标轴。标题为主题混合物的轴包含7个类型为bar的对象。这些对象代表话题1,话题2,话题3,话题4,话题5,话题6,话题7。

要重现本例中的结果,请设置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))

图中包含wordcloud类型的对象。wordcloud类型的图表标题为Topic 19。wordcloud类型的图表标题为Topic 8。

输入参数

全部折叠

输入袋式袋或n-grams模型,指定为abagOfWords对象或一个bagOfNgrams对象。如果是A.bagOfNgrams对象,则该函数将每个n-gram视为单个单词。

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

例子:200

单词的频率计数,指定为非负整数矩阵。如果您指定“DocumentsIn”“行”,则值为计数(i,j)对应的次数j词汇表中的单词出现在文档。否则,该值计数(i,j)对应的次数词汇表中的单词出现在j文档。

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'求解','avb'指定使用近似变分贝内斯作为求解器。
解算器选项

全部折叠

优化求解器,指定为逗号分隔对组成“规划求解”以及以下其中之一:

随机解算器

  • 'Savb'- 使用随机近似变分贝叶斯[1][2].这个解算器最适合于大数据集,可以在更少的数据传递中适合一个好的模型。

批处理解决

  • 研究生院理事会的-使用坍塌的吉布斯抽样[3].这个求解器可以更精确,但代价是运行时间更长。的的简历功能不支持安装了CGS的机型。金宝app

  • “真空断路”-使用近似变分贝叶斯[4].这个解算器通常比崩溃的吉布斯抽样和崩溃的变分贝叶斯运行得更快,但可能不太准确。

  • “cvb0”-使用折叠变分贝叶斯,零阶[4][5].该求解器比花费更长时间的近似变分贝内斯更准确。

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

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

对数似然的相对容忍度,指定为逗号分隔的对,由“LogLikelihoodTolerance”一个正标量。当达到此公差时,优化终止。

例子:'loglikelihoodtolerance',0.001

拟合主题集中的选项,指定为逗号分隔的配对'fittopicconcordration'和任何一种真正的

函数符合狄利克雷先验 α. α. 0 p 1 p 2 p K 关于主题混音,在哪里 α. 0 是主题集中和 p 1 ... p K 为语料库主题概率之和为1。

例子:“FitTopicProbabilities”,假的

数据类型:逻辑

拟合主题集中的选项,指定为逗号分隔的配对'fittopicconcordration'和任何一种真正的

用于批量求解器研究生院理事会的“真空断路”,“cvb0”,默认为FitTopicConcentration真正的.对于随机求解器'Savb',默认为

函数符合狄利克雷先验 α. α. 0 p 1 p 2 p K 关于主题混音,在哪里 α. 0 是主题集中和 p 1 ... p K 为语料库主题概率之和为1。

例子:'fittopicconcentation',false

数据类型:逻辑

初始估计主题集中,指定为逗号分隔对组成“InitialTopicConcentration”一个非负标量。函数将每个主题的浓度设置为主题康力/ numtopics..有关更多信息,请参见潜在狄利克雷分配

例子:'itsialtopicconcentration',25

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

  • “initial-fit-probability”-根据输入文档集的语料库主题概率对主题排序CorpusTopicProbabilities属性)。

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

单词浓度,指定为逗号分隔对组成“WordConcentration”一个非负标量。该软件将狄利克雷优先于主题(每个主题的单词概率)设置为对称狄利克雷分布参数的值WordConcentration / numWords, 在哪里numWords输入文档的词汇表大小。有关更多信息,请参见潜在狄利克雷分配

文档的方向在单词计数矩阵中,指定为逗号分隔对组成“DocumentsIn”以及以下其中之一:

  • “行”—输入是一个单词计数矩阵,对应文档的行数。

  • “列”-输入是一个转置的字数矩阵,其列对应于文档。

如果您将输入文档指定为单词计数的矩阵,则此选项仅适用。

请注意

如果您对单词计数矩阵进行了定位,使文档与列对应并指定“DocumentsIn”、“列”,那么您可能会经历优化执行时间的显著减少。

批处理求解器选项

全部折叠

最大迭代次数,由逗号分隔对组成“IterationLimit”和一个正整数。

此选项仅支持批处理解决程金宝app序(研究生院理事会的“真空断路”,或“cvb0”).

例子:“IterationLimit”,200年

随机解算器选项

全部折叠

通过数据的最大传递数,指定为逗号分隔的对组成'datapasslimit'和一个正整数。

如果您指定'datapasslimit'但不是“MiniBatchLimit”,则为的默认值“MiniBatchLimit”将被忽略。如果你指定两者'datapasslimit'“MiniBatchLimit”,然后fitlda使用导致处理最少观察结果的论证。

此选项仅支持随机(金宝app'Savb')求解器。

例子:“DataPassLimit”,2

指定为逗号分隔对的最大迷你批次通过数量“MiniBatchLimit”和一个正整数。

如果您指定“MiniBatchLimit”但不是'datapasslimit',然后fitlda忽略的默认值'datapasslimit'.如果你指定两者“MiniBatchLimit”'datapasslimit',然后fitlda使用导致处理最少观察结果的论证。默认值为CEIL(NumFocuments / minibatchsize), 在哪里numDocuments是输入文档的数量。

此选项仅支持随机(金宝app'Savb')求解器。

例子:“MiniBatchLimit”,200年

小批量大小,指定为逗号分隔的对,由“MiniBatchLimit”和一个正整数。功能流程MiniBatchSize每次迭代中的文档。

此选项仅支持随机(金宝app'Savb')求解器。

例子:“MiniBatchSize”,512年

学习速率衰减,指定为逗号分隔对'shearchratedecay'和正标量小于或等于1。

对于mini-batcht,函数将学习率设置为 η. t 1 / 1 + t κ.. , 在哪里 κ.. 就是学习速率的衰减。

如果学习ecay接近1,则学习率下降得更快,模型主要从早期的小批量学习。如果学习ecay接近0,则学习率下降得更慢,模型继续从更多的小批量中学习。有关更多信息,请参见随机解算器

此选项仅支持随机求解器(金宝app'Savb').

例子:“LearnRateDecay”,0.75

显示选项

全部折叠

要监视优化收敛的验证数据,指定为逗号分隔对组成“ValidationData”和一个bagOfWords对象,AbagOfNgrams对象,或单词计数的稀疏矩阵。如果验证数据是矩阵,则数据必须具有相同的方向和与输入文档相同数量的单词。

迭代数量的模型验证频率,指定为逗号分隔对组成“ValidationFrequency”和一个正整数。

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

详细级别,指定为逗号分隔对组成'verbose'以及以下其中之一:

  • 0 -不显示详细输出。

  • 1 - 显示进度信息。

例子:“详细”,0

输出参数

全部折叠

输出LDA模型,返回为ldaModel对象。

更多关于

全部折叠

潜在狄利克雷分配

一个潜在狄利克雷分配(LDA)模型是一个文档主题模型,在主题中发现文档和Infers Word概率集中的基础主题。LDA模型一系列D文档作为主题混合物 θ. 1 ... θ. D ,在K以单词概率向量为特征的主题 φ. 1 ... φ. K .该模型假设主题混合 θ. 1 ... θ. D ,主题 φ. 1 ... φ. K 遵循具有浓度参数的Dirichlet分布 α. β 分别。

这个话题混合物 θ. 1 ... θ. D 是长度的概率向量K, 在哪里K是主题的数量。条目 θ. d 是主题的概率中出现的d文档。主题混合对应的行DocumentTopicProbabilities财产的财产ldaModel对象。

的话题 φ. 1 ... φ. K 是长度的概率向量V, 在哪里V是词汇表中的单词数。条目 φ. v 对应的概率v中出现的单词主题。的话题 φ. 1 ... φ. K 对应的列TopicWordProbabilities财产的财产ldaModel对象。

考虑到主题 φ. 1 ... φ. K 和Dirichlet之前 α. 在主题混音上,LDA假定文档的以下生成过程:

  1. 尝试主题混合 θ. dirichlet. α. .随机变量 θ. 是长度的概率向量吗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模型作为概率图形模型。被观察到的阴影节点变量,未脉冲节点是潜在变量,没有轮廓的节点是模型参数。箭头突出显示随机变量之间的依赖性,并且板表示重复节点。

Dirichlet分布

狄利克雷分布是多项式分布的一个连续推广。考虑到类别的数量 K 2 和浓度参数 α. , 在哪里 α. 是积极实际长度的矢量K,给出了狄利克雷分布的概率密度函数

p θ. α. 1 B α. 1 K θ. α. 1

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

B α. 1 K γ. α. γ. 1 K α.

狄利克雷分布的一个特殊情况是对称的狄利克雷分布.对称狄利克雷分布由浓度参数表征 α. ,其中的所有元素 α. 是相同的。

随机解算器

随机求解器以小批量处理文档。它使用从每个小批量计算的概率和从所有之前的小批量计算的概率的加权和来更新每个主题的单词概率。

对于mini-batcht时,求解器将学习率设置为 η. t 1 / 1 + t κ.. , 在哪里 κ.. 就是学习速率的衰减。

该函数使用学习率衰减进行更新 φ. ,每个主题的单词概率矩阵,通过设置

φ. t 1 η. t φ. t 1 + η. t φ. t

在哪里 φ. t 矩阵是从小批量学习的吗t, φ. t 1 是矩阵从迷你批次1到1t-1。

在学习开始之前t= 0),该函数初始化每个主题的初始字概率 φ. 0 随机值。

兼容性的考虑

展开全部

R2018b中行为改变

参考

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

介绍了R2017b