返回介绍

数学基础

统计学习

深度学习

工具

Scala

六、GaussianMixture

发布于 2023-07-17 23:38:23 字数 5329 浏览 0 评论 0 收藏 0

  1. GaussianMixturescikit-learn给出的混合高斯模型。其原型为

    
    
    xxxxxxxxxx
    class sklearn.mixture.GaussianMixture(n_components=1, covariance_type='full', tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weights_init=None, means_init=None, precisions_init=None, random_state=None, warm_start=False, verbose=0, verbose_interval=10)
    • n_components:一个整数,指定分模型的数量,默认为1。

    • covariance_type:一个字符串,指定协方差的类型。必须为下列值之一:

      • 'spherical' :球型,每个分模型的协方差矩阵都是各自的标量值。
      • 'tied':结点型,所有的分模型都共享一个协方差矩阵。
      • 'diag':对角型,每个分模型的协方差矩阵都是各自的对角矩阵
      • 'full':全型,每个分模型都有自己的协方差矩阵。
    • tol:一个浮点数,用于指定收敛的阈值。 EM迭代算法中,当对数似然函数平均增益低于此阈值时,迭代停止。

    • reg_covar:一个浮点数,添加到协方差矩阵对角线上元素,确保所有的协方差都是正数。

    • max_iter:一个整数,指定EM算法迭代的次数。

    • n_init:一个整数,用于指定初始化次数。即算法会运行多轮,只有表现最好的哪个结果作为最终的结果。

    • init_params:一个字符串,可以为'kmeans'/'random',用于指定初始化权重的策略。

      • 'kmeans':通过 kmeans 算法初始化。
      • 'random':随机初始化。
    • weights-init:一个序列,形状为 (n_components,),指定初始化的权重。

      如果提供该参数,则不会使用init_params 来初始化权重。

    • means_init:一个数组,形状为(n_components,n_features),指定了初始化的均值。

      如果为None,则使用init_params 来初始化均值。

    • precision_init:用户提供的初始precisions(协方差矩阵的逆矩阵)。如果为None,则使用init_params 来初始化。

      根据covariance_type的不同,该参数值的形状为不同。

      • 'spherical' :形状为[n_components,]
      • 'tied':形状为[n_features,n_features]
      • 'diag':形状为[n_components,n_features]
      • 'full':形状为[n_components,n_features,n_featuress]
    • random_state:指定随机数种子。

    • warm_start:一个布尔值。如果为True,则上一次训练的结果将作为本次训练的开始条件。此时忽略n_init,并且只有一次初始化过程发生。

    • verbose:一个整数,指定日志打印级别。

    • verbose_interval:一个整数,指定输出日志的间隔。

  2. 属性:

    • weights_ :一个形状为(n_components,) 的数组,表示每个分模型的权重。

    • means_ :一个形状为(n_components, n_features)的数组,表示每个分模型的均值 $ MathJax-Element-25 $ 。

    • covariances_ :一个数组,表示每个分模型的方差 $ MathJax-Element-26 $ 。数组的形状根据方差类型有所不同。

      • 'spherical' :形状为[n_components,]
      • 'tied':形状为[n_features,n_features]
      • 'diag':形状为[n_components,n_features]
      • 'full':形状为[n_components,n_features,n_featuress]
    • precision_:一个数组,表示精度矩阵(协方差矩阵的逆矩阵),与covariances_ 形状相同。

    • precisions_cholesky_:一个数组,表示精度矩阵的Cholesky 分解。

      Cholesky 分解:如果 $ MathJax-Element-27 $ 是对称正定矩阵,则存在一个对角元为正数的下三角矩阵 $ MathJax-Element-28 $ ,使得 $ MathJax-Element-29 $ 成立。

    • converged_ :一个布尔值。当训练过程收敛时,该值为True;不收敛时,为False

    • n_iter_:一个整数,给出EM 算法收敛时的迭代步数。

    • lower_bound_:一个浮点数,给出了训练集的对数似然函数的下界。

  3. 方法:

    • fit(X[, y]):训练模型。
    • predict(X):预测样本所属的簇标记。
    • fit_predict(X[, y]):训练模型并执行聚类,返回每个样本所属的簇标记。
    • predict_proba(X):预测样本所属各个簇的后验概率。
    • sample([n_samples]):根据模型来随机生成一组样本。n_samples 指定待生成样本的数量。
    • score(X[, y]):计算模型在样本总体上的对数似然函数。
    • score_samples(X):给出每个样本的对数似然函数。
    • aic(X):给出样本集的 AKaike 信息准则。
    • bic(X):给出样本集的贝叶斯信息准则。
  4. AICBIC 都是用于评估模型好坏的准则,用于衡量模型的复杂度和模型的精度。

    • AIC:Akaike Information Criterion 准则的目标是:选取AIC 最小的模型。

      其中AIC 定义为: $ MathJax-Element-30 $ , $ MathJax-Element-37 $ 为模型的参数个数, $ MathJax-Element-35 $ 为模型的似然函数。

      • 当模型之间的预测能力存在较大差异时,似然函数占主导地位。
      • 当模型之间的预测能力差异不大时,模型复杂度占主导地位。
    • BIC:Bayesian Information Criterion 准则的目标是:选取BIC 最小的模型。

      其中BIC 定义为: $ MathJax-Element-33 $ , $ MathJax-Element-37 $ 为模型的参数个数, $ MathJax-Element-35 $ 为模型的似然函数, $ MathJax-Element-36 $ 为训练样本的数量。

      BIC 认为增加参数的数量也会增加模型复杂度。

      $ MathJax-Element-37 $ 并不是超参数的数量,而是训练参数的数量。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文