百面机器学习05-非监督学习

01:K均值聚类

支持向量机、逻辑回归、决策树等经典的机器学习算法主要用于分类问题,即根据一些已给定类别的样本,训练某种分类器,使得它能够对类别未知的样本进行分类。与分类问题不同,聚类是在事先并不知道任何样本类别标签的情况下,通过数据之间的内在关系把样本划分为若干类别,使得同类别样本之间的相似度高,不同类别之间的样本相似度低。图 5.1 是一个二维空间中样本聚类的示意图,图 5.1 ( a ) 展示了所有样本在空间中的分布,图 5.1 ( b \mathrm{b} b ) 展示了聚类的结果(不同颜色代表不同类别)。
百面机器学习05-非监督学习_第1张图片
分类问题属于监督学习的范畴,而聚类则是非监督学习。K 均值聚类(K-Means Clustering ) 是最基础和最常用的聚类算法。它的基本思想是,通过迭代方式寻找 K K K 个簇 ( Cluster ) 的一种划分方案,使得聚类结果对应的代价函数最小。特别地,代价函数可以定义为各个样本距离所属簇中心点的误差平方和
J ( c , μ ) = ∑ i = 1 M ∥ x i − μ c i ∥ 2 J(c, \mu)=\sum_{i=1}^{M}\left\|x_{i}-\mu_{c_{i}}\right\|^{2} J(c,μ)=i=1Mxiμci2
其中 x i x_{i} xi 代表第 i i i 个样本 , c i , c_{i} ,ci x i x_{i} xi 所属于的簇, μ c i \mu_{c_{i}} μci 代表簇对应的中心点, M M M 是样本总数。

知识点:K 均值聚类 算 法, ISODATA 算法, EM 算 法( Expectation - Maximization Algorithm ,最大期望算法)

问题:简述K均值算法的具体步骤

分析与解答

K \mathrm{K} K 均值聚类的核心目标是将给定的数据集划分成 K \mathrm{K} K 个簇,并给出
每个数据对应的簇中心点。算法的具体步骤描述如下:
(1)数据预处理,如归一化、离群点处理等。
(2) 随机选取 K K K 个簇中心,记为 μ 1 ( 0 ) , μ 2 ( 0 ) , … , μ K ( 0 ) \mu_{1}^{(0)}, \mu_{2}^{(0)}, \ldots, \mu_{K}^{(0)} μ1(0),μ2(0),,μK(0)
(3) 定义代价函数 : J ( c , μ ) = min ⁡ μ min ⁡ c ∑ i = 1 M ∥ x i − μ c i ∥ ∘ 2 : J(c, \mu)=\min _{\mu} \min _{c} \sum_{i=1}^{M}\left\|x_{i}-\mu_{c_{i}}\right\|_{\circ}^{2} :J(c,μ)=minμminci=1Mxiμci2
(4) 令 t = 0 , 1 , 2 , … t=0,1,2, \ldots t=0,1,2, 为迭代步数,重复下面过程直到 J J J 收敘:

  • 对于每一个样本 x i , x_{i}, xi, 将其分配到距离最近的簇
    c i ( t ) ← argmin ⁡ k ∥ x i − μ k ( t ) ∥ 2 c_{i}^{(t)} \leftarrow \underset{k}{\operatorname{argmin}}\left\|x_{i}-\mu_{k}^{(t)}\right\|^{2} ci(t)kargminxiμk(t)2
  • 对于每一个类簇 k , k, k, 重新计算该类簇的中心
    μ k ( t + 1 ) ← argmin ⁡ μ ∑ i : c i i n = k ∥ x i − μ ∥ 2 \mu_{k}^{(t+1)} \leftarrow \underset{\mu}{\operatorname{argmin}} \sum_{i: c_{i}^{i n}=k}\left\|x_{i}-\mu\right\|^{2} μk(t+1)μargmini:ciin=kxiμ2

K 均值算法在迭代时,假设当前 J J J 没有达到最小值,那么首先固定簇中心 { μ k } , \left\{\mu_{k}\right\}, {μk}, 调整每个样例 x i x_{i} xi 所属的类别 c i c_{i} ci 来让 J J J 函数减少; 然后固定 { c i } , \left\{c_{i}\right\}, {ci}, 调整簇中心 { μ k } \left\{\mu_{k}\right\} {μk} 使 J J J 减小。这两个过程交替循环, J J J 单调递减:当 J J J 递减到最小值时, { μ k } \left\{\mu_{k}\right\} {μk} { c i } \left\{c_{i}\right\} {ci} 也同时收敘。

图 5.2 是 K -means 算法的一个迭代过程示意图。首先,给定二维空间上的一些样本点(见图 5.2 ( a ) 5.2(\mathrm{a}) 5.2(a) ),直观上这些点可以被分成两类;接下来, 初始化两个中心点( 图 5.2 ( b ) 5.2(\mathrm{b}) 5.2(b) 的棕色和黄色叉子代表中心点 ) ) ),并根据中心点的位置计算每个样本所属的簇(图 5.2 ( c ) 5.2(\mathrm{c}) 5.2(c) 用不同颜色表示 ) ; ) ; ; 然后根据每个簇中的所有点的平均值计算新的中心点位置(见圄 5.2(d )),图 5.2 (e)和图 5.2 (f) 展示了新一轮的迭代结果,在经过两轮的迭代之后,算法基本收敛 。
百面机器学习05-非监督学习_第2张图片

问题:K均值算法的优缺点是?如何对其进行调优?

分析与解答

K \mathrm{K} K 均值算法有一些缺点,例如受初值和离群点的影响每次的结果不稳定、结果通常不是全局最优而是局部最优解、无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的 100 倍 ) ) .不太适用于离散分类等。但是假不掩瑜,K 均值聚类的优点也是很明显和突出的,主要体现在:对于大数据集,K 均值聚类算法相对是可伸缩和高效的,它的计算复杂度是 O ( N K t ) O(N K t) O(NKt) 接近于线性,其中 N N N 是数据对象的数目, K K K 是聚类的簇数, t t t 是迭代的轮数。尽管算法经常以局部最优结束,但一般情况下达到的局部最优已经可以满足聚类的需求。

K \mathrm{K} K 均值算法的调优一般可以从以下几个角度出发。
( 1 )数据归一化和离群点处理。
K 均值聚类本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对数据的聚类结果产生决定性的影响,所以未做归一化处理和统一单位的数据是无法直接参与运算和比较的。同时,离群点或者少量的噪声数据就会对均值产生较大的影响,导致中心偏移,因此使用 K 均值聚类算法之前通常需要对数据做预处理。

