文章目录
文章目录
- 00 写在前面
- 01 基于Python版本的K-means代码
- 02 X-means方法
- 03 最小二乘法简单理解
- 04 贝叶斯信息准则
00 写在前面
时间演变聚类算法:将时间演变聚类算法用在去噪上,基本思想是,具有相似信号演化的体素具有相似的模型参数值,并且由机器学习决定的集群数量远远小于体素的数量。因此,对一个聚类进行平均可以大大提高聚类级逆解的信噪比,这可以用作体素级优化的鲁棒初始猜测。
在该演变算法的基础上,总结了K-means算法、X-means算法、最小二乘法、贝叶斯信息准则
01 基于Python版本的K-means代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
# 生成具有三个簇的示例数据
n_samples = 300
n_features = 2
centers = 3
cluster_std = 1.0
x, y = make_blobs(n_samples=n_samples, n_features=n_features, centers=centers, cluster_std=cluster_std, random_state=42)
# 设置K值(簇的数量)
k = 3
# 初始化KMeans算法
kmeans = KMeans(n_clusters=k, random_state=42)
# 进行聚类
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
# 绘制聚类结果
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', marker='o', edgecolor='k', s=50)
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='x', s=200, linewidths=3, zorder=10)
plt.title('K-means Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.grid(True)
plt.show()
02 X-means方法
传统的K-means聚类算法需要预先确定聚类的数量K。在这里,使用了一种称为X-means的方法,该方法能够自动选择K。X-means方法通过两个步骤反复迭代来选择合适的聚类数量K。
- 步骤1:
- 首先执行传统的K-means聚类,给定一个初始的聚类数量。
- 计算贝叶斯信息准则(BIC),BIC是聚类对数似然和对K的惩罚项的和。
- 随着K的增加,拟合的优度(对数似然)增加,但过拟合的可能性也增加。惩罚项用来减少这种可能性。
- 步骤2:
- 每个聚类的质心(质心)被替换为两个子质心,并在该聚类内使用这些子质心作为初始猜测进行局部K-means(K = 2)。
- 计算该聚类的BIC:如果BIC较大,则进行替换,否则保留“父”质心。
- 重复步骤1和步骤2,直到整体BIC不再增加或 K达到预先设定的最大值为止。
- 在这项研究中,初始聚类数为1,最大聚类数为50。
03 最小二乘法简单理解
最小二乘法(Least Squares Method, LSM)是统计学和数据分析中常用的一种方法,用于拟合数据模型。它的本质是一个优化过程,因为它通过最小化目标函数来找到模型参数的最优解。
(1)最小二乘法的基本思想
假设我们有一组观测数据点(x1, y1),(x2, y2),…,(xn, yn),我们希望找到一个函数 f(x)来拟合这些数据点。最简单的情况是线性拟合,即找到一个直线模型 y=ax+b,使得该直线尽可能靠近所有观测数据点。
最小二乘法的目标是最小化以下目标函数(误差的平方和):
S
(
a
,
b
)
=
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
S(a,b) = {\textstyle \sum_{i=1}^{n}} (y_{i}-(ax_{i}+b) )^{2}
S(a,b)=∑i=1n(yi−(axi+b))2
其中,yi是观测值,axi+b是预测值。
(2)最小二乘法的优化过程
- 步骤1:
定义目标函数:目标函数S(a,b) 表示预测值与观测值之间的误差的平方和。 - 步骤2:
求导数:为了找到使目标函数最小的参数 a 和b,我们对 S(a, b) 分别对a 和 b 求偏导数,并将其设为零,得到一组方程:
∂ S ∂ a = − 2 ∑ i = 1 n x i ( y i − a x i − b ) = 0 \frac{\partial S}{\partial a} = -2 {\textstyle \sum_{i=1}^{n}} x_{i}(y_{i}-ax_{i}-b)=0 ∂a∂S=−2∑i=1nxi(yi−axi−b)=0
∂ S ∂ b = − 2 ∑ i = 1 n ( y i − a x i − b ) = 0 \frac{\partial S}{\partial b} = -2 {\textstyle \sum_{i=1}^{n}} (y_{i}-ax_{i}-b)=0 ∂b∂S=−2∑i=1n(yi−axi−b)=0 - 步骤3:
解方程:通过求解上述方程组,可以得到最优参数 a 和 b 的值。具体求解过程可以得到如下结果:
a = n ∑ i = 1 n x i y i − ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 a = \frac{n {\textstyle \sum_{i=1}^{n}}x_{i}y_{i}-\sum_{i=1}^{n}x_{i}\sum_{i=1}^{n}y_{i} }{n {\textstyle \sum_{i=1}^{n}}x_{i}^{2}-({\textstyle \sum_{i=1}^{n}}x_{i})^{2} } a=n∑i=1nxi2−(∑i=1nxi)2n∑i=1nxiyi−∑i=1nxi∑i=1nyi
b = ∑ i = 1 n y i − a ∑ i = 1 n x i n b = \frac{{\textstyle \sum_{i=1}^{n}}y_{i}-a\sum_{i=1}^{n}x_{i}}{n} b=n∑i=1nyi−a∑i=1nxi - 步骤4:
优化的本质:最小二乘法的过程实际上是通过优化方法来最小化目标函数。优化在这里的意思是找到使目标函数达到最小值的参数组合。在最小二乘法中,这个目标函数是误差的平方和,优化过程就是通过求解导数来找到误差平方和的最小值。
04 贝叶斯信息准则
贝叶斯信息准则(Bayesian Information Criterion, BIC)是一种统计量,用于模型选择,特别是在评估模型复杂性和拟合优度之间的平衡时使用。
BIC 的计算公式如下:
B
I
C
=
−
2
l
n
(
L
)
+
k
l
n
(
n
)
BIC=-2ln(L) +kln(n)
BIC=−2ln(L)+kln(n)
其中:
- ln(L)是模型的对数似然(log-likelihood)。对数似然度量了模型对数据的拟合优度。对数似然值越大,说明模型越能解释数据。
- k是模型的参数数量。在聚类模型中,参数数量通常包括聚类数K和每个聚类的参数(如均值和方差)。k越大,模型越复杂。
- n是样本数量。样本数量是指数据中的观测值个数。
- BIC 的公式中,-2ln(L)代表了模型的拟合优度,值越小,拟合越好。kln(n)是对模型复杂性的惩罚项,随着参数数量 k 和样本数量n的增加,惩罚项也增加。这个项用来防止过拟合。BIC 的值越小,模型越好。因此,在选择模型时,希望找到使 BIC 最小的模型。