百面机器学习(5)——非监督学习

目录

K均值聚类(K均值聚类算法ISODATA算法,EM算法)

高斯混合模型(GMM)

自组织映射神经网络(SOM)

聚类算法的评估


K均值聚类(K均值聚类算法,ISODATA算法,EM算法)

1. 简述K均值算法的具体步骤(2)

1)数据预处理,如归一化,离群点处理等

2)随机选择K个簇中心

3)定义代价函数:J=所有样本到其所分类别的距离平方和最小

4)迭代如下过程知道代价函数J收敛。

  • 对每一个样本,分配到距离最近的簇
  • 对每一个簇K,重新计算该簇的中心

 

2. K均值算法的优缺点是什么?如何对其进行调优?(3)

 

缺点:受初值和离群点的影响每次的结果不稳定,通常不是全局最优而是局部最优解,无法很好的地解决数据簇分布差别较大的情况(比如一类是另一类样本数量阿100倍)

优点:对于大数据集,K均值聚类算法相对是可伸缩和高效的,计算复杂度是O(NKt)接近于线性,N是数据对象数目,K是聚类的簇数,t是迭代的轮数。尽管算法是以局部最优结束,但是一般情况下达到局部最优已经可以满足聚类的需求。

 

调优的几个角度:

1)数据归一化和离群点处理

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

 

2)合理选择K值

K值的选择是K均值聚类最大的问题之-,这也是 K均值聚类算法的主要缺点。 实际上,我们希望能够找到一些可行的办法来弥补这一缺点,或者说找到 K值的合理估计方法。 但是,K值的选择一般基于经验和多次实验结果。例如采用手肘法,我们可以尝试不同的K值,并将不同 K值所对应的损失函数画成折线,横轴为K的取值,纵轴为误差平方和所定义的损失函数,如下图所示。K=3时存在一个拐点,3之前曲线急速下降,之后导致误差曲线趋于平稳。手肘法认为拐点就是 K的最佳值。

百面机器学习(5)——非监督学习

 

手肘法是一个经验方法,缺点就是不够自动化,因此研究员们又提出了-些更先进的方法,其中包括比较有名的 Gap Statistic 万法。Gap Statistic方法的优点是不再需要肉眼判断,而只需要找到最大的 Gap statistic 所对应的 K 即可,因此该方法也适用于批量化作业。

在这里我们继续使用上面的损失函数,当分为K簇时,对应的损失函数记为Dk。 Gap Statistic 定义为Gap(K)=E(logDk)一logDk。其中 E(logDk)是 logDk的期望,一般通过蒙特卡洛模拟产生。我们在样本所在的区域内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本做 K 均值,得到一个Dk,重复多次就可以计算出 E(logDk)的近似值。 那么 Gap(K) 有什么物理含义呢?它可以视为随机样本的损失与实际样本的损失之差。 试想实际样本对应的最佳簇数为K,那么实际样本的损失应该相对较小,随机样本损失与实际样本损失之差也相应地达到最小值,从而 Gap(K) 取得最大值所对应的K值就是最佳的簇数。Gap(K)是一个先增后减的函数。 根据定义计算 K =l,2, ... ,9 所对应的 Gap Statistic,如下图所示。 由此可见,当 K=3 时, Gap(K) 取值最大,所以最佳的簇数是 K=3

百面机器学习(5)——非监督学习

下图是一个关于Wk, log Wk, E(logWk),Gap(K)的示意图, Wk就是上面所说的Dk。

百面机器学习(5)——非监督学习 百面机器学习(5)——非监督学习

 

3)采用核函数

采用核函数是另一种可以尝试的改进方向,传统的欧式距离度量方式使得 K 均值本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化,这时算法又

称为核 K 均值算法,是核聚类方法的一种。 核聚类方法的主要思想是通过一个非线性映射, 将输入空间中的数据点映射到高维的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。

 

3. 针对K均值算法的缺点,有哪些改进的模型?(3)

缺点总结:

1)需要人工预先确定初始K值,且该值和真实的数据分布未必吻合

2)K均值智能收敛到局部最优,效果受到初始值很大

3)易受到噪点的影响

4)样本点只能被划分到单一的类中

K-means ++算法(K个聚类点的改进)