(2 ) 合理选择 K K K 值。
K K K 值的选择是 K \mathrm{K} K 均值聚类最大的问题之一,这也是 K \mathrm{K} K 均值聚类算法的主要缺点。实际上,我们希望能够找到一些可行的办法来弥补这一缺点,或者说找到 K K K 值的合理估计方法。但是,K 值的选择一般基于经验和多次实验结果。例如采用手肘法,我们可以尝试不同的 K K K 值,并将不同 K K K 值所对应的损失函数画成折线,横轴为 K K K 的取值,纵轴为误差平方和所定义的损失函数,如图 5.3 所示。
百面机器学习05-非监督学习_第3张图片

由图可见, K K K 值越大, 距离和越小; 并且, 当 K = 3 K=3 K=3 时,存在一个抛点,就像人的肘部一样; 当 K ∈ ( 1 , 3 ) K \in(1,3) K(1,3) 时,曲线急速下降; 当 K > 3 K>3 K>3 时,曲线趋于平稳。手肘法认为抛点就是 K K K 的最佳值。

手肘法是一个经验方法,缺点就是不够自动化,因此研究员们又提出了一些更先进的方法,其中包括比较有名的 Gap Statistic 方法 [ 5 ] { }^{[5]} [5] 。Gap Statistic 方法的优点是,不再需要肉眼判断,而只需要找到最大的 Gap statistic 所对应的 K K K 即可,因此该方法也适用于批量化作业。在这里我们继续使用上面的损失函数,当分为 K K K 簇时,对应的损失函数记为 D k D_{k} Dk 。 Gap Statistic 定义为
Gap ⁡ ( K ) = E ( log ⁡ D k ) − log ⁡ D k \operatorname{Gap}(K)=E\left(\log D_{k}\right)-\log D_{k} Gap(K)=E(logDk)logDk
其中 E ( log ⁡ D k ) E\left(\log D_{k}\right) E(logDk) log ⁡ D k \log D_{k} logDk 的期望,一般通过蒙特卡洛模拟产生。我们在样本所在的区域内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本做 K 均值,得到一个 D k ; D_{k} ; Dk; 重复多次就可以计算出 E ( log ⁡ D k ) E\left(\log D_{k}\right) E(logDk) 的近似值。那么 Gap ⁡ ( K ) \operatorname{Gap}(K) Gap(K) 有什么物理含义呢? 它可以视为随机样本的损失与实际样本的损失之差。试想实际样本对应的最佳簇数为 K , \mathrm{K}, K, 那么实际样本的损失应该相对较小,随机样本损失与实际样本损失之差也相应地达到最小值,从而 Gap ⁡ ( K ) \operatorname{Gap}(K) Gap(K) 取得最大值所对应的 K K K 值就是最佳的簇数。根据式 (5.4) 计算 K = 1 , 2 , … , 9 K=1,2, \ldots, 9 K=1,2,,9 所对应的 Gap Statistic, 如图 5.4 所示。由图可见,当 K = 3 K=3 K=3 时, Gap ⁡ ( K ) \operatorname{Gap}(K) Gap(K) 取值最大,所以最佳的簇数是 K = 3 K=3 K=3
百面机器学习05-非监督学习_第4张图片
(3) 采用核函数。
采用核函数是另一种可以尝试的改进方向。传统的欧式距离度量方式,使得 K均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化,这时算法又称为核 K \mathrm{K} K 均值算法,是核聚类方法的一种 [ 6 ] ^{[6]} [6] 。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。

问题:针对K均值算法的缺点,有哪些改进模型?

分析与解答

