《百面机器学习》读书笔记(五)-非监督学习

全部笔记的汇总贴:《百面机器学习》-读书笔记汇总

给机器输入大量的特征数据,并期望机器通过学习找到数据中存在的某种共性特征或者结构,亦或是数据之间存在的某种关联。

相比于监督学习,非监督学习的输入数据没有标签信息,需要通过算法模型来挖掘数据内在的结构和模式。非监督学习主要包含两大类学习方法:数据聚类和特征变量关联。其中,聚类算法往往是通过多次迭代来找到数据的最优分割,而特征变量关联则是利用各种相关性分析方法来找到变量之间的关系。

一、k均值聚类

分类问题属于监督学习的范畴,而聚类则是非监督学习。K均值聚类(K-Means Clustering)是最基础和最常用的聚类算法。它的基本思想是,通过迭代方式寻找K个簇(Cluster)的一种划分方案,使得聚类结果对应的代价函数最小。特别地,代价函数可以定义为各个样本距离所属簇中心点的误差平方和 J ( c , μ ) = ∑ i = 1 M ∣ ∣ x i − μ c i ∣ ∣ 2 J(c,\mu)=\sum_{i=1}^M||x_i-\mu_{c_i}||^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均值算法的具体步骤。

K均值聚类的核心目标是将给定的数据集划分成K个簇,并给出每个数据对应的簇中心点。算法的具体步骤描述如下:

  1. 数据预处理,如归一化、离群点处理等。
  2. 随机选取K个簇中心,记为 μ 1 ( 0 ) , μ 2 ( 0 ) , ⋯   , μ K ( 0 ) \mu^{(0)}_1,\mu^{(0)}_2,\cdots,\mu^{(0)}_K μ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||x_i-\mu_{c_i}||^2 J(c,μ)=μmincmini=1Mxiμci2
  4. t = 0 , 1 , 2 , ⋯ t=0,1,2,\cdots t=0,1,2, 为迭代步数,重复下面过程直到 J J J收敛:
  • 对于每一个样本 x i x_i xi,将其分配到距离最近的簇 c i ( t ) ← arg min ⁡ k ∣ ∣ x i − μ K ( t ) ∣ ∣ 2 c_i^{(t)}\leftarrow \argmin_k||x_i-\mu_K^{(t)}||^2 ci(t)kargminxiμK(t)2
  • 对于每一个类簇k,重新计算该类簇的中心 μ k ( t + 1 ) ← arg min ⁡ μ ∑ i : c i ( t ) ∣ ∣ x i − μ ∣ ∣ 2 \mu_k^{(t+1)}\leftarrow\argmin_{\mu}\sum_{i:c_i^{(t)}}||x_i-\mu||^2 μk(t+1)μargmini:ci(t)xiμ2
  • ★★★☆☆ K均值算法的优缺点是什么?如何对其进行调优?

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

  • 数据归一化和离群点处理。

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

  • 合理选择K值。

K值的选择是K均值聚类最大的问题之一,这也是K均值聚类算法的主要缺点。实际上,我们希望能够找到一些可行的办法来弥补这一缺点,或者说找到K值的合理估计方法。但是,K值的选择一般基于经验和多次实验结果。

  • 手肘法
  • Gap Statistic方法
  • 采用核函数。

