且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

【数据挖掘】高斯混合模型 ( 高斯混合模型参数 | 高斯混合模型评分函数 | 似然函数 | 生成模型法 | 对数似然函数 | 高斯混合模型方法步骤 )

更新时间:2022-08-13 10:20:37

文章目录

I . 高斯混合模型 参数简介 ( 参数 )

II . 高斯混合模型 评分函数 ( 评价参数 )

III. 似然函数与参数

IV . 生成模型法

V . 对数似然函数

VI . 高斯混合模型方法 步骤



I . 高斯混合模型 参数简介 ( 参数 )


1 . 模型 与 参数 : 高斯混合模型 概率密度函数 :



p ( x ) = ∑ i = 1 k ω i g ( x ∣ μ i , Σ i ) p(x) = \sum_{i = 1}^k \omega_i g ( x | \mu_i , \Sigma_i )

p(x)=

i=1

k


ω

i


g(x∣μ

i


i


)



模型结构已知 , 即 高斯混合模型 , 需要根据已知的数据样本 , 学习出模型的参数 ;



2 . 高斯混合模型 参数个数 :



① 聚类个数 ( 高斯模型个数 ) : 每个高斯混合模型 都由 k kk 个高斯模型 ( 组件 ) 线性叠加组成的 ;


② 高斯模型参数 : 每个高斯模型 都有两个参数 , 即 均值 μ i \mu_iμ

i


 , 方差 Σ i \Sigma_iΣ

i


 ;


③ 样本属于聚类分组概率 ( 系数 ) : 每个高斯模型 还有一个系数参数 , ω i \omega_iω

i


 表示该 x xx 样本由第 i ii 个 高斯分布 ( 组件 ) 生成的概率 , 也就是 该样本被指派到某个聚类的概率 ;


④ 每个高斯模型相关参数个数 : k kk 个 高斯模型 , 每个高斯模型有 均值 μ i \mu_iμ

i


 , 方差 Σ i \Sigma_iΣ

i


 , 生成概率 ω i \omega_iω

i


 等 3 33个参数 ;


⑤ 高斯混合模型参数个数 : 整个 高斯混合模型 有 3 × k 3 \times k3×k 个参数 , k kk 是聚类分组个数 , 也是高斯模型个数 , 正态分布个数 ;



Σ i \Sigma_iΣ

i


 此处方差表示 , 是大写的希腊字母 sigma σ \sigmaσ , 注意与加和符号 ∑ \sum∑ 区分 ;



K-Means 方法中 , 有 k kk 个参数 , 每个聚类分组 , 只有一个参数 , 即中心点样本参数 ;




II . 高斯混合模型 评分函数 ( 评价参数 )


高斯混合模型 评分函数 :



评价参数 : 为 高斯混合模型 学习训练出的 参数 , 需要 评分函数 来 对参数进行评价 , 评分函数取值 最大 时 , 该 参数是最优参数 ;


似然函数 : 高斯混合模型 中 , 采用似然函数 , 作为评分函数 ;



E = ∏ j = 1 n p ( x j ) E = \prod_{j = 1} ^ n p(x_j)

E=

j=1

n


p(x

j


)



∏ \prod∏ 是多个乘积 , 与 ∑ \sum∑ 多个加和性质类似 ;


n nn 表示数据集中样本个数 ;


x j x_jx

j


 表示数据样本对象 , 被聚类的样本点 ;


p ( x j ) p(x_j)p(x

j


) 表示高斯混合模型中 , x j x_jx

j


 生成的概率 , 也就是 x j x_jx

j


 被分为某个聚类分组的概率 ;



评分函数 ( 似然函数 ) 取值最大时 , 高斯混合模型 的参数*** , 使用该 高斯混合模型 , 和对应的 概率 ω i \omega_iω

i


 , 均值 μ i \mu_iμ

i


 , 方差 Σ i \Sigma_iΣ

i


 参数 生成样本数据时 , 与真实的数据集样本 相似的概率最大 ;




III. 似然函数与参数


似然函数 与 参数 :



① 模型生成 样本 概率 : 如果模型参数非常好 , x j x_jx