K \mathrm{K} K 均值算法的主要缺点如下。
(1)需要人工预先确定初始 K K K 值,且该值和真实的数据分布未必
吻合。
(2)K 均值只能收签到局部最优,效果受到初始值很大。
(3)易受到噪点的影响。
(4)样本点只能被划分到单一的类中。

  • K-means++ 算法
    K 均值的改进算法中,对初始值选择的改进是很重要的一部分。而这类算法中,最具影响力的当属 K-means++算法。原始 K 均值算法最开始随机选取数据集中 K K K 个点作为聚类中心,而 K -means++ 按照如下的思想选取 K K K 个聚类中心。假设已经选取了 n n n 个初始聚类中心 ( 0 < n < K ) , (0(0<n<K), 则在选取第 n + 1 n+1 n+1 个聚类中心时,距离当前 n n n 个聚类中心越远的点会有更高的概率被选为第 n + 1 n+1 n+1 个聚类中心。在选取第一个聚类中心( n = 1 n=1 n=1 )时同样通过随机的方法。可以说这也符合我们的直觉,聚类中心当然是互相离得越远越好 。 当选择完初始点后 , K -means++后续的执行和经典 K 均值值算法相同,这也是对初始值选择进行改进的方法等共同点。

  • ISODATA 算法

K K K 值的大小不确定时,可以使用 ISODATA 算法。ISODATA的全称是迭代自组织数据分析法。在 K 均值算法中,聚类个数 K K K 的值需要预先人为地确定,并且在整个算法过程中无法更改。而当遇到高维度、海量的数据集时,人们往往很难准确地估计出 K K K 的大小。ISODATA 算法就是针对这个问题进行了改进,它的思想也很直观。当属于某个类别的样本数过少时,把该类别去除; 当属于某个类别的样本数过多、分散程度较大时,把该类别分为两个子类别。ISODATA 算法在 K \mathrm{K} K 均值算法的基础之上增加了两个操作,一是分裂操作,对应着增加聚类中心数; 二是合并操作,对应着减少聚类中心数。ISODATA 算法是一个比较常见的算法,其缺点是需要指定的参数比较多,不仅仅需要一个参考的聚类数量 K 0 K_{0} K0 ,还需要制定 3 个逼值。下面介绍 ISODATA算法的各个输入参数。
(1)预期的聚类中心数目 K ∘ K_{\circ} K 。在 ISODATA 运行过程中聚类中心数可以变化, K o K_{\mathrm{o}} Ko 是一个用户指定的参考值,该算法的聚类中心数目变动范围也由其决定。具体地,最终输出的聚类中心数目常见范围是从 K o K_{o} Ko 的一半,到两倍 K 0 ∘ K_{0} \circ K0
(2)每个类所要求的最少样本数目 N min ⁡ N_{\min } Nmin 如果分裂后会导致某个子类别所包含样本数目小于该间值,就不会对该类别进行分裂操作。
(3) 最大方差 Sigma。用于控制某个类别中样本的分散程度。当样本的分散程度超过这个间值时,且分裂后满足(1),进行分裂操作。
(4) 两个聚类中心之间所允许最小距离 D min ⁡ D_{\min } Dmin 如果两个类靠得非常近 ( ( ( 即这两个类别对应聚类中心之间的距离非常小 ) , ), ), 小于该阈值时,则对这两个类进行合并操作。如果希望样本不划分到单一的类中,可以使用模糊 C 均值或者高斯混合模型,高斯混合模型会在下一节中详细讲述。

问题:证明K均值算法的的收敛性

分析与解答

首先,我们需要知道 K \mathrm{K} K 均值聚类的迭代算法实际上是一种最大期望算法(Expectation-Maximization algorithm ),简称 EM 算法。EM 算法解决的是在概率模型中含有无法观测的隐含变量情况下的参数估计问题。假设有 m m m 个观察样本,模型的参数为 θ , \theta, θ, 最大化对数似然函数可以写成如下形式
θ = argmax ⁡ θ ∑ i = 1 m log ⁡ P ( x ( i ) ∣ θ ) \theta=\underset{\theta}{\operatorname{argmax}} \sum_{i=1}^{m} \log P\left(x^{(i)} \mid \theta\right) θ=θargmaxi=1mlogP(x(i)θ)
当概率模型中含有无法被观测的隐含变量时,参数的最大似然估计变为
θ = argmax ⁡ θ ∑ i = 1 m log ⁡ ∑ z ( i ) P ( x ( i ) , Z ( i ) ∣ θ ) \theta=\underset{\theta}{\operatorname{argmax}} \sum_{i=1}^{m} \log \sum_{z^{(i)}} P\left(x^{(i)}, Z^{(i)} \mid \theta\right) θ=θargmaxi=1mlogz(i)P(x(i),Z(i)θ)
由于 z ( i ) z^{(i)} z(i) 是未知的,无法直接通过最大似然估计求解参数,这时就需要利用 EM 算法来求解。假设 z ( i ) z^{(i)} z(i) 对应的分布 为 Q i ( z ( i ) ) , Q_{i}\left(z^{(i)}\right), Qi(z(i)), 并满足 ∑ z ( i ) Q i ( z ( i ) ) = 1 , \sum_{z(i)} Q_{i}\left(z^{(i)}\right)=1, z(i)Qi(z(i))=1, 利用 Jensen 不等式, , , , 可以得到
∑ i = 1 m log ⁡ ∑ z ( i ) P ( x ( i ) , z ( i ) ∣ θ ) = ∑ i = 1 m log ⁡ ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) ⩾ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) log ⁡ P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) \begin{aligned} \sum_{i=1}^{m} \log \sum_{z^{(i)}} P\left(x^{(i)}, z^{(i)} \mid \theta\right) &=\sum_{i=1}^{m} \log \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{Q_{i}\left(z^{(i)}\right)} \\ & \geqslant \sum_{i=1}^{m} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{Q_{i}\left(z^{(i)}\right)} \end{aligned} i=1mlogz(i)P(x(i),z(i)θ)=i=1mlogz(i)Qi(z(i))Qi(z(i))P(x(i),z(i)θ)i=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)

要使上式中的等号成立,需要满足 P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) = c , \frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{Q_{i}\left(z^{(i)}\right)}=c, Qi(z(i))P(x(i),z(i)θ)=c, 其中 c c c 为常数,且满足 ∑ z ( i ) Q i ( z ( i ) ) = 1 ; \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right)=1 ; z(i)Qi(z(i))=1; 因此, Q i ( z ( i ) ) = P ( x ( i ) , z ( i ) ∣ θ ) ∑ z ( 0 ) P ( x ( i ) , z ( i ) ∣ θ ) = P ( z ( i ) ∣ x ( i ) , θ ) Q_{i}\left(z^{(i)}\right)=\frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{\sum_{z^{(0)}} P\left(x^{(i)}, z^{(i)} \mid \theta\right)}=P\left(z^{(i)} \mid x^{(i)}, \theta\right) Qi(z(i))=z(0)P(x(i),z(i)θ)P(x(i),z(i)θ)=P(z(i)x(i),θ)
不等式右侧函数记为 r ( x ∣ θ ) 。 r(x \mid \theta) 。 r(xθ) 当等式成立时,我们相当于为待优化的函数找到了一个逼近的下界,然后通过最大化这个下界可以使得待优化函数向更好的方向改进。