采用核函数是另一种可以尝试的改进方向。传统的欧式距离度量方式,使得K均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化,这时算法又称为核K均值算法,是核聚类方法的一种[核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。

  • ★★★☆☆ 针对K均值算法的缺点,有哪些改进的模型?

K均值算法的主要缺点如下。

  • 需要人工预先确定初始K值,且该值和真实的数据分布未必吻合。
  • K均值只能收敛到局部最优,效果受到初始值很大。
  • 易受到噪点的影响。
  • 样本点只能被划分到单一的类中。
       \;

改进算法有以下几种。

  • K-means++算法

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

  • ISODATA算法

当K值的大小不确定时,可以使用ISODATA算法。ISODATA的全称是迭代自组织数据分析法。在K均值算法中,聚类个数 K K K的值需要预先人为地确定,并且在整个算法过程中无法更改。而当遇到高维度、海量的数据集时,人们往往很难准确地估计出K的大小。ISODATA算法就是针对这个问题进行了改进,它的思想也很直观。当属于某个类别的样本数过少时,把该类别去除;当属于某个类别的样本数过多、分散程度较大时,把该类别分为两个子类别。ISODATA算法在K均值算法的基础之上增加了两个操作,一是分裂操作,对应着增加聚类中心数;二是合并操作,对应着减少聚类中心数。ISODATA算法是一个比较常见的算法,其缺点是需要指定的参数比较多,不仅仅需要一个参考的聚类数量 K o K_o Ko,还需要制定3个阈值。下面介绍ISODATA算法的各个输入参数。

  • 预期的聚类中心数目 K o K_o Ko。在ISODATA运行过程中聚类中心数可以变化, K o K_o Ko是一个用户指定的参考值,该算法的聚类中心数目变动范围也由其决定。具体地,最终输出的聚类中心数目常见范围是从 K o K_o Ko的一半,到两倍 K o K_o Ko
  • 每个类所要求的最少样本数目 N m i n N_{min} Nmin。如果分裂后会导致某个子类别所包含样本数目小于该阈值,就不会对该类别进行分裂操作。
  • 最大方差 σ \sigma σ。用于控制某个类别中样本的分散程度。当样本的分散程度超过这个阈值时,且分裂后满足第一步,进行分裂操作。
  • 两个聚类中心之间所允许最小距离 D m i n D_{min} Dmin。如果两个类靠得非常近(即这两个类别对应聚类中心之间的距离非常小),小于该阈值时,则对这两个类进行合并操作。
  • ★★★★☆ 证明K均值算法的收敛性。

使用EM算法。
m m m个观察样本,模型的参数为 θ θ θ,最大化对数似然函数可以写成 θ = arg max ⁡ θ ∑ i = 1 m log ⁡ P ( x ( i ) ∣ θ ) \theta=\argmax_\theta \sum_{i=1}^m\log P(x^{(i)}|\theta) θ=θargmaxi=1mlogP(x(i)θ)
当概率模型中含有无法被观测的隐含变量时,参数的最大似然估计变为 θ = arg max ⁡ θ ∑ i = 1 m log ⁡ ∑ z ( i ) P ( x ( i ) , z ( i ) ∣ θ ) \theta=\argmax_\theta \sum_{i=1}^m\log \sum_{z^{(i)}}P(x^{(i)},z^{(i)}|\theta) θ=θargmaxi=1mlogz(i)P(x(i),z(i)θ)
因为 z ( i ) z^{(i)} z(i)是未知的,我们假设对应的分布为 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i)),并满足 ∑ z ( i ) Q i ( z ( i ) ) = 1 \sum_{z^{(i)}}Q_i(z^{(i)})=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 ) ) \sum_{i=1}^m\log \sum_{z^{(i)}}P(x^{(i)},z^{(i)}|\theta)=\sum_{i=1}^m\log \sum_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}\\\ge \sum_{i=1}^m \sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})} 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(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}=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(z^{(i)})=1 z(i)Qi(z(i))=1因此 Q i ( z ( i ) ) = P ( x ( i ) , z ( i ) ∣ θ ) ∑ z ( i ) P ( x ( i ) , z ( i ) ∣ θ ) = P ( z ( i ) ∣ x ( i ) , θ ) Q_i(z^{(i)})=\frac{P(x^{(i)},z^{(i)}|\theta)}{\sum_{z^{(i)}}P(x^{(i)},z^{(i)}|\theta)}=P(z^{(i)}|x^{(i)},\theta) Qi(z(i))=z(i)P(x(i),z(i)θ)P(x(i),z(i)θ)=P(z(i)x(i),θ)
不等式右侧函数记为 r ( x ∣ θ ) r(x|θ) r(xθ)。当等式成立时,我们相当于为待优化的函数找到了一个逼近的下界,然后通过最大化这个下界可以使得待优化函数向更好的方向改进。
E步:计算隐变量的期望 Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ ) Q_i(z^{(i)})=P(z^{(i)}|x^{(i)},\theta) Qi(z(i))=P(z(i)x(i),θ)
M步:最大化 θ = arg max ⁡ θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) log ⁡ P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) \theta=\argmax_\theta \sum_{i=1}^m\sum_{z^{(i)}}Q_i(z^{(i)})\log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})} θ=θargmaxi=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)