j


 生成的概率 , 也就是 x j x_jx

j


 属于某个聚类分组的概率是 100 % 100\%100% , 此时 p ( x j ) = 1 p(x_j) = 1p(x

j


)=1 ; 如果 x j x_jx

j


 属于某个聚类分组的概率是 73 % 73\%73% , 此时 p ( x j ) = 0.73 p(x_j) = 0.73p(x

j


)=0.73


② ***概率 : 极限情况下 , 所有的样本属于某个聚类分组的概率都是 100 % 100\%100% , 每个 p ( x j ) = 1 p(x_j) = 1p(x

j


)=1 , n nn 个 p ( x j ) p(x_j)p(x

j


) 相乘也是 1 11 , 该似然函数取值为 1 11 是理论情况的***值 ;


③ 最大似然 : 该似然函数的本质是将每个对象属于某聚类分组的概率相乘 , E EE 越接近于 1 11 , 参数效果越好 , 此时的 E EE 称为最大似然 ;




IV . 生成模型法


生成模型法 : 先不看真实数据 , 先用 模型 ( 参数已经训练好 ) 生成数据 , 希望这个模型生成的数据 , 与真实数据是完全相同的 , 如果生成的数据 , 与真实的数据 , 全部完全相同 , 那么分析似然函数的


E = ∏ j = 1 n p ( x j ) E = \prod_{j = 1} ^ n p(x_j)

E=

j=1

n


p(x

j


)


乘积 , 其中 p ( x j ) = 1 p(x_j) = 1p(x

j


)=1 , 似然函数 计算过程 就是 n nn 个 1 11 相乘 , 其结果是 1 11 ;



但是实际结果肯定不是这样的 , 每个样本的概率 p ( x j ) p(x_j)p(x

j


) 可能是 0.9 0.90.9 , 0.5 0.50.5 , 0.01 0.010.01 , 这样 乘起来 值就非常小了 , 参数 和 模型 的 评价结果就是这个最终的乘积越大 , 模型 和 参数 越好 ;




V . 对数似然函数


1 . 似然函数 :

E = ∏ j = 1 n p ( x j ) E = \prod_{j = 1} ^ n p(x_j)

E=

j=1

n


p(x

j


)

是多个 p ( x j ) p(x_j)p(x

j


) 相乘 , 每个 p ( x j ) p(x_j)p(x

j


) 值都是小于 1 11 的数 , 多个小于 1 11 的数值相乘 , E EE 的最终计算的值非常小 , 不利于统计计算 ;




2 . 对数运算法则 :



① 两个正数之积的对数 , 等于两个正数对数之和 ;


l o g a ( M × N ) = l o g a M + l o g a N log_a ( M \times N ) = log_a M + log_a N

log

a


(M×N)=log

a


M+log

a


N



② 两个正数相除的对数 , 等于两个正数对数相减 ;


l o g a ( M N ) = l o g a M − l o g a N log_a ( \frac{M}{N}) = log_a M- log_a N

log

a


(

N

M


)=log

a


M−log

a


N




3 . 对数似然函数 : 对上述似然函数取对数 , 就可以将 成绩 ∏ \prod∏ 变成 求和 ∑ \sum∑ 形式 ;



F = l o g E = l o g ( ∏ j = 1 n p ( x j ) )

F


 

=

 

logE=log(∏

j=1

n


p(x

j


))


F = ∑ j = 1 n l o g p ( x j ) F = \sum_{j=1}^n logp(x_j)

F=

j=1

n


logp(x

j


)


该函数就是对数似然函数 ;



4 . 对数函数 最大值 :



① 无法使用导数 : 对数函数是求和的操作 , 因此该函数无法使用导数方式求最大值 ;


② 迭代求最大值 : 采用逐次迭代 , 的方式求最大值 , 与 K-Means 方法类似 ;


③ 第一次迭代的参数值 : k kk 个 概率 ω i \omega_iω

i


 , 均值 μ i \mu_iμ

i


 , 方差 Σ i \Sigma_iΣ

i


 参数 , 任意选取 , 随便给出 ;