图 5.5 是一个 θ \theta θ 为一维的例子,其中棕色的曲线代表我们待优化的函数,记为 f ( θ ) , f(\theta), f(θ), 优化过程即为找到使得 f ( θ ) f(\theta) f(θ) 取值最大的 θ ∘ \theta_{\circ} θ 在当前 θ \theta θ的取值下(即图中绿色的位置 ) , ), , 可以计算 Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ ) , Q_{i}\left(z^{(i)}\right)=P\left(z^{(i)} \mid x^{(i)}, \theta\right), Qi(z(i))=P(z(i)x(i),θ),
时不等式右侧的函数(记为 r ( x ∣ θ ) r(x \mid \theta) r(xθ) ) 给出了优化函数的一个下界,如图
中蓝色曲线所示,其中在 θ \theta θ 处两条曲线的取值时相等的。接下来找到使
r ( x ∣ θ ) r(x \mid \theta) r(xθ) 最大化的参数 θ ′ \theta^{\prime} θ, 即图中红色的位置, 此时 f ( θ ′ ) f\left(\theta^{\prime}\right) f(θ) 的取值比 f ( θ ) ( f(\theta)( f(θ)( 绿色的位置处 ) ) 有所提升。可以证明, f ( θ ′ ) ⩾ r ( x ∣ θ ) = f ( θ ) , f\left(\theta^{\prime}\right) \geqslant r(x \mid \theta)=f(\theta), f(θ)r(xθ)=f(θ), 因此函数是单调的, 而且 P ( x ( i ) , z ( i ) ∣ θ ) ∈ ( 0 , 1 ) P\left(x^{(i)}, z^{(i)} \mid \theta\right) \in(0,1) P(x(i),z(i)θ)(0,1) 从而函数是有界的。根据函数单调有界必收敘的性质,EM 算法的收立性得证。但是 EM 算法只保证收政到局部最优解。当函数为非凸时,以图 5.5 为例,如果初始化在左边的区域时,则无法找到右侧的高点。

百面机器学习05-非监督学习_第5张图片
由上面的推导,EM 算法框架可以总结如下,由以下两个步骤交替进行直到收政。
(1)E 步骤:计算隐变量的期望
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ ) Q_{i}\left(z^{(i)}\right)=P\left(z^{(i)} \mid x^{(i)}, \theta\right) Qi(z(i))=P(z(i)x(i),θ)
(2) M 步骤:最大化
θ = argmax ⁡ θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) log ⁡ P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) \theta=\underset{\theta}{\operatorname{argmax}} \sum_{i=1}^{m} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{Q_{i}\left(z^{(i)}\right)} θ=θargmaxi=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)
剩下的事情就是说明 K \mathrm{K} K 均值算法与 E M \mathrm{EM} EM 算法的关系了。K 均值算法等价于用 EM 算法求解以下含隐变量的最大似然问题:
P ( x , z ∣ μ 1 , μ 2 , … , μ k ) ∝ { exp ⁡ ( − ∥ x − μ z ∥ 2 2 ) , ∥ x − μ z ∥ 2 = min ⁡ k ∥ x − μ k ∥ 2 0 , ∥ x − μ z ∥ 2 > min ⁡ k ∥ x − μ k ∥ 2 P\left(x, z \mid \mu_{1}, \mu_{2}, \ldots, \mu_{k}\right) \propto\left\{\begin{array}{c}\exp \left(-\left\|x-\mu_{z}\right\|_{2}^{2}\right),\left\|x-\mu_{z}\right\|_{2}=\min _{k}\left\|x-\mu_{k}\right\|_{2} \\ 0 \quad,\left\|x-\mu_{z}\right\|_{2}>\min _{k}\left\|x-\mu_{k}\right\|_{2}\end{array}\right. P(x,zμ1,μ2,,μk){exp(xμz22),xμz2=minkxμk20,xμz2>minkxμk2

其中 z ∈ { 1 , 2 , … , k } z \in\{1,2, \ldots, k\} z{1,2,,k} 是模型的隐变量。直观地理解,就是当样本 x x x 离第 k k k个簇的中心点 μ k \mu_{k} μk 距离最近时,概率正比于 exp ⁡ ( − ∥ x − μ z ∥ 2 2 ) , \exp \left(-\left\|x-\mu_{z}\right\|_{2}^{2}\right), exp(xμz22), 否则为 0 。在 E 步骤,计算
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , μ 1 , μ 2 , … , μ k ) ∝ { 1 , ∥ x ( i ) − μ z ( i ) ∥ 2 = min ⁡ k ∥ x − μ k ∥ 2 0 , ∥ x ( i ) − μ z ( i ) ∥ 2 > min ⁡ k ∥ x − μ k ∥ 2 Q_{i}\left(z^{(i)}\right)=P\left(z^{(i)} \mid x^{(i)}, \mu_{1}, \mu_{2}, \ldots, \mu_{k}\right) \propto\left\{\begin{array}{l}1,\left\|x^{(i)}-\mu_{z^{(i)}}\right\|_{2}=\min _{k}\left\|x-\mu_{k}\right\|_{2} \\ 0,\left\|x^{(i)}-\mu_{z^{(i)}}\right\|_{2}>\min _{k}\left\|x-\mu_{k}\right\|_{2}\end{array}\right. Qi(z(i))=P(z(i)x(i),μ1,μ2,,μk){1,x(i)μz(i)2=minkxμk20,x(i)μz(i)2>minkxμk2
这等同于在 K \mathrm{K} K 均值算法中对于每一个点 x ( i ) x^{(i)} x(i) 找到当前最近的簇 z ( i ) 。 z^{(i)} 。 z(i)
M \mathrm{M} M 步骤, 找到最优的参数 θ = { μ 1 , μ 2 , … , μ k } , \theta=\left\{\mu_{1}, \mu_{2}, \ldots, \mu_{k}\right\}, θ={μ1,μ2,,μk}, 使得似然函数最大:
θ = argmax ⁡ θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) log ⁡ P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) \theta=\underset{\theta}{\operatorname{argmax}} \sum_{i=1}^{m} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{Q_{i}\left(z^{(i)}\right)} θ=θargmaxi=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)
经过推导可得
∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) log ⁡ P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) =  const  − ∑ i = 1 m ∥ x ( i ) − μ z ( i ) ∥ 2 \sum_{i=1}^{m} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{P\left(x^{(i)}, z^{(i)} \mid \theta\right)}{Q_{i}\left(z^{(i)}\right)}=\text { const }-\sum_{i=1}^{m}\left\|x^{(i)}-\mu_{z^{(i)}}\right\|^{2} i=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)= const i=1mx(i)μz(i)2
因此,这一步骤等同于找到最优的中心点 μ 1 , μ 2 , … , μ k , \mu_{1}, \mu_{2}, \ldots, \mu_{k}, μ1,μ2,,μk, 使得损失函数 ∑ i = 1 m ∥ x ( i ) − μ z i i ∥ 2 \sum_{i=1}^{m}\left\|x^{(i)}-\mu_{z^{i i}}\right\|^{2} i=1mx(i)μzii2 达到最小,此时每个样本 x ( i ) x^{(i)} x(i) 对应的簇 z ( i ) z^{(i)} z(i) 已确定,因此每个簇 k k k 对应的最优中心点 μ k \mu_{k} μk 可以由该簇中所有点的平均计算得到,这与 K \mathrm{K} K 均值算法中根据当前簇的分配更新聚类中心的步骤是等同的。

01:高斯混合模型

高斯混合模型( Gaussian Mixed Model, GMM )也是一种常见的累类算法,与 K均值算法类似,同样使用了 EM 算法进行迭代计算 。 高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布)的 1 当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果 。图 5.6 是一个数据分布的样例 , 如果只用一个高斯分布来拟合国中的数据,图中所示的椭圆即为高斯分布的二倍标准差所对应的椭圆 。 直观来说,国中的数据明显分为两簇,因此只用一个高斯分布来拟和是不太合理的,需要推广到用多个高斯分布的叠加来对数据进行拟台。图 5.7是用两个高斯分布的叠加来拟合得到的结果 。 这就引出了高斯混合模型,即用多个高斯分布函数的结形组合来对数据分布进行拟台 。 理论上1高斯混合模型可以拟台出任意类型的分布 。
百面机器学习05-非监督学习_第6张图片
百面机器学习05-非监督学习_第7张图片