二、高斯混合模型

高斯混合模型(Gaussian Mixed Model,GMM)也是一种常见的聚类算法,与K均值算法类似,同样使用了EM算法进行迭代计算。高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布)的,当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。

  • ★★☆☆☆ 高斯混合模型的核心思想是什么?它是如何迭代计算的?

高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的。在该假设下,每个单独的分模型都是标准高斯模型,其均值 μ i μ_i μi和方差 Σ i Σ_i Σi是待估计的参数。此外,每个分模型都还有一个参数 π i π_i πi,可以理解为权重或生成数据的概率。高斯混合模型的公式为 p ( x ) = ∑ i = 1 K π i N ( x ∣ μ i , Σ i ) p(x)=\sum_{i=1}^K\pi_iN(x|\mu_i,\Sigma_i) p(x)=i=1KπiN(xμi,Σi)
高斯混合模型是一个生成式模型。我们并不能直接得到高斯混合模型的参数,而是观察到了一系列数据点,给出一个类别的数量 K K K后,希望求得最佳的 K K K个高斯分模型。因此,高斯混合模型的计算,便成了最佳的均值 μ μ μ,方差 Σ Σ Σ、权重 π π π的寻找,这类问题通常通过最大似然估计来求解。遗憾的是,此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。
可以用上一节已经介绍过的EM算法框架来求解该优化问题。EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。具体到高斯混合模型的求解,EM算法的迭代过程如下。
首先,初始随机选择各参数的值。然后,重复下述两步,直到收敛。

  • E步骤。根据当前的参数,计算每个点由某个分模型生成的概率。
  • M步骤。使用E步骤估计出的概率,来改进每个分模型的均值,方差和权重。

也就是说,我们并不知道最佳的K个高斯分布的各自3个参数,也不知道每个数据点究竟是哪个高斯分布生成的。所以每次循环时,先固定当前的高斯分布不变,获得每个数据点由各个高斯分布生成的概率。然后固定该生成概率不变,根据数据点和生成概率,获得一个组更佳的高斯分布。循环往复,直到参数的不再变化,或者变化非常小时,便得到了比较合理的一组高斯分布。
高斯混合模型与K均值算法的相同点是,它们都是可用于聚类的算法;都需要指定K值;都是使用EM算法来求解;都往往只能收敛于局部最优。而它相比于K均值算法的优点是,可以给出一个样本属于某类的概率是多少;不仅仅可以用于聚类,还可以用于概率密度的估计;并且可以用于生成新的样本点。

三、自组织映射神经网络

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

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

自组织映射神经网络本质上是一个两层的神经网络,包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。输出层中神经元的个数通常是聚类的个数,代表每一个需要聚成的类。训练时采用“竞争学习”的方式,每个输入的样例在输出层中找到一个和它最匹配的节点,称为激活节点,也叫winning neuron;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现。自组织映射神经网络的输出层节点是有拓扑关系的。这个拓扑关系依据需求确定,如果想要一维的模型,那么隐藏节点可以是“一维线阵”;如果想要二维的拓扑关系,那么就行成一个“二维平面阵”,。也有更高维度的拓扑关系的,比如“三维栅格阵”,但并不常见。
在这里插入图片描述
假设输入空间是 D D D维,输入模式为 x = { x i , i = 1 , ⋯   , D } x=\{x_i,i=1,\cdots,D\} x={ xi,i=1,,D}输入单元 i i i和神经元 j j j之间在计算层的连接权重为 w = { w i , j , j = 1 , ⋯   , N , i = 1 , ⋯   , D } w=\{w_{i,j},j=1,\cdots,N,i=1,\cdots,D\} w={ wi,j,j=1,,N,i=1,,D},其中 N N N是神经元的总数。自组织映射神经网络的自组织学习过程可以归纳为以下几个子过程。

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

