主要内容

菲特尔达

拟合潜在Dirichlet分配(LDA)模型

描述

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

实例

mdl= fitlda (纸袋,numTopics)适合LDA模型numTopics单词袋或n-grams袋模型的主题纸袋

实例

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

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

例子

全部折叠

要重现本例中的结果,请设置rng“默认”

rng (“默认”)

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

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

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

袋= bagOfWords(文档)
单词:[" fairrest " "creatures" "desire"…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单词浓度:1主题浓度:1粒子主题概率:[0.2500 0.2500 0.2500 0.2500]文档主题概率:[154x4 double]主题词概率:[3092x4 double]词汇:[“最公平的”“生物”…]主题顺序:“初始拟合概率”FitInfo:[1x1结构]

使用词汇云将主题形象化。

数字对于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个类型为bar的对象。这些对象代表话题1,话题2,话题3,话题4,话题5,话题6,话题7。

要重现本例中的结果,请设置rng“默认”

rng (“默认”)

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

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

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

袋= bagOfWords(文档)
单词:[" fairrest " "creatures" "desire"…NumWords: 3092 NumDocuments: 154

适合包含20个主题的LDA模型。

numTopics=20;mdl=fitlda(包、numTopics)
初始主题任务的采样时间为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 with properties: NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 corpustopic概率:[0.0500 0.0500 0.0500 0.0500 0.0500…词汇:[“最公平的”“生物”…TopicOrder: 'initial-fit-probability'

预测新文档数组的顶级主题。

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类型的图表标题为Topic 19。wordcloud类型的图表标题为Topic 8。

输入参数

全部折叠

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

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

例子:200

单词频率计数,指定为非负整数的矩阵。如果您指定“文件罪”成为“行”,然后是值计数(i, j)对应于次数J词汇表中的单词出现在第16号文件。否则,值计数(i, j)对应于次数词汇表中的单词出现在J文档。

名称值参数

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

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

全部折叠

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

随机求解器

  • “savb”- 使用随机近似变分贝叶斯[1][2]。此解算器最适合于大型数据集,并且可以在较少的数据传递中拟合良好的模型。

批处理解决

  • “cgs”- 使用折叠吉布斯抽样[3].此求解器可以更准确地以花费更长时间运行。这个简历功能不支持安装了CGS的机型。金宝app

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

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

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

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

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

例子:“LogLikelihoodTolerance”,0.001

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

该函数符合Dirichlet先验 α = α 0 ( P 1. P 2. P K ) 关于混合主题,哪里 α 0 主题是否集中和 P 1. , , P K 是总和的主题主题概率。

例子:“适合的可能性”,错

数据类型:必然的

用于拟合主题浓度的选项,指定为逗号分隔的对,由“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岁

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

  • “初始拟合概率”-根据输入文档集的语料库主题概率对主题排序微粒子概率属性)。

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

字集中,指定为逗号分隔对,由“WordConcentration”和一个非负标量。软件将主题上的Dirichlet Previor(每个主题的单词概率)设置为具有以下值的对称Dirichlet分布参数WordConcentration / numWords,在那里纽姆沃兹是输入文档的词汇表大小。有关更多信息,请参阅潜在Dirichlet分配

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

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

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

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

笔记

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

批处理解决方案

全部折叠

最大迭代次数,指定为逗号分隔对,由“迭代限制”一个正整数。

此选项仅支持批处理解算器金宝app(“cgs”,'avb', 或者“cvb0”).

例子:“IterationLimit”,200年

随机解算器选项

全部折叠

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

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

此选项仅支持随机(金宝app“savb”)解决。

例子:“DataPassLimit”,2

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

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

此选项仅支持随机(金宝app“savb”)解决。

例子:'minibatchlimit',200

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

此选项仅支持随机(金宝app“savb”)解决。

例子:“MiniBatchSize”,512

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

小批量T,函数将学习率设置为 η ( T ) = 1. / ( 1. + T ) κ ,在那里 κ 是学习率衰减。

如果学习ecay接近1,则学习速率衰减更快,模型主要从早期的小批量学习。如果学习ecay接近0,则学习速度衰减较慢,模型继续从更多小批量学习。有关详细信息,请参阅随机求解器

此选项仅支持随机求解器(金宝app“savb”).

例子:“LearnRateDecay”,0.75

显示选项

全部折叠

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

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

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

详细程度,指定为逗号分隔对,由“详细”以及下列其中一项:

  • 0–不显示详细输出。

  • 1 - 显示进度信息。

例子:'verbose',0

输出参数

全部折叠

输出LDA模型,返回为阿尔达莫代尔对象。

更多关于

全部折叠

潜在Dirichlet分配

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

主题混音 θ 1. , , θ D 概率向量的长度是多少K,在那里K是主题的数量。条目 θ D 题目的概率是多少出现在D主题混合对应于文档的行DocumentTopicProbabilities.财产的阿尔达莫代尔对象。

的话题 φ 1. , , φ K 概率向量的长度是多少v,在那里v是词汇表中的单词数。条目 φ v 对应的概率v词汇表中出现的第个单词主题。主题 φ 1. , , φ K 对应于该列的列TopicWordProbabilities财产的阿尔达莫代尔对象。

考虑到主题 φ 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届ACM SIGKDD知识发现和数据挖掘国际会议,pp.446-454。ACM,2013。

[2] 霍夫曼、马修·D、大卫·M·布莱、王冲和约翰·佩斯利。“随机变分推理。”机器学习研究杂志14日,没有。1(2013): 1303 - 1347。

[3]格里菲斯,托马斯L.和Mark Steyvers。“寻找科学主题。”国家科学院的诉讼程序101年,没有。增刊1(2004):5228-5235。

[4] 亚松森、亚瑟、马克斯·韦林、帕德瑞克·斯迈思和耶·维德。“关于主题模型的平滑和推理”,摘自第25届人工智能不确定性会议论文集,pp。27-34。奥海新闻,2009年。

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

在R2017b中引入