知识点:高斯纱布,高斯混合模型, EM 算法

问题:高斯混合蟆型的核心思想是什么?它是如何迭代计算的?

分析与解答
说起高斯分布,大家都不階生,通常身高、分数等都大致符合高斯分布。因此,当我们研究各类数据时,假设同一类的数据符合高斯分布,也是很简单自然的假设; 当数据事实上有多个类,或者我们希望将数据划分为一些簇时,可以假设不同簇中的样本各自服从不同的高斯分布,由此得到的聚类算法称为高斯混合模型。高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的。在该假设下,每个单独的分模型都是标准高斯模型,其均值 μ i \mu_{i} μi 和方差 Σ i \Sigma_{i} Σi 是待估计的参数。此外,每个分模型都还有一个参数 π i , \pi_{i}, πi, 可以理解为权重或生成数据的概率。高斯混合模型的公式为
p ( x ) = ∑ i = 1 K π i N ( x ∣ μ i , Σ i ) p(x)=\sum_{i=1}^{K} \pi_{i} N\left(x \mid \mu_{i}, \Sigma_{i}\right) p(x)=i=1KπiN(xμi,Σi)
高斯混合模型是一个生成式模型。可以这样理解数据的生成过程,假设一个最简单的情况,即只有两个一维标准高斯分布的分模型 N ( 0 , 1 ) N(0,1) N(0,1) N ( 5 , 1 ) , N(5,1), N(5,1), 其权重分别为 0.7 和 0.3 。那么,在生成第一个数据点时先按照权重的比例,随机选择一个分布,比如选择第一个高斯分布,接着从 N ( 0 , 1 ) N(0,1) N(0,1) 中生成一个点,如 − 0.5 , -0.5 , 0.5 便是第一个数据点。在生成第二个数据点时,随机选择到第二个高斯分布 N ( 5 , 1 ) , N(5,1), N(5,1), 生成了第二个点 4.7 。如此循环执行,便生成出了所有的数据点。然而,通常我们并不能直接得到高斯混合模型的参数,而是观察到了一系列数据点,给出一个类别的数量 K K K 后,希望求得最佳的 K K K 个高斯分模型。因此,高斯混合模型的计算,便成了最佳的均值 μ , \mu, μ, 方差 Σ 、 \Sigma 、 Σ权重 π \pi π 的寻找,这类问题通常通过最大似然估计来求解。遗惑的是,此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。

在这种情况下,可以用上一节已经介绍过的 EM 算法框架来求解该优化问题。EM 算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。具体到高斯混合模型的求解,EM 算法的迭代过程如下。
首先,初始随机选择各参数的值。然后,重复下述两步,直到收效。
(1) E \mathrm{E} E 步骤。根据当前的参数,计算每个点由某个分模型生成的
概率。
(2)M 步骤。使用 E 步骤估计出的概率, 来改进每个分模型的均值,
方差和权重。

也就是说,我们并不知道最佳的 K K K 个高斯分布的各自 3 个参数,也不知道每个数据点究竟是哪个高斯分布生成的。所以每次循环时,先固定当前的高斯分布不变,获得每个数据点由各个高斯分布生成的概率。然后固定该生成概率不变,根据数据点和生成概率,获得一个组更佳的高斯分布。循环往复,直到参数的不再变化,或者变化非常小时,便得到了比较合理的一组高斯分布 。

高斯混合模型与 K 均值算洼的相同点是, 它们都是可用于聚类的算法都需要指定 K值 ;都是使用 EM 算法来求解,都往往只能收敛于局部最优 。 而它相比于 K 均值算法的优点是,可以给出一个样本属于某类的概率是多少,不仅仅可以用于聚类,还可以用于概率密度的估计,并且可以用于生成新的样本点 。

03:自组织映射神经网络

场景描述
自组织映射神经网络( Self-Organizing Map , SOM )是无监督学习方法中一类重要方法 ,可以用作聚类、高维可视化、数据压缩、特征提取等多种用途 。 在深度神经网络大为流行的今天,谈及自组织映射神经网络依然是一件非常有意义的事情,这主要是由于自组织映射神经网络融入了大量人脑神经元的信号处理机制,高着独特的结构特点。该模型由芬兰赫尔辛基大学教授 Teuvo Kohonen 于 1981年提出,因此也被称为Kohonen 网络 。

知识点:自组织映射神经网络

问题:自组织映射神经网络是如何工作的?它与K均值算法有何区别?

生物学研究表明,在人脑的感知通道上,神经元组织是有序排列的,同时,大脑皮层会对外界特定时空信息的输入在特定区域产生兴奋,而且相类似的外界信息输入产生对应兴奋的大脑皮层区域也连续映像的 。 例如,生物视网膜中有许多特定的细胞对特定的图形比较敏感,当视网膜中有若干个接收单元同时受特定模式剌激时,就使大脑皮层中的特定神经元开始兴奋,且输入模式接近时与之对应的兴奋神经元也接近;在听觉通道上,神经元在结构排列上与频率的关系十分密切,对于某个频率,特定的神经元具有最大的响应,位置中相邻的神经元具有相近的频率特征,而远离的神经元旦有的频率特征差别也较大。大脑皮层中神经元的这种响应特点不是先天安排好的,而是通过后天的学习自组织形成的 。

在生物神经系统中,还存在着一种侧抑制现象,即一个神经细胞兴奋后,会对周围真他神经细胞产生抑制作用 。 这种抑制作用会使神经细胞之间出现竞争,真结果是某些获胜,而另一些则失败 。 表现形式是获胜神经细胞兴奋,失败神经细胞抑制。自组织神经网络就是对上述生物神经系统功能的一种人工神经网络模拟 。

自组织映射神经网络本质上是一个两层的冲经网络,包含输入层和输出层( 竞争层) 。 输入层模拟感知外界输入信息的视网膜 , 输出层模拟做出响应的大脑皮层 。 输出层中神经元的个数通常是聚类的个数,代表每一个需要聚成的类。训练时采用“竞争学习”的方式,每个输入的样例在输出层中找到一个和它最匹配的节点 , 称为激活节点,也叫winning neuron ;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据他们距离激活节点的远近而适当地更新参数 。 这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现 。 自组织映射神经网络的输出层节点是有拓扑关系的 。 这个拓扑关系依据需求确定,如果想要一维的模型,那么隐藏节点可以是“一维线阵” ; 如果想要二维的拓扑关系,那么就行成一个“二维平面阵" '如图 5.8 所示 。 也高更高维度的拓扑关系的 , 比如 “三维栅恪阵” , 但并不常见 。