④ 逐次迭代 : 每次迭代 , 逐步优化这些参数值 , 使 对数似然函数 取值越来越大 ;


⑤ ***参数 : 当 对数似然函数 取最大值时 , 此时的参数就是最优参数 ;




VI . 高斯混合模型方法 步骤


1 . 参数初始值设置 :



① 初始状态 ( 第一次迭代 ) : 先给出 k kk 组参数的初始值 , 每组参数由 概率 ω i \omega_iω

i


 , 均值 μ i \mu_iμ

i


 , 方差 Σ i \Sigma_iΣ

i


 组成 , 参数个数是 3 × k 3 \times k3×k 个 ;


② 聚类分组个数 : k kk 指的是聚类分组的个数 ;


③ 概率 ω i \omega_iω

i


 参数 : 指样本属于某组聚类的概率 ;


④ 均值 μ i \mu_iμ

i


 参数 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 均值参数 ;


⑤ 方差 Σ i \Sigma_iΣ

i


 参数 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 方差参数 ;




2 . 计算概率 :



数据集和分组情况 : 数据集有 n nn 个对象 , 将这 n nn 个对象分成 k kk 个聚类分组 ;


计算的概率 : 这里需要计算每个对象 x j   ( 1 ≤ j ≤ n ) x_j \, (1 \leq j \leq n)x

j


(1≤j≤n) 属于每个聚类 C i   ( 1 ≤ i ≤ k ) C_i \, (1 \leq i \leq k)C

i


(1≤i≤k) 的概率 , 需要计算 n × k n \times kn×k 次概率 ;


概率说明 : x j   ( 1 ≤ j ≤ n ) x_j \, (1 \leq j \leq n)x

j


(1≤j≤n) 属于 聚类 C i   ( 1 ≤ i ≤ k ) C_i \, (1 \leq i \leq k)C

i


(1≤i≤k) 的概率 , 反过来说 , 就是 x j x_jx

j


 样本对象 由 C i C_iC

i


 聚类分组对应的 高斯分布 生成的概率 ;


计算公式 :



p ( x i ∈ C i ) = ω i g ( x ∣ μ i , Σ i ) ∑ i = 1 k   ω i g ( x ∣ μ i , Σ i ) p(x_i \in C_i) = \dfrac{\omega_i g ( x | \mu_i , \Sigma_i )}{ \sum_{i=1}^{k} \, \omega_i g ( x | \mu_i , \Sigma_i ) }

p(x

i


∈C

i


)=

i=1

k


ω

i


g(x∣μ

i


i


)

ω

i


g(x∣μ

i


i


)




如果本次迭代是第一次迭代 , 那么上述式子中的参数采用 初始参数设置的值 ;


如果本次迭代不是第一次迭代 , 那么采用上一次迭代得到的参数 值 ;




3 . 计算参数值 : 计算 概率 ω i \omega_iω

i


 , 均值 μ i \mu_iμ

i


 , 方差 Σ i \Sigma_iΣ

i


 参数 ;



① 概率 ω i \omega_iω

i


 参数计算公式 : 指样本属于某组聚类的概率 ;



ω i = n i n \omega_i = \frac{n_i}{n}

ω

i


=

n

n

i





② 均值 μ i \mu_iμ

i


 参数计算公式 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 均值参数 ;



μ i = 1 n i ∑ j = 1 n p ( x j ∈ C i ) x j \mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) x_j

μ

i


=

n

i


1


 

j=1

n


p(x

j


∈C

i


)x

j




③ 方差 Σ i \Sigma_iΣ

i


 参数计算公式 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 方差参数 ;



μ i = 1 n i ∑ j = 1 n p ( x j ∈ C i )   ( x j − μ i ) ( x j − μ i ) T \mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) \,( x_j - \mu_i ) ( x_j - \mu_i ) ^T

μ

i


=

n

i


1


 

j=1

n


p(x

j


∈C

i


)(x

j


−μ

i


)(x

j


−μ

i


)

T





迭代执行 2 , 3 操作 , 直到评分函数达到最大值 ;