“非监督学习”面试知识点总结-K均值+高斯混合模型+自组织映射神经网络+聚类算法评估-百面机器学习系列5

提示:在准备机器学习算法工程师面试的过程中,我主要参考《百面机器学习》去巩固自己的基础知识。本系列博客将以该书为主题,并以八股文的方式去概述整本书的内容,以尽量减少读者们的阅读作量,并方便读者可以随时随地的记忆背诵。
建议:我还是认为读者们可以提前买一本《百面机器学习》,从前到后完全看一遍,然后再看我的博客去记忆背诵会更好些哈。

文章目录

    • 问题1:K均值聚类
    • 问题2:高斯混合模型
    • 问题3:自组织映射神经网络
    • 问题4:聚类算法评估
    • 问题5:补充知识点汇总

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

问题1:K均值聚类

1.分类问题属于监督学习的范畴,而 聚类属于非监督学习K均值聚类是最基础和最常用的聚类算法。它的基本思想是 ,通过迭代方式寻找K个蔟的一种划分方案,使得聚类结果对应的代价函数最小。特别地,代价函数可以定义为各个样本距离所属蔟中心点的误差平方和。
2.K均值算法的具体步骤: K均值聚类的核心目标是将给定的数据集划分成K个蔟,并给出每个数据对应的簇中心点。具体步骤如下:
1)数据预处理,如归一化、离群点处理等。
2)随机选取K个蔟中心
3)定义代价函数
4)令t=0,1,2……. 为迭代步数,重复下面过程直到代价函数收敛(对于每个样本将其分配到距离最近的蔟;对每类蔟重新计算该类蔟的中心(根据每个蔟中的所有点的平均值计算新的中心点位置))。
K均值算法在迭代时,假设当前J没有达到最小值,那么首先固定簇中心u,调整每个样例x所属的类别c来让J减小;然后固定c,调整簇中心u使J减小。这两个过程交替循环,J单调递减并逐渐收敛。
3.K均值算法的优缺点是什么?如何对其进行调优?
1)K均值算法的缺点, 例如受初值和离群点的影响每次的结果不稳定、结果通常是局部最优解、无法很好地解决数据蔟分类差别比较大的情况(比如一类是另一类样本数量的100倍)。 优点:K均值聚类算法对于大数据集是可相对高效的,他的计算复杂度是O(NKt)接近线性,其中N是数据对象的数目,K是聚类的蔟数,t是迭代的轮数。
2)K均值算法的调优: 数据归一化和离群点处理(未做归一化处理和统一单位的数据是无法直接参与运算和比较的);选择合理的K值,K值的选择也是该算法的缺点之一。 K值选择一般要基于经验和多次实验结果,如法一:手肘法(其拐点的K值被认为是最佳取值),但手肘法不够自动化;法二:Gap Statistic方法,不需要肉眼判断,只需要找到最大Gap Statistic对应的K值即可,该方法适合批量作业。Gap Statistic方法的指标是计算Gap(K),其物理含义为随机样本的损失与实际样本的损失之差;法三:采用核函数。传统的欧式距离度量方法,使得K均值算法本质上假设了各个数据蔟的数据具有一样的先验概率,并呈现球形或则高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化,是核聚类方法的一种。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高维的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。
4.针对K均值算法的缺点,有哪些改进的模型?
K均值算法的主要缺点: 需要人工预先确定初始K值,且该值和真实的数据分布未必吻合;K均值只能收敛到局部最优,效果受到初始值很大影响;易受噪声点的影响;样本点只能被划分到单一的类中。
解决办法: 1)K-means++算法和K-means算法的不同点在于,K-means的聚类中心初始值是随机选择的;而K-means++算法,假设已经选取了n个初始聚类中心,则在选取第n+1个聚类中心时,距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心,其中在选择第一个聚类中心点也是按照随机的方式。接下来的步骤和K-means算法一样。
2)ISODATA算法全称为迭代自组织数据分析方法。 当K值的大小不确定时,可以使用ISODATA算法。思想:当属于某类别的样本个数过少时,把该类别去除;当属于某类别的样本数过多、分散程度较大时,把该类别分为两个子类别。ISODATA算法在K均值算法的基础之上增加了两个操作,一是分裂操作,对应着增加聚类中心数;二是合并操作,对应着减少聚类中心数。
该算法缺点是,需要指定的参数比较多,不仅需要一个参考的聚类数量K,还需要制定3个阈值。下面为该算法的各个输入参数: 操作一:预期的聚类中心数目K。具体地,最终输出的聚类中心数目常见的范围是从K的一半到两倍的K;操作二:每个类所要求的最少样本数目。如果分裂后会导致某个子类别所包含的样本数目小于该阈值,就不会对该类别进行分裂操作;操作三:最大方差Sigma。用于控制某个类别中样本的分散程度。当样本的分散程度超过这个阈值时,且分裂后满足操作二,进行分裂操作;操作四:两个聚类中心之间所允许最小距离。如果两个类靠得非常近,其间距离小于该阈值时,则对这两个类进行合并操作。
5.K均值聚类的迭代算法实际上是一种最大期望算法,即EM算法。EM算法解决的是在概率模型中含有无法观测的隐含变量情况下的参数估计问题。