百面机器学习05-非监督学习_第8张图片

假设输入空间是 D D D 维,输入模式为 x = { x i , i = 1 , … , D } , x=\left\{x_{i}, i=1, \ldots, D\right\}, x={xi,i=1,,D}, 输入单元 i i i
和神经元 j j j 之间在计算层的连接权重为 w = { w i , j , j = 1 , … , N , i = 1 , … , D } w=\left\{w_{i, j}, j=1, \ldots, N, i=1, \ldots, D\right\} w={wi,j,j=1,,N,i=1,,D},其中 N N N 是神经元的总数。自组织映射神经网络的自组织学习过程可以归纳为以下几个子过程。

(1)初始化。所有连接权重都用小的随机值进行初始化。
(2)竞争。神经元计算每一个输入模式各自的判别函数值,并宣布具有最小判别函数值的特定神经元为胜利者,其中每个神经元 j j j 的判别函数为 d j ( x ) = ∑ i = 1 D ( x i − w i , j ) 2 d_{j}(x)=\sum_{i=1}^{D}\left(x_{i}-w_{i, j}\right)^{2} dj(x)=i=1D(xiwi,j)2
(3)合作。获胜神经元 I ( x ) I(x) I(x) 决定了兴奋神经元拓扑邻域的空间位置。确定激活结点 I ( x ) I(x) I(x) 之后,我们也希望更新和它临近的节点。更新程度计算如下: T j , I ( x ) ( t ) = exp ⁡ ( − S j , l ( x ) 2 2 σ ( t ) 2 ) , T_{j, I(x)}(t)=\exp \left(-\frac{S_{j, l(x)}^{2}}{2 \sigma(t)^{2}}\right), Tj,I(x)(t)=exp(2σ(t)2Sj,l(x)2), 其中 S i j S_{i j} Sij 表示竞争层神经元 i i i j j j 之间的距离 , σ ( t ) = σ 0 exp ⁡ ( − t τ σ ) , \sigma(t)=\sigma_{0} \exp \left(-\frac{t}{\tau_{\sigma}}\right) ,σ(t)=σ0exp(τσt) 随时间衰减; 简单地说,临近的节点距离越远,更新的程度要打更大折扣。
(4 ) ) 适应。适当调整相关兴奋神经元的连接权重,使得获胜的神经元对相似输入模式的后续应用的响应增强: Δ W j i = η ( t ) ⋅ T j , l ( x ) ( t ) ⋅ ( x i − w j i ) \Delta W_{j i}=\eta(t) \cdot T_{j, l(x)}(t) \cdot\left(x_{i}-w_{j i}\right) ΔWji=η(t)Tj,l(x)(t)(xiwji)其中依赖于时间的学习率定义为 : η ( t ) = η 0 exp ⁡ ( − t τ η ) : \eta(t)=\eta_{0} \exp \left(-\frac{t}{\tau_{\eta}}\right) :η(t)=η0exp(τηt)

在迭代结束之后,每个样本所激活的神经元就是它对应的类别。自组织映射神经网络具有保序映射的特点,可以将任意维输入模式在输出层映射为一维或者二维图形,并保持拓扑结构不变。这种拓扑映射使得“输出层神经元的空间位置对应于输入空间的特定域或特征"。
由其学习过程可以看出,每个学习权重更新的效果等同于将获胜的神经元及其邻近的权向量 w i w_{i} wi 向输入向量 x x x 移动,同时对该过程的迭代进行会使得网络的拓扑有序。在自组织映射神经网络中,获胜的神经元将使得相关的各权重向更加有利于它竞争的方向调整,即以获胜神经元为中心,对近邻的神经元表现出兴奋性侧反贵,而对远邻的神经元表现出抑制性侧反贵,近邻者互相激励,远邻者相互抑制。近邻和远邻均有一定的范围,对更远邻的神经元则表现弱激励的作用。这种交互作用的方式以曲线可视化则类似于“墨西哥帽”,如图 5.9 所示。

百面机器学习05-非监督学习_第9张图片
自组织映射神经网络与 K 均值算法的区别如下 。
(1)K均值算法需要事先走下类的个数,也就是 K 的值 。 而自组织映射神经网络则不用 ,隐藏层中的某些节点可以没再任何输入数据属于它,因此聚类结果的实际簇数可能会小子神经元的个数 。 而 K 均值算法受 K值设定的影响要重大一些 。
(2) K 均值算法为每个输入数据找到一个最相似的类后 ,只更新这个类的参数;自组织映射神经网络则会更新临近的节点。所以, K 均值算法受noise data 的影响比较大,而自组织映射神经网络的准确性可能会比 K 均值算法低(因为也重新了临近节点) 。
(3)相比较而言 3 自组织映射神经网络的可视化比较好,而且具有优雅的拓扑关系图 。

问题:怎样设计自组织映射神经网络并设定网络训练参数?

分析与解答

  • 设定输出层神经元的数量
    输出层神经元的数量和训练集样本的类别数相关。若不清楚类别数,则尽可能地设定较多的节点数,以便较好地映射样本的拓扑结构,如果分类过细再酌情减少输出节点 。 这样可能会带来少量从未更新过权值的“死节点”,但一般可通过重新初始化权重来解决。

  • 设计输出层节点的排序
    输出层的节点排列成哪种形式取决于实际应用的需要,排列形式应尽量直观地反映出实际问题的物理意义。例如,对于一般的分类问题,一个输出节点能代表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或者服行路径类的问题,二维平面则比较直观。

  • 初始化权重
    可以随机初始化,但尽量使权值的初始位置与输入样本的大概分布区域充分重合,避免出现大量的初始“死节点”。一种简单易行的方法是从训练集中随机抽取 m 个输入样本作为初始权值 。

  • 设计拓扑领域
    拓扑领域的设计原则是使领域不断缩小, 这样输出平面上相邻神经元对应的权向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生最大响应时,其领域节点也能产生较大响应 。 领域的形状可以是正方形、六边形或者萎形 。 优势领域的大小用领域的半径表示,通常凭借经验来选择。

  • 设计学习率
    学习率是一个递减的函数,可以结合拓扑邻域的更新一起考虑 ,也可分开考虑 。 在训练开始时,学习率可以选取较大的值,之后以较快的速度下降,这样有利于很快地捕捉到输入向量的大致结构,然后学习率在较小的值上缓降至 0值,这样可以精细地调整权值使之符合输入空间的样本分布结构 。

