相比于监督学习, 非监督学习的输入数据没有标签信息, 需要通过算法模型来挖掘数据内在的结构和模式。 非监督学习主要包含两大类学习方法: 数据聚类和特征变量关联。
1 K均值聚类及优化及改进模型
1.1 K-means
聚类是在事先并不知道任何样本类别标签的情况下, 通过数据之间的内在关系把样本划分为若干类别, 使得同类别样本之间的相似度高, 不同类别之间的样本相似度低 。
K均值聚类(KMeans Clustering) 的基本思想是, 通过迭代方式寻找K个簇(Cluster) 的一种划分方案, 使得聚类结果对应的代价函数最小。 特别地, 代价函数可以定义为各个样本距离所属簇中心点的误差平方和 :
xi代表第i个样本, ci是xi所属于的簇, ci代表簇对应的中心点, M是样本总数。
K均值算法在迭代时, 假设当前 J 没有达到最小值, 那么首先固定簇中心{k},调整每个样例xi所属的类别ci来让J函数减少; 然后固定{ci}, 调整簇中心{k}使J减小。 这两个过程交替循环, J单调递减: 当J递减到最小值时, {k}和{ci}也同时收敛。
1.2 调优
K均值算法的调优一般可以从以下几个角度出发:
(1) 数据归一化和离群点处理。
(2) 合理选择K值。手肘法、Gap Statistic方法。
(3) 采用核函数。核聚类方法的主要思想是通过一个非线性映射, 将输入空间中的数据点映射到高位的特征空间中, 并在新的特征空间中进行聚类。 非线性映射增加了数据点线性可分的概率, 从而在经典的聚类算法失效的情况下, 通过引入核函数可以达到更为准确的聚类结果。
1.3 改进模型
K均值算法的主要缺点如下。
(1) 需要人工服务器托管网预先确定初始K值, 且该值和真实的数据分布未必吻合。
(2) K均值只能收敛到局部最优, 效果受到初始值很大。
(3) 易受到噪点的影响
1.3.1 K-means++
原始K均值算法最开始随机选取数据集中K个点作为聚类中心, 而K-means++按照如下的思想选取K个聚类中心。 假设已经选取了n个初始聚类中心( 0
2 ISODATA算法
当K值的大小不确定时, 可以使用ISODATA算法。 ISODATA的全称是迭代自组织数据分析法。当属于某个类别的样本数过少时, 把该类别去除; 当属于某个类别的样本数过多、 分散程度较大时, 把该类别分为两个子类别。 ISODATA算法在K均值算法的基础之上增加了两个操作, 一是分裂操作, 对应着增加聚类中心数; 二是合并操作, 对应着减少聚类中心数。 ISODATA算法是一个比较常见的算法, 其缺点是需要指定的参数比较多, 不仅仅需要一个参考的聚类数量K
, 还需要制定3个阈值。
下面介绍ISODATA算法的各个输入参数。
( 1) 预期的聚类中心数目K
在ISODATA运行过程中聚类中心数可以变化, K是一个用户指定的参考值, 该算法的聚类中心数目变动范围也由其决定。具体地, 最终输出的聚类中心数目常见范围是从Ko的一半, 到两倍Ko。
( 2) 每个类所要求的最少样本数目Nmin。
如果分裂后会导致某个子类别所包含样本数目小于该阈值, 就不会对该类别进行分裂操作。
( 3) 最大方差Sigma。
用于控制某个类别中样本的分散程度。 当样本的分散程度超过这个阈值时, 且分裂后满足( 1) , 进行分裂操作。
( 4) 两个聚类中心之间所允许最小距离Dmin。
如果两个类靠得非常近( 即这两个类别对应聚类中心之间的距离非常小) , 小于该阈值时, 则对这两个类进行合并操作。
3 高斯混合模型(GMM)
高斯混合模型假设每个簇的数据都是符合高斯分布(又叫服务器托管网正态分布) 的, 当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。
高斯混合模型的核心思想是, 假设数据可以看作从多个高斯分布中生成出来的。 在该假设下, 每个单独的分模型都是标准高斯模型, 其均值i和方差i是待估计的参数。 此外, 每个分模型都还有一个参数i, 可以理解为权重或生成数据的概率。 高斯混合模型的公式为:
高斯混合模型是一个生成式模型。 可以这样理解数据的生成过程, 假设一个
最简单的情况, 即只有两个一维标准高斯分布的分模型N(0,1)和N(5,1), 其权重分别为0.7和0.3。 那么, 在生成第一个数据点时, 先按照权重的比例, 随机选择一个分布, 比如选择第一个高斯分布, 接着从N(0,1)中生成一个点, 如−0.5, 便是第一个数据点。 在生成第二个数据点时, 随机选择到第二个高斯分布N(5,1), 生成了第二个点4.7。 如此循环执行, 便生成出了所有的数据点。
高斯混合模型的计算, 便成了最佳的均值, 方差、 权重的寻找,EM算法框架来求解该优化问题。EM算法是在最大化目标函数时, 先固定一个变量使整体函数变为凸优化函数, 求导得到最值, 然后利用最优参数更新被固定的变量, 进入下一个循环。 具体到高斯混合模型的求解, EM算法的迭代过程如下:
首先, 初始随机选择各参数的值。 然后, 重复下述两步, 直到收敛。
(1) E步骤。 根据当前的参数, 计算每个点由某个分模型生成的概率。
(2) M步骤。 使用E步骤估计出的概率, 来改进每个分模型的均值, 方差和权重。
算法 | 相同 | 不同 |
---|---|---|
K均值 | 可用于聚类;需要指定K值;使用EM算法;收敛于局部最优 | |
高斯混合模型 | 可用于聚类;需要指定K值;使用EM算法;收敛于局部最优 | 可以给出一个样本属于某类的概率是多少; 可以用于概率密度的估计;可以用于生成新的样本点 |
3 自组织映射神经网络(SOM)
无监督学习方法的一种,可以用作聚类、 高维可视化、 数据压缩、 特征提取等多种用途。
自组织映射神经网络本质上是一个两层的神经网络, 包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜, 输出层模拟做出响应的大脑皮层。 输出层中神经元的个数通常是聚类的个数, 代表每一个需要聚成的类。训练时采用“竞争学习”的方式, 每个输入的样例在输出层中找到一个和它最匹配
的节点, 称为激活节点, 也叫winning neuron; 紧接着用随机梯度下降法更新激活节点的参数; 同时, 和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。
4 聚类算法的评估
4.1数据簇
为了评估不同聚类算法的性能优劣, 我们需要了解常见的数据簇的特点。
数据簇 | 数据分布 | 数据特点 |
---|---|---|
以中心定义 | 集合中数据倾向于球形分布 | 集合中的数据到中心的距离相比到其他簇中心的距离更近 |
以密度定义 | 集合中数据呈现和周围数据簇明显不同的密度, 或稠密或稀疏 | 当数据簇不规则或互相盘绕, 并且有噪声和离群点时, 常常使用基于密度的簇定义 |
以连通定义 | 集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构 | 对不规则形状或者缠绕的数据簇有效 |
以概念定义 | 集合中的所有数据点具有某种共同性质 |
4.2 评估任务
4.2.1 估计聚类趋势
检测数据分布中是否存在非随机的簇结构。 如果数据是基本随机的, 那么聚类的结果也是毫无意义的。
应用霍普金斯统计量(Hopkins Statistic) 来判断数据在空间上的随机性[7]。 首先, 从所有样本中随机找n个点, 记为p1,p2,…,pn, 对其中的每一个点pi, 都在样本空间中找到一个离它最近的点并计算它们之间的距离xi, 从而得到距离向量x1,x2,…,xn; 然后, 从样本的可能取值范围内随机生成n个点, 记为q1,q2,…,qn, 对每个随机生成的点, 找到一个离它最近的样本点并计算它们之间的距离, 得到y1,y2,…,yn。 霍普金斯统计量H可以表示为:
如果样本接近随机分布, 那么分母的两个取值应该比较接近, 即H的值接近于0.5; 如果聚类趋势明显, 则随机生成的样本点距离应该远大于实际样本点的距离, 即 H值接近于1。
4.2.2 判定数据簇数
数据簇数的判定方法有很多, 例如手肘法和Gap Statistic方法。 需要说明的是, 用于评估的最佳数据簇数可能与程序输出的簇数是不同的。例如, 有些聚类算法可以自动地确定数据的簇数, 但可能与我们通过其他方法确定的最优数据簇数有所差别
4.2.3测定聚类质量
给定预设的簇数, 不同的聚类算法将输出不同的结果, 如何判定哪个聚类结果的质量更高呢? 在无监督的情况下, 我们可以通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果。
度量指标 | 定义 | 特点 |
---|---|---|
轮廓系数 | a是点p与同一簇中的其他点p’之间的平均距离; b是点p与另一个不同簇中的点之间的最小平均距离(如果有n个其他簇, 则只计算和点p最接近的一簇中的点与该点的平均距离) | a反映的是p所属簇中数据的紧凑程度, b反映的是该簇与其他临近簇的分离程度。 显然, b越大, a越小, 对应的聚类质量越好 |
均方根标准偏差 RMSSTD | 其中Ci代表第i个簇, ci是该簇的中心, x∈ Ci代表属于第i个簇的一个样本点, ni为第i个簇的样本数量, P为样本点对应的向量维数。 | RMSSTD可以看作是经过归一化的标准差 |
R方(R-Square) | D代表整个数据集, c代表数据集D的中心点 | RS代表了聚类之后的结果与聚类之前相比, 对应的平方误差和指标的改进幅度 |
改进的Hubert统计 | 值越大说明聚类的结果与样本的原始距离越吻合, 也就是聚类质量越高 |
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
一、查看交换机基本信息 1、查看交换机的固件版本 ——————————————————————– SNS:admin> version Kernel: 2.6.34…