类 MultivariateNormalMixtureExpectationMaximization

java.lang.Object
org.hipparchus.stat.fitting.MultivariateNormalMixtureExpectationMaximization

public class MultivariateNormalMixtureExpectationMaximization extends Object
用于拟合多元正态混合模型分布参数的期望最大化算法。此实现是基于华盛顿大学电气工程系Yihua Chen和Maya R. Gupta撰写的《EM Demystified: An Expectation-Maximization Tutorial》的纯原始代码。它使用外部工具(如CRAN Mixtools)进行验证(请参阅JUnit测试用例),但完全不基于Mixtools代码。关于此类起源的讨论可以在MATH-817 JIRA问题的评论中看到。
  • 构造器详细资料

  • 方法详细资料

    • fit

      public void fit(MixtureMultivariateNormalDistribution initialMixture, int maxIterations, double threshold) throws MathIllegalArgumentException
      将混合模型拟合到构造函数提供的数据中。拟合的质量取决于构造函数提供的数据的凹性和提供给此函数的初始混合。如果数据有许多局部最优解,则可能需要使用不同初始混合运行拟合函数的多次运行才能找到最佳解。如果遇到MathIllegalArgumentException,则可能需要尝试另一个初始化。
      参数:
      initialMixture - 包含权重和多元正态初始值的模型
      maxIterations - 允许的最大迭代次数
      threshold - 收敛阈值,计算为连续迭代之间的对数似然差异
      抛出:
      MathIllegalArgumentException - 如果任何组件的协方差矩阵在拟合过程中是奇异的
      MathIllegalArgumentException - 如果numComponents小于1或threshold小于Double.MIN_VALUE
      MathIllegalArgumentException - 如果initialMixture均值向量和数据列数不相等
    • fit

      public void fit(MixtureMultivariateNormalDistribution initialMixture) throws MathIllegalArgumentException
      将混合模型拟合到构造函数提供的数据中。拟合的质量取决于构造函数提供的数据的凹性和提供给此函数的初始混合。如果数据有许多局部最优解,则可能需要使用不同初始混合运行拟合函数的多次运行才能找到最佳解。如果遇到MathIllegalArgumentException,则可能需要尝试另一个初始化。
      参数:
      initialMixture - 包含权重和多元正态初始值的模型
      抛出:
      MathIllegalArgumentException - 如果任何组件的协方差矩阵在拟合过程中是奇异的
      MathIllegalArgumentException - 如果numComponents小于1或threshold小于Double.MIN_VALUE
    • estimate

      public static MixtureMultivariateNormalDistribution estimate(double[][] data, int numComponents) throws MathIllegalArgumentException
      创建一个辅助方法,用于创建一个多元正态混合模型,该模型可用于初始化fit(MixtureMultivariateNormalDistribution)。此方法使用构造函数提供的数据来尝试确定一个良好的混合模型,从而开始拟合,但不能保证提供的模型将找到最佳解决方案或甚至收敛。
      参数:
      data - 用于估计分布的数据
      numComponents - 估计混合物的组件数
      返回:
      从数据估计的多元正态混合模型
      抛出:
      MathIllegalArgumentException - 如果numComponents大于数据行数。
      MathIllegalArgumentException - 如果numComponents < 2
      MathIllegalArgumentException - 如果数据少于2行
      MathIllegalArgumentException - 如果数据的行具有不同数量的列
    • getLogLikelihood

      public double getLogLikelihood()
      获取拟合模型下数据的对数似然。
      返回:
      数据的对数似然或如果尚未拟合任何数据则为零
    • getFittedModel

      public MixtureMultivariateNormalDistribution getFittedModel()
      获取拟合的模型。
      返回:
      拟合的模型或null如果尚未执行拟合。