04:聚类算法的评估

场景描述
人具有很强的归纳思考能力 ,善于从一大堆碎片化的事实或者数据中寻找普遍规律,并得到具有逻辑性的结论 。 以用户观看视频的行为为例,可以存在多种直观的归纳方式,比如从喜欢观看内容的角度,可以分为动画片、偶像剧、 科幻片等,从常使用的设备角度,可以分为台式电脑 、 手机 、 平板便携式设备 、 电视等, 从使用时间段上看 , 高傍晚、中午、每天、只在周末观看的用户,等等 。 对所有用户进行高效的分组对于理解用户并推荐给用户合适的内窑是很重要的 。 通常这类问题没有观测数据的标签或者分组信息 , 需要通过算法模型来寻求数据内在的结构和模式 。

知识点:数据簇,聚类算法评估指标

问题:以聚类问题为例,假设没有外部标签数据,如何评估两个聚类算法的优劣?

场景描述中的例子就是一个典型的聚类问题,从中可以看出 , 数据的聚类依赖于实际需求,同时也依赖于数据的特征度量以及评估数据相似性的方法 。 相比于监督学习,非监督学习通常没有标注数据,模型、算法的设计直接影响最终的输出和模型的性能 。 为了评估不同聚类算法的性能优劣,我们需要了解常见的数据簇的特点 。

  • 以中心定义的数据簇:这类数据集合倾向于球形分布,通常中心被定义为质心,即此数据簇中所高点的平均值。集合中的数据到中心的距离相比到真他簇中心的距离更近 。
  • 以密度定义的数据簇:这类数据集合呈现和周围数据簇明显不同的密度,或稠密或稀疏 。 当数据簇不规则或互相盘绕,并且奇噪声和离群点时,常常使用基于密度的簇定义 。
  • 以连通定义的数据簇:这类数据集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构 。 该定义对不规则形状或者缠绕的数据簇有效 。
  • 以概念定义的数据簇:这类数据集合中的所高数据点且具有某种共同性质。

由于数据以及需求的多样性,没有一种算法能够适用于所有的数据类型、数据簇或应用场景,似平每种情况都可能需要一种不同的评估方法或度量标准。例如,K 均值聚类可以用误差平方和来评估,但是基于密度的数据簇可能不是球形,误差平方和则会失效。在许多情况下,判断聚类算法结果的好坏强烈依赖于主观解释。尽管如此,聚类算法的评估还是必需的,它是聚类分析中十分重要的部分之一。

聚类评估的任务是估计在数据集上进行聚类的可行性,以及聚类方法产生结果的质量。这一过程又分为三个子任务。
(1)估计聚类趋势。
这一步骤是检测数据分布中是否存在非随机的簇结构。如果数据是基本随机的,那么聚类的结果也是毫无意义的。我们可以观察聚类误差是否随聚类类别数量的增加而单调变化,如果数据是基本随机的,即不存在非随机簇结构,那么聚类误差随聚类类别数量增加而变
化的幅度应该较不显著,并且也找不到一个合适的 K K K 对应数据的真实簇数。

