跳转至

统计

基于 EM 算法的多元高斯混合模型聚类及其 Python 实现

基于 EM 算法,推导多元高斯混合模型聚类的参数迭代公式,并使用 Python 对数据集进行聚类和各类别的参数求解。

在编写代码的过程中,遇到了一个非常简单但一直没发现的 Bug。

定义数组用all_density = np.array([0]*K),再用all_density[k] = k_density并不会让all_density的第k个元素改变。这是因为all_density是介于 0 到 1 之间的,而在定义all_density的时候没有指定数组内部的数据类型,默认是不支持小数的,因此赋值之后all_density的第k个元素仍然是 0。

解决方法:定义数组的时候一定要指定元素的数据类型,指定为dtype=flout64就可以存储高精度的浮点数。

result

有约束的优化问题之 Lagrangian 乘子法、投影梯度算法和罚函数法

使用 Lagrangian 乘子法、投影梯度算法、罚函数法求解有约束的优化问题。

Lagrangian 乘子法

Lagrangian 乘子的具体形式

\[ L(x, y, \lambda) = x^2 + 5y^2 + xy + \lambda(x^2 + y^2 - 1) \]

对偶问题

\[ \max_{\lambda} g(\lambda)\\\ \text{ s.t. } \lambda \geq 0 \]
\[ \text{where } g(\lambda) = \min_{x, y} L(x, y, \lambda) \]

迭代次数与自变量取值 - 投影梯度算法

梯度下降法及其 Python 实现

用数值近似法求函数在某点的梯度,用回溯线搜索法控制步长,应用梯度下降法求函数极值。

梯度下降的思想是:对某一初始值,不断改变这一初始值,且每一步都朝着能使函数值减小的方向改变,最终函数值几乎不再变小,我们就认为达到了极小值点。

迭代轨迹与等高线图