原始 K 均值算法最开始随机选取数据集中 K个点作为聚类中心,而 K-means++按照如下的思想选取 K个聚类中心。假设已经选取了 n 个初始聚类中心( O<n<K ),则在选取第 n+l 个聚类中心时,距离当前 n 个聚类中心越远的点会有更高的概率被选为第 n+I 个聚类中心。 在选取第一个聚类中心( n= 1 )时同样通过随机的方法。这样选择也符合我们的直觉:聚类中心的当然时互相距离越远越好。后面k-means++的执行和k-means相同。

ISODATA算法(聚类数目K的优化)

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

一个参考的聚类数量K0,还需要制定 3 个阈值。

1)预期聚类中心数K0,最终输出的聚类中心数常见范围是K0的一半,到两倍K0.

2) 每个类别所要求的最少样本数目Nmin。如果分裂后导致某个子类别所包含的样本数目小于该阈值就不会对该类别进行分裂操作。

3)最大方差Sigma。用于控制某个类别中样本的分散程度。当样本分散程度超过这个阈值,且分裂后满足1),进行分裂操作。

4)两个聚类中心之间所允许最小距离Dmin。如果两个类靠的很近(指两个类对应聚类中心之间的距离非常小),小于该阈值时,则对这两个类进行合并操作。

如果希望样本不划分到单一的类中,可以使用模糊 C 均值或者高斯混合模型。

 

4. 证明K均值算法的收敛性。

EM算法迭代

 

高斯混合模型(GMM)

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

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

高斯混合模型的核心思想是,假设数据可以看作从多个高斯分布中生成出来的。在该假设下,每个单独的分模型都是标准高斯模型,其均值 µ和方差Z是待估计的参数。 此外,每个分模型都还有一个参数Πi,可以理解为权重或生成数据的概率。高斯混合模型的公式为

百面机器学习(5)——非监督学习

高斯混合模型是一个生成式模型。通常我们并不能直接得到高斯混合模型的参数,而是观察到了一系列数据点,给出一个类别的数量K后,希望求得最佳的 K个高斯分布模型。 因此,高斯混合模型的计算,便成了最佳的均值μ,方差 Z、权重 π 的寻找。这类问题通常通过最大似然估计求解,然而此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。

在这种情况下,可以利用EM算法框架来求解该优化问题。EM 算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。EM算法的迭代过程如下:

首先,初始随机选择各参数的值。然后,重复下述两步,直到收敛。

1 ) E 步骤。 根据当前的参数,计算每个点由某个分模型生成的概率。

2 ) M 步骤。使用 E步骤估计出的概率,来改进每个分模型的均值,方差和权重。

 

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

 

自组织映射神经网络(SOM)

自组织映射神经网络( Self-Organizing Map , SOM )是无监督学习方法中一类重要方法,可以用作聚类、高维可视化、数据压缩、特征提取等多种用途。自组织映射神经网络融入了大量人脑神经元的信号处理机制,高着独特的结构特点。

1. 自组织映射神经网络是如何工作的?它于K均值算法有何区别?(3)

这篇博文有一个SOM聚类的例子帮助理解是如何工作的:https://blog.****.net/xbinworld/article/details/50818803

 

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

1)设定输出层神经元的数量

2)设计输出层节点的排列

3) 初始化权值

4)设计拓扑领域

5)设计学习率

 

聚类算法的评估

1. 以聚类算法为例,假设没有外部标签数据,如何评估两个聚类算法的优劣?(3)

数据聚类依赖实际需求,也依赖于数据的特征度量以及评估数据相似性的方法。为了评估不同聚类算法的性能优劣,我们需要了解厂家按的数据簇的特点。

  • 以中心定义的数据簇:这类数据集和倾向于球形分布,通常中心被定义为质心,即此数据簇中所有点的平均值。
  • 以密度定义的数据簇:这类数据集合呈现和周围数据簇明显不同的密度,或稠密或稀疏。
  • 以连通定义的数据簇:这类数据集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构。
  • 以概念定义的数据簇:这类数据集合中的所有数据点具有某种共同性质。

聚类评估的任务是估计在数据集上进行聚类的可行性,以及聚类方法产生结果的质量。这一过程又可以分为三个子任务。

1)估计聚类趋势

2)判定数据簇数

3)测定聚类质量。

在无监督的情况下,我们可以通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果。此外,为了更加合理地评估不同聚类算法的性能,通常还需要人为地构造不同类型的数据集,以观察聚类算法在这些数据集上的效果,几个常见的例子如下图所示。

百面机器学习(5)——非监督学习