另外,我们也可以应用霍普金斯统计量(Hopkins Statistic ) 来判断数据在空间上的随机性 [ 7 ] ^{[7]} [7] 。首先,从所有样本中随机找 n n n 个点, 记为 p 1 , p 2 , … , p n , p_{1}, p_{2}, \ldots, p_{n}, p1,p2,,pn, 对其中的每一个点 p i , p_{i}, pi, 都在样本空间中找到一个离它最近的点并计算它们之间的距离 x i , x_{i}, xi, 从而得到距离向量 x 1 , x 2 , … , x n ; x_{1}, x_{2}, \ldots, x_{n} ; x1,x2,,xn; 然后,从样本的可能取值范围内随机生成 n n n 个点, 记为 q 1 , q 2 , … , q n , q_{1}, q_{2}, \ldots, q_{n}, q1,q2,,qn, 对每个随机生成的点,找到一个离它最近的样本点并计算它们之间的距离,得到 y 1 , y 2 , … , y n y_{1}, y_{2}, \ldots, y_{n} y1,y2,,yn 。霍普金斯统计量 H H H 可以表示为 : H = ∑ i = 1 n y i ∑ i = 1 n x i + ∑ i = 1 n y i H=\frac{\sum_{i=1}^{n} y_{i}}{\sum_{i=1}^{n} x_{i}+\sum_{i=1}^{n} y_{i}} H=i=1nxi+i=1nyii=1nyi
如果样本接近随机分布,那么 ∑ i = 1 n x i \sum_{i=1}^{n} x_{i} i=1nxi ∑ i = 1 n y i \sum_{i=1}^{n} y_{i} i=1nyi 的取值应该比较接近,即 H H H 的值接近于 0.5 ; 0.5 ; 0.5; 如果聚类趋势明显,则随机生成的样本点距离应该
远大于实际样本点的距离,即 ∑ i = 1 n y i ≫ ∑ i = 1 n x i , H \sum_{i=1}^{n} y_{i} \gg \sum_{i=1}^{n} x_{i}, H i=1nyii=1nxi,H 的值接近于 1 。
(2 )判定数据簇数
确定聚类趋势之后, 我们需要找到与真实数据分布最为吻合的簇数,据此判定聚类结果的质量。数据簇数的判定方法有很多,例如手肘法和Gap Statistic 方法。需要说明的是,用于评估的最佳数据簇数可能与程序输出的簇数是不同的。例如,有些聚类算法可以自动地确定数据的簇数,但可能与我们通过其他方法确定的最优数据簇数有所差别。
(3) 测定聚类质量
给定预设的簇数,不同的聚类算法将输出不同的结果,如何判定哪个聚类结果的质量更高呢?在无监督的情况下,我们可以通过考察簇的分离情况和簇的紧奏情况来评估聚类的效果。定义评估指标可以展现面试者实际解决和分析问题的能力。事实上测量指标可以有很多种,以下列出了几种常用的度量指标,更多的指标可以阅读相关文献 。

  • 轮廓系数:给定一个点 p , p, p, 该点的轮廓系数定义为
    s ( p ) = b ( p ) − a ( p ) max ⁡ { a ( p ) , b ( p ) } s(p)=\frac{b(p)-a(p)}{\max \{a(p), b(p)\}} s(p)=max{a(p),b(p)}b(p)a(p)
    其中 a ( p ) a(p) a(p) 是点 p p p 与同一簇中的其他点 p ′ p^{\prime} p 之间的平均距离; b ( p ) b(p) b(p)是点 p p p 与另一个不同簇中的点之间的最小平均距离(如果有 n n n 个其他Ciudad,则只计算和点 p p p 最接近的一簇中的点与该点的平均距离 ) ∘ a ( p ) ) \circ a(p) )a(p) 反映的是 p p p 所属簇中数据的紧奏程度, b ( p ) b(p) b(p) 反映的是该簇与其他临近簇的分离程度。显然, b ( p ) b(p) b(p) 越大, a ( p ) a(p) a(p) 越小,对应的聚类质量越好,因此我们将所有点对应的轮廓系数 s ( p ) s(p) s(p) 求平均值来度量聚类结果的质量。
  • 均方根标准偏差(Root-mean-square standard deviation, RMSSTD ) ) :
    用来衡量聚结果的同质性,即紧奏程度,定义为
    R M S S T D = { ∑ i ∑ x ∈ C i ∥ x − c i ∥ 2 P ∑ i ( n i − 1 ) } 1 2 R M S S T D=\left\{\frac{\sum_{i} \sum_{x \in C_{i}}\left\|x-c_{i}\right\|^{2}}{P \sum_{i}\left(n_{i}-1\right)}\right\}^{\frac{1}{2}} RMSSTD={Pi(ni1)ixCixci2}21
    其中 C i C_{i} Ci 代表第 i i i 个簇 , c i , c_{i} ,ci 是该簇的中心 , x ∈ C i , x \in C_{i} ,xCi 代表属于第 i i i
    簇的一个样本点, n i n_{i} ni 为第 i i i 个簇的样本数量, P P P 为样本点对应的向量维数。可以看出,分母对点的维度 P P P 做了惩罚,维度越高,则整体的平方距离度量值越大。 ∑ i ( n i − 1 ) = n − N C , \sum_{i}\left(n_{i}-1\right)=n-N C, i(ni1)=nNC, 其中 n n n 为样本点的总数, N C N C NC 为聚类簇的个数,通常 N C ≪ n , N C \ll n, NCn, 因此 ∑ i ( n i − 1 ) \sum_{i}\left(n_{i}-1\right) i(ni1)的值接近点的总数,为一个常数。综上, R M S S T D R M S S T D RMSSTD 可以看作是经过归一化的标准差。
  • R 方(R-Square ):可以用来衡量聚类的差异度,定义为
    R S = ∑ x ∈ D ∥ x − c ∥ 2 − ∑ i ∑ x ∈ C i ∥ x − c i ∥ 2 ∑ x ∈ D ∥ x − c ∥ 2 R S=\frac{\sum_{x \in D}\|x-c\|^{2}-\sum_{i} \sum_{x \in C_{i}}\left\|x-c_{i}\right\|^{2}}{\sum_{x \in D}\|x-c\|^{2}} RS=xDxc2xDxc2ixCixci2
    其中 D D D 代表个数据集,c代 表数据集 D D D 的中心点, 从而 ∑ x ∈ D ∥ x − c ∥ 2 \sum_{x \in D}\|x-c\|^{2} xDxc2 代表将数据集 D D D 看作单一簇时的平方误差和。与上一指标 R M S S T D R M S S T D RMSSTD 中的定义相同 , ∑ i ∑ x ∈ C i ∥ x − c i ∥ 2 , \sum_{i} \sum_{x \in C_{i}}\left\|x-c_{i}\right\|^{2} ,ixCixci2 代表将数据集聚类之后的平方误差和,所以 R S R S RS 代表了聚类之后的结果与聚类之前相比,对应的平方误差和指标的改进幅度。
  • 改进的 Hubert\Gamma 统计: 通过数据对的不一致性来评估聚类的差异,
    定义为
    Γ = 2 n ( n − 1 ) ∑ x ∈ D ∑ y ∈ D d ( x , y ) d x ∈ C i , y ∈ C j ( c i , c j ) \Gamma=\frac{2}{n(n-1)} \sum_{x \in D} \sum_{y \in D} d(x, y) d_{x \in C_{i}, y \in C_{j}}\left(c_{i}, c_{j}\right) Γ=n(n1)2xDyDd(x,y)dxCi,yCj(ci,cj)
    其中 d ( x , y ) d(x, y) d(x,y) 表示点 x x x 到点 y y y 之间的距离 , d x ∈ C i , y ∈ C j ( c i , c j ) , d_{x \in C_{i}, y \in C_{j}}\left(c_{i}, c_{j}\right) ,dxCi,yCj(ci,cj) 代表点 x x x 所在的簇中心 c i c_{i} ci 与点 y y y 所在的簇中心 c j c_{j} cj 之间的距离 , n ( n − 1 ) 2 , \frac{n(n-1)}{2} ,2n(n1)为所有 ( x , y ) (x, y) (x,y) 点对的个数,因此指标相当于对每个点对的和做了归一化处理。理想情况下,对于每个点对 ( x , y ) , (x, y), (x,y), 如果 d ( x , y ) d(x, y) d(x,y) 越小,对应的 d x ∈ C i , y ∈ C j ( c i , c j ) d_{x \in C_{i}, y \in C_{j}}\left(c_{i}, c_{j}\right) dxCi,yCj(ci,cj) 也应该越小(特别地,当它们属于 同一个聚类簇时, d x ∈ C i , y ∈ C j ( c i , c j ) = 0 d_{x \in C_{i}, y \in C_{j}}\left(c_{i}, c_{j}\right)=0 dxCi,yCj(ci,cj)=0 ) ; 当 d ( x , y ) d(x, y) d(x,y) 越大时, d x ∈ C i , y ∈ C j ( c i , c j ) d_{x \in C_{i}, y \in C_{j}}\left(c_{i}, c_{j}\right) dxCi,yCj(ci,cj) 的取值也应当越大,所以 Γ \Gamma Γ 值越大说明聚类的结果与样本的原始距离越吻合,也就是聚类质量越高。此外,为了更加合理地评估不同聚类算法的性能,通常还需要人为地构造不同类型的数据集,以观察聚类算法在这些数据集上的效果,几个常见的例子如图 5.10 图 5.14 所示。百面机器学习05-非监督学习_第10张图片

你可能感兴趣的:(机器学习,算法,聚类,机器学习)