问题2:高斯混合模型

1.高斯混合模型是一种聚类算法, 它假设每个簇的数据都是符合高斯分布的,当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。 高斯混合模型,即用多个高斯分布函数的线性组合来对数据分布进行拟合。理论上,高斯混合模型可以拟合出任意类型的分布。
2.高斯混合模型是一个生成式模型,其核心思想是, 假设数据可以看作从多个高斯分布中生成出来。在该假设下,每个单独的分模型都是标准高斯模型,其均值和方差是待估计参数。此外,每个分模型都还有一个参数,可以理解为权重或生成数据的概率。
3.高斯混合模型的计算,便成了最佳的均值、方差、权重的寻找,这类问题通常使用极大似然估计来求解。 遗憾的是,此问题中直接使用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。这种情况可以使用EM算法框架求解该优化问题。EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。(详细求解步骤看课本)
4.高斯混合模型与K均值算法的相同点是, 它们都是可用于聚类的算法;都需要指定K值;都是用EM算法来求解 ;都往往只能收敛于局部最优。 而它相比于K均值算法的优点是, 可以给出一个样本属于某类的概率是多少;不仅仅可以用于聚类,还可以用于概率密度估计;并且可以用于生成新的样本点。

问题3:自组织映射神经网络

1.自组织映射神经网络(SOM) 是无监督学习方法中一类重要的方法,可以用于聚类、高维可视化、数据压缩、特征提取等多种用途。该方法融入了大量人脑神经元的信号处理机制,有独特的结构特点。
2.自组织映射神经网络本质 上是一个两层的神经网络,包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜,输出层模拟做出响应的大脑皮层。输出层中神经元的个数通常是聚类的个数。训练时采用竞争学习的方式,每个输入样例在输出层中找到一个和他匹配的节点,称为激活点;紧接着用随机梯度下降法更新激活节点的参数;同时,和激活节点临近的点也根据他们距离激活结点的远近而适应性的跟新参数。这种竞争可以通过神经元之间的横向抑制连接(负反馈路径)来实现。
SMO网络的输出层节点是有拓扑关系的,如果想要得到一位模型,那么隐藏节点可以是“一维线阵”;如果想要得到二维拓扑关系,那么形成一个“二维平面阵”;对于高维拓扑关系的,需要形成“三维栅格阵”。
3.SMO的自组织学习过程可以归纳为几个子过程: 1)初始化。所有的连接权重都用最小的随机值初始化。2)竞争。神经元计算每一个输入模式各自的判别函数值,并宣布具有最小判别函数值的特定神经元为胜利者。3)合作。获胜神经元决定了兴奋神经元拓扑邻域的空间位置。4)适应。适当调整相关兴奋神经元的连接权重,使得获胜神经元对相似输入模式的后续应用的相应增强。5)迭代。继续回到步骤2),直到特征映射趋于稳定。
SMO具有保序映射的特点, 可以将任意输入模式在输出层映射为一维或二维图形,并保持拓扑结构不变。这种拓扑映射使得“输出神经元的空间位置对应于输出空间的特定域或特征”。由其学习过程可以看出,每个学习权重更新的效果等同于将获胜的神经元及其邻近的权向量像输入向量移动,同时对该过程的迭代进行会使得网络的拓扑有序。
以获胜神经元为中心设定一个邻域或半径,该半径圈定的范围称为 “优胜邻域” ,优胜邻域开始设置的很大,但其大小随着训练次数的增加不断收缩,最终收缩到半径为零。
在SMO中,获胜的神经元将使得相关的各权重像更加有利他竟争的方向调整,即以获胜神经元为中心,对邻近的神经元表现出 兴奋性侧反馈 ,而对远邻的神经元表现出 抑制性侧反馈 ,近邻者互相激励,远邻者相互抑制。近邻和远邻均有一定的范围,对更远邻的神经元表现弱激励的作用。
4.自组织映射神经网络与K均值算法的区别: 1)K均值算法需要事先定下类的个数,也就是K的值。而SMO不用,隐藏层中的某些节点可以没有任何输入数据属于它,因此聚类结果的实际簇数可能会小于神经元个数。而K均值算法受K值影响比较大。2)K均值算法为每个输入数据找到一个相似的类后,只更新这个类的参数;SMO则会更新邻近的节点。所以,相较于SMO算法,K均值算法受噪音点的影响比较大。3)SMO的可视化比较好,而且具有优雅的拓扑关系图。
5.怎样设计SMO,并设定网络训练参数?
1)设定输出层神经元的数量:输出层神经元的数量和训练集样本的类别数相关。若不清楚类别数,则尽可能地设定较多的节点数,以便较好地映射样本的拓扑结构,如果分类过细再酌情减少输出节点。这样可能会带来少量从未更新过的权值的“死节点”,但一般可通过重新初始化权值来解决。
2)设计输出节点的排列:对于一般的分类问题,一个输出节点能代表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或则旅行路径类问题,二维平面则比较直观。
3)初始化权值:可以随机初始化,但尽量使权值的初始位置与输入样本的大概率分布区域充分重合,避免出现大量的初始“死节点”。一种简单易行的方法是从训练集中随机抽取m个输入样本作为初始权值。
4)设计拓扑领域:拓扑领域的设计原则是使领域不断缩小,这样输出平面上相邻神经元对应的权向量之间既有区别又有相当的相似性,从而保证当个获胜节点对某一类模式产生最大响应时,其领域节点也能产生较大响应。领域的形状可以是正方形、六边形或则菱形。优势领域的大小用邻域的半径表示,通常凭借经验来选择。
5)设计学习率:学习率是一个递减函数,可以结合拓扑邻域的更新一起考虑,也可分开考虑。在训练开始时,学习率可以选取较大的值,之后以较快的速度下降,这样有利于很快地捕捉到输入向量的大致结构,然后学习率在较小的值上缓降至0值,这样可以精细地调整权值使之符合输入空间的样本分布结构。