在迭代结束之后,每个样本所激活的神经元就是它对应的类别。
自组织映射神经网络具有保序映射的特点,可以将任意维输入模式在输出层映射为一维或者二维图形,并保持拓扑结构不变。这种拓扑映射使得“输出层神经元的空间位置对应于输入空间的特定域或特征”。由其学习过程可以看出,每个学习权重更新的效果等同于将获胜的神经元及其邻近的权向量 w i w_i wi向输入向量 x x x移动,同时对该过程的迭代进行会使得网络的拓扑有序。
   \;
自组织映射神经网络与K均值算法的区别如下。

  • K均值算法需要事先定下类的个数,也就是K的值。而自组织映射神经网络则不用,隐藏层中的某些节点可以没有任何输入数据属于它,因此聚类结果的实际簇数可能会小于神经元的个数。而K均值算法受K值设定的影响要更大一些。
  • K均值算法为每个输入数据找到一个最相似的类后,只更新这个类的参数;自组织映射神经网络则会更新临近的节点。所以,K均值算法受noise data的影响比较大,而自组织映射神经网络的准确性可能会比K均值算法低(因为也更新了临近节点)。
  • 相比较而言,自组织映射神经网络的可视化比较好,而且具有优雅的拓扑关系图。
  • ★★★☆☆ 怎样设计自组织映射神经网络并设定网络训练参数?
  • 设定输出层神经元的数量

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

  • 设计输出层节点的排列

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

  • 初始化权值

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

  • 设计拓扑领域

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

  • 设计学习率

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

四、聚类算法的评估

  • ★★★☆☆ 以聚类问题为例,假设没有外部标签数据,如何评估两个聚类算法的优劣?
  • 以中心定义的数据簇:这类数据集合倾向于球形分布,通常中心被定义为质心,即此数据簇中所有点的平均值。集合中的数据到中心的距离相比到其他簇中心的距离更近。
  • 以密度定义的数据簇:这类数据集合呈现和周围数据簇明显不同的密度,或稠密或稀疏。当数据簇不规则或互相盘绕,并且有噪声和离群点时,常常使用基于密度的簇定义。
  • 以连通定义的数据簇:这类数据集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构。该定义对不规则形状或者缠绕的数据簇有效。
  • 以概念定义的数据簇:这类数据集合中的所有数据点具有某种共同性质。

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

  • 估计聚类趋势。(霍普金斯统计量)
    我们可以观察聚类误差是否随聚类类别数量的增加而单调变化,如果数据是基本随机的,即不存在非随机簇结构,那么聚类误差随聚类类别数量增加而变化的幅度应该较不显著,并且也找不到一个合适的K对应数据的真实簇数。
  • 判定数据簇数。(手肘法和Gap Statistic方法)
    确定聚类趋势之后,我们需要找到与真实数据分布最为吻合的簇数,据此判定聚类结果的质量。用于评估的最佳数据簇数可能与程序输出的簇数是不同的。例如,有些聚类算法可以自动地确定数据的簇数,但可能与我们通过其他方法确定的最优数据簇数有所差别。
  • 测定聚类质量。(轮廓系数、均方根标准偏差、R方(R-Square)、改进的Hubert Γ Γ Γ统计)
    给定预设的簇数,不同的聚类算法将输出不同的结果,如何判定哪个聚类结果的质量更高呢?在无监督的情况下,我们可以通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果。定义评估指标可以展现面试者实际解决和分析问题的能力。

下一章传送门:《百面机器学习》读书笔记(六)-概率图模型

猜你喜欢

转载自blog.csdn.net/qq_41485273/article/details/113666181