R 中的数据挖掘算法/聚类/期望最大化
在统计学中,优化问题用于最大化或最小化特定空间中的函数及其变量。由于这些优化问题可能具有多种不同的类型,并且每种类型都有其自身的特点,因此已经开发了许多技术来解决其中的一部分问题。
其中一项技术是最大似然法,其主要目标是使用特定数据集调整统计模型,估计其未知参数,以便该函数可以描述数据集中的所有参数。换句话说,该方法将调整统计模型的某些变量,这些变量来自数据集或已知分布,以便该模型能够“描述”每个数据样本并估计其他数据样本。这种技术在数据挖掘和知识发现领域非常重要,因为它可以作为更复杂、更强大的方法的基础。
期望最大化方法是最大似然法衍生出的一种方法,试图在某些变量未观察到的情况下估计似然。该方法最早由 [1] 于 1977 年记录,尽管该技术在文献中被非正式地提出,正如作者所建议的那样。因此,这项工作是该技术在文献中的首次正式化。
该函数可以通过迭代过程近似计算参数,该过程称为期望步 (E 步) 和最大化步 (M 步),分别用于查找未观察到的变量和重新估计最大似然的参数。下一节将更详细地描述该方法,并提供一个包含所有计算步骤的算法。
[2] 中描述的期望最大化算法是一种无监督聚类方法,它不需要基于密度混合的训练步骤。它使用次优的迭代方法来查找属性的最大似然概率分布参数。
该算法的输入是数据集 (x)、聚类总数 (M)、容差阈值 (E) 和最大迭代次数。对于每次迭代,首先执行 E 步(期望)来估计每个类的概率,然后执行 M 步(最大化)来估计每个类的概率分布的参数数组,用于下一次迭代。当分布参数落在容差阈值内或达到最大迭代次数时,该方法将结束。
M 中的每个聚类 j 都包含一个参数数组 (tetha),其中包含一个均值 (uu) 和一个协方差矩阵 (Sigmaj),用于表示高斯概率分布的详细信息。该分布用于对数据集 x 的元素进行边界。
在第一次迭代中,该方法会为均值和协方差生成随机初始值,以便将参数数组 (tetha) 近似为其真实分布。
E 步的主要目标是估计每个元素属于每个类 的概率。
R 中的期望最大化算法 [3] (在 [4] 中提出)将使用 mclust 包。该包包含用于执行聚类算法的关键方法,包括用于 E 步和 M 步计算的函数。该包手册解释了所有函数,包括简单的示例。该手册可以在 [5] [4] 中找到。
函数“em”可用于期望最大化方法,因为它从 E 步开始实现了参数化高斯混合模型 (GMM) 的方法。该函数使用以下参数
- model-name: 使用的模型名称;
- data: 所有收集到的数据,必须都是数值。如果数据格式用矩阵表示,则行表示样本(观察值),列表示变量;
- 参数:模型参数,可以取以下值:pro、mean、variance 和 Vinv,分别对应混合成分的混合比例、每个成分的均值、参数方差和数据区域的估计超体积。
- 其他:与模型参数不太相关的参数,在此不再赘述。更多细节请参考包手册。
执行完毕后,函数将返回
- 模型名称:模型的名称;
- z:一个矩阵,其中第 [I,k] 位置的元素表示第 i 个样本属于第 k 个混合成分的条件概率;
- 参数:与输入相同;
- 其他:其他指标,在此不再赘述。更多细节请参考包手册。
为了演示如何使用 R 执行期望最大化方法,以下算法提供了一个简单的测试数据集示例。此示例也可以在包手册中找到。
> modelName = ``EEE'' > data = iris[,-5] > z = unmap(iris[,5]) > msEst <- mstep(modelName, data, z) > names(msEst) > modelName = msEst$modelName > parameters = msEst$parameters > em(modelName, data, parameters)
第一行执行 M 步,以便生成 em 函数中使用的参数。此函数称为 mstep,其输入是模型名称(例如“EEE”)、数据集(例如花卉研究数据集)以及最终的 z 矩阵,该矩阵包含每个类包含每个数据样本的条件概率。此 z 矩阵由 unmap 函数生成。
完成 M 步后,算法将显示(第 2 行)此函数返回的对象的属性。第三行将开始使用 M 步方法结果的一部分作为输入的聚类过程。
聚类方法将返回在过程中估计的参数以及每个样本落在每个类中的条件概率。这些参数包括均值和方差,而最后一个参数对应于使用 mclustVariance 方法。
完成聚类算法的执行后,可以使用结果绘制图表。在 R 中,可以使用 coorProj 函数进行可视化。以下算法展示了如何使用它
> data = iris[,5] > dimens = c(2,4) > what = "errors" > parameters = msEst$parameters > truth = iris[,5] > coordProj( data, dimens, what, parameters, z, truth)
- ↑ a b A. P. Dempster, N. M. Laird 和 D. B. Rubin。通过 EM 算法从不完整数据获得最大似然。皇家统计学会会刊。B 系列(方法学),39(1):1{38, 1977。
- ↑ a b Georey J. Mclachlan 和 Thriyambakam Krishnan。EM 算法及其扩展。Wiley-Interscience,第 1 版,1996 年 11 月。
- ↑ a b John M. Chambers。R 语言定义。https://cran.r-project.org.cn/doc/manuals/R-lang.html。
- ↑ a b c Chris Fraley 和 Adrian E. Raftery。用于正态混合估计和基于模型的聚类的贝叶斯正则化。J. Classif.,24(2):155-181, 2007。
- ↑ a b C. Fraley 和 A. E. Raftery。用于 R 的 MCLUST 版本 3:正态混合建模和基于模型的聚类。华盛顿大学统计系技术报告 504,2006 年 9 月。
- ↑ Leslie Burkholder。蒙提霍尔问题和贝叶斯定理,2000 年。
- ↑ C. Fraley 和 A. E. Raftery。基于模型的聚类、判别分析和密度估计。美国统计协会会刊,97:611-631, 2002。