问题4:聚类算法评估

1.为了评估不同聚类算法的性能,需要了解常见数据簇的特点:
1)以中心定义的数据簇:这类数据集合倾向于球形分布,通常中心被定义为质心,即此数据簇中所有点的平均值。集合中的数据到中心的距离相比到其他簇中心的距离更近。
2)以密度定义的数据簇:这类数据集合呈现和周围数据簇明显不同的密度。当数据簇不规则或相互盘绕,并且有噪声或离群点时,常常使用基于密度的簇定义。
3)以连通定义的数据簇:这类数据集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构。该定义对不规则形状或缠绕的数据簇有效。
4)以概念定义的数据簇:这类数据集合中的所有数据点具有某种共同性质。
2.聚类评估的任务是估计在数据集上进行聚类的可行性,以及聚类方法产生结果的质量。这一过程分为三个子任务:
1)估计聚类趋势:这一步骤是检测数据分布中是否存在非随机的簇结构。如果数据是基本随机的,那么聚类的结果也是毫无意义的。判断方法:法一:如果数据是基本随机的,那么随着聚类类别数量的增加,聚类误差变化的幅度应该较不显著。法二:应用“霍普金斯统计量”来判断数据在空间上的随机性。
2)判定数据簇数:常用方法:手肘法;Gap Statistic方法
3)测定聚类质量:通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果,常用的指标有“轮廓系数”、“均方根标准偏差”、“R方”等。
3.为了更加合理地评估不同聚类算法的性能,通常还需要人为地构造不同类型的数据集,以观察聚类算法在这些数据集上的效果。
通过构建一些数据集,评估的聚类算法性能包括:观察聚类误差是否随聚类类别数量的增加而单调变化;观察聚类误差对实际聚类结果的影响;观察近邻数据簇的聚类准确性;观察数据密度具有较大差异的数据簇的聚类效果;样本数量具有较大差异的数据簇的聚类效果。

问题5:补充知识点汇总

1.KNN和K-Means的区别?
1)K近邻法(KNN)是一种基本的分类与回归方法。K-Means是一种简单而有效的聚类方法。 KNN算法思路:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c
2)二者的相同点;k的选择类似;思路类似:根据最近的样本来判断某个样本的属性。
3)二者的不同点:应用场景不同:前者是分类或者回归问题,后者是聚类问题;算法复杂度:前者O(n^2),后者O(kmn);(k是聚类类别数,m是聚类次数);稳定性:前者稳定,后者不稳定。

你可能感兴趣的:(机器学习面试知识点系列,聚类,算法)