(一)聚类分析概述
聚类分析(Clustering Analysis),又称数据切割,是一种探查数据结构的工具。聚类分析源于数学、计算机科学和经济学等多个领域,是一种重要的人类行为。聚类分析广泛应用于目标客户推荐、市场划分、生物技术、人口统计学和教学辅导等多个领域,大致可以分为数据精简、假设推断和预测等几类应用。
聚类分析在相似的基础上分析数据进行分类,然后通过单独分析每个类别中的数据,获取数据中隐藏的知识和信息。然而,在大多数情况下,无法提前对数据类别进行定义,需要应用聚类分析算法对数据集进行分类。
聚类分析的定义如下:
设数据集D={d1,d2,…,dj,…,dm},其中dj(1≤i≤m)是数据对象,聚类分析就是根据数据对象之间的相似度进行划分,将数据对象划分为k个群组:C1,C2,…,Cj,…,Ck。由于应用环境的不同,聚类分析的方式和步骤也不完全一样。但是,对于常见的数据分析应用而言,其分析过程可以分为四个步骤,如图2-8所示。
图2-8 聚类分析过程
第一步,提取待分析数据中需要分析的特征属性,选择合适的方法进行规范化处理并存储;第二步,根据特征属性选择一个合适的相似度计算方法;第三步,选择合适的聚类分析算法,将数据划分至多个群组;第四步,对算法的运行结果进行评估,对数据进行解释和分析。其中,相似度是聚类分析的重要参数,其计算方法的选择是聚类分析的重要步骤。主流的相似度计算方法都是基于距离公式计算数据对象的空间距离作为对象之间的相似度[33]。常用的计算方法有欧氏距离和绝对距离。
(二)K-means聚类算法
“K-means”术语最早由James Mac Queen于1967年提出,最早的标准K-means算法是由Stuart Lloyd于1957年提出并应用于脉码调制中,因此K-means算法常被称为Lloyd算法。K-means算法的目标是将待分区的数据对象,划分到k个簇中,这些数据对象和其所属簇的中心的距离最近。虽然,聚类算法在计算时比较难于计算,但是K-means算法是一个高效的启发式算法,通常采用快速收敛得到局部最优值。
K-means算法的标准定义如下:
给定一个数据对象集合X={x1,x2,…,xn},其中每个对象x是一个d纬向量。K-means算法的目标是根据数据对象的特征将n个对象划分为k个群组,其中k≤n,使得各个群组内部的均方误差总和最小,记为V。假设存在k个群组Si,其中i=1,2,…,k,是群组Si内所有元素xi的中心点。则V的计算公式为
具体而言,K-means算法的详细步骤如下:
输入:是群组个数k和n个数对象
输出:数据对象集合的k个划分
随机选择k个数据对象作为初始的群组中心点,并进行初始化;
遍历数据对象集合,计算数据对象和k个群组中心点的距离,将数据对象划分到距离最小的中心点所属的群组中;
重新计算群组中心点,通过计算群组所含数据对象的平均值,得到中心点;
重复计算步骤(2)和(3),直至得到的新的群组中心点和旧的中心点的差值低于一个阈值,迭代计算结束。
聚类分析是机器学习中重要的研究方向和领域,K-means算法是聚类分析中最重要的算法之一。目前,K-means算法是人们在科研生产应用中最常用的机器学习算法,主要是利用K-means算法产生一些不相交的对象簇,然后再对这些对象簇中的数据进行下一步处理,比如进行关联规则挖掘和知识推荐等。
在实际使用中,K-means算法具有以下优点:
算法比较简单,容易理解和实现;
算法的时间和空间复杂度不高;
算法能适应多种应用环境,具有一定的扩充性;
算法能够产生更紧密的簇,特别是球状簇。
相应地,人们在使用K-means算法时,也发现K-means算法具有以下缺点:
K-means算法中的群组数目K值是使用者预先设定的,这对使用者提出了较高的要求,经验不足的使用者设定的K值的准确性也存在一定的问题;
包含较多孤立点的数据将会增加K-means算法的迭代次数,提高算法的复杂度,降低算法的准确性;
初始中心点的选择将会影响K-means算法的迭代次数以及算法能否取得全局最优解。
3.K-means算法的数据预处理
在电子商务、医学、物流和其他各个领域中,工程师和学者们使用了各种各样的机器学习算法对数据进行分析和挖掘,提取隐藏在数据中的知识。例如,医学领域的学者会对数据库中的数据进行分析用于推测用户的疾病类型。机器学习中使用的原始数据来源于实际应用场景,存在各类难以避免的缺陷。例如,原始数据中总会存在大量的空缺值,甚至错误的记录;同时,原始数据总会包含噪声数据和冗余数据。低质量的数据将导致低质量的挖掘结果,这些问题对于机器学习算法构成了极大的挑战,也会影响机器学习算法的有效性和运行时间。从原始数据到待分析数据的过程中,对数据进行的操作称为数据预处理。数据预处理是机器学习过程中的一个重要步骤,尤其是对包含噪声和冗余,甚至不一致的数据进行机器学习时,更需要对数据进行预处理,以提高数据的质量,并最终达到提高机器学习所获取知识的质量的目的。
数据预处理主要包括以下三个步骤:数据清理、数据集成与变换和数据归约。以下分别对三个步骤进行详细说明。
(1)数据清理
数据清理主要解决空缺值、错误数据和噪声等问题。
处理空缺值:处理空缺值的方法主要包括忽略元组、填补空缺值和推倒空缺值等;
处理错误数据:对于错误数据而言,首先需要识别包含错误数据的样本,然后进行更改或者删除。错误数据的分辨与具体的问题相关;
处理噪声数据:噪声是指对于一个变量进行测量时,测量结果存在的偏差。如果偏差较大,即为孤立点。噪声数据,包括孤立点,就是被测量变量的随机误差。处理噪声数据的方法主要包括分箱、回归、聚类和人机结合等。
(2)数据集成与变换
数据分析任务通常需要处理多个数据源中的数据,这涉及合并多个数据库或者文件中的数据至一个一致的数据存储中,即数据集成。
数据变换是指将数据转换或者统一为适合挖掘的形式,例如数据规范化,主要包括平滑、聚集和规范化等方法。以下将对规范化进行简单介绍。
数据规范化,又称特征缩放(Feature Scaling),是指将特征数据按比例缩放后,使特征落入一个较小的特定区间中。进行数据分析之前,通常需要对数据进行规范化处理。数据规范化通常根据数据的具体情况,选择合适的规范化方法。对数据进行规范化处理常用于涉及神经网络或者距离度量的分类算法和聚类算法中。对于基于距离度量相异度或者相似度的方法,数据规范化可以让所有特征具有相同的权重。
常用的规范化方法包括小数定标规范化、最小-最大值规范化、Z-score规范化、极差标准化和极差正规化等。
(3)数据归约
数据归约是指通过某种方式,获得保持原数据集完整性并且数量相对较小的数据集。不同的数据集可以采用不同的规约方法。常用的数据归约方法主要包括数据立方体聚集、特征子集选择、维度归约、数值归约和离散化等。
包含较多孤立点的数据会增加K-means算法的迭代次数,提高算法的复杂度,降低算法的准确性;同时,K-means算法是基于距离度量相似度的算法。因此,对于从实际环境中获取的数据集,需要进行规划化处理,让所有特征具有相同的权重;并且对数据集中的孤立点进行检测和删除,降低K-means算法的迭代次数。
K-means算法需要预先设定群组数目K值。针对K-means算法的这一限制,很多学者进行了相关的研究,并且提出了许多自动化计算K值的算法。这些算法的适用范围通常具有一定的限制或者算法自身的准确性不甚理想。因此,一些学者对于这个问题进行了更加深入的研究,提出了一些更为通用的算法。这些算法的基本思想是根据数据集的特点,确定一个K值的搜索范围[kmin,kmax],运行K-means算法产生不同的聚类结果,然后选择合适的有效性评价指标对不同聚类数目对应的聚类结果进行评估,以确定最优的群组数目K。
聚类的有效性是指评价聚类结果的质量并确定最适合特定数据集的划分。通常采用聚类有效性评价指标来评估聚类算法产生的聚类结果,然后选择最优的聚类结果对应的群组数目作为最佳群组数。目前,研究者们已经提出了许多检验聚类结果的聚类有效性评价指标,在聚类数目K值的搜索范围[kmin,kmax]内,使用这些函数指标确定最优的群组数K,即最佳群组数。目前,常用的聚类有效性评价指标包括Calinski-Harabasz(CH)指标、In-Group Proportion(IGP)指标和Silhouette(Sil)指标等。
在常用的聚类有效性评价指标中,Silhouette指标具有简单易用和评价性能良好等特点,并且得到了广泛应用。设a(i)为数据对象i与群组内所有其他数据对象的平均距离,b(i)为数据对象i到其他每个群组中数据对象平均距离的最小值。Silhouette指标定义为
由于Silhouette指标综合反映了聚类结构的类内紧密性和类间分离性,因此Silhouette指标既能够评价聚类质量的优劣,也能够估计最佳的群组数目,其值域为[-1,1]。当所有样本的平均Silhouette指标值越大时,聚类结果质量越好,聚类结果越有效,Silhouette指标的最大值所对应的聚类数即为最佳群组数。
4.分类分析技术
(1)分类分析概述
分类分析的流程是一个两步过程:第一步,建立一个模型,描述已知的数据集或者概念集。第一步称为有指导的学习,通过分析由特征描述的数据样本或者实例来构造模型。为建立模型而被分析的数据集或者概念集称为训练数据集,其中每一个数据样本或者实例都属于一个预先定义的类,由一个被称为类标签的特征确定。第二步,使用模型分析未知数据,进行分类。
根据模型的不同,目前常用的分类器主要包括:贝叶斯分类器、决策树分类器和支持向量机分类器等。(www.xing528.com)
贝叶斯分类器:贝叶斯分类器的基本思想是基于贝叶斯公式,通过数据对象的先验概率,计算后验概率,即该对象属于某一类的概率,然后选择具有最大后验概率的类别作为该对象所属的类。虽然贝叶斯分类器的算法模型简单,但是贝叶斯分类器往往会取得高效准确的分类结果。最常见的贝叶斯分类器是朴素贝叶斯分类器。它是一种基于独立假设贝叶斯定理的简单概率分类器。
决策树分类器:决策树(Decision Tree)表述了一种树型结构,由树的分支以及数据对象的特征进行分类,代表了对象特征值与类别特征值之间的一种映射关系。树中的每个内部结点选用一个特征进行分割,每个分叉路径代表某个特征的可能取值,每个叶结点对应从根结点到该叶结点所经历的路径所表示的分类结果,每个特征在决策树中作为分类特征时只能使用一次。
决策树的构建过程包括两个步骤。第一步,决策树的生成。开始时,所有数据对象都在根节点聚集。然后,递归地进行数据分片。第二步,决策树的剪枝,防止过拟合现象。在生成决策树时,需要选择某一特征进行数据分片,并且所选的特征是分类效果最好的特征。常用的选择分裂特征的度量指标有信息增益(Information gain,例如ID3和C4.5决策树)和基尼指数(Gini index,例如CART决策树)。
支持向量机分类器:支持向量机(Support Vector Machine,简称SVM)分类器是一种二类分类模型,理论基础是非线性映射。支持向量机的基本模型定义为特征空间上的支持向量间隔最大的线性分类器,最终可转化为一个凸二次规划问题进行求解。
(2)随机森林分类算法
随机森林是一种集成分类器,它基于随机化的思想构建了一群相互独立且互不相同的决策树。随机森林可以定义为{h(x,θk),k=1,…,L},其中θk是一类相互独立的随机向量参数,x为输入数据。每一棵决策树均使用随机向量作为参数,随机地选择样本的特征,随机地选择样本数据集的子集作为训练集。
随机森林的构建算法如下,其中,k表示随机森林中决策树的数量,n表示每棵决策树对应的训练数据集中的样本个数,M表示样本的特征数目,m表示在单棵决策树的一个结点上进行分割时,选择的特征数目,m<<M:
从全部的训练样本集中以可重复取样的方式,取样N次,形成k组训练集(即bootstrap取样),分别对每组训练集构建决策树,未被抽样选中的样本形成了k组袋外数据(Out of Bag,简称OOB);
对于决策树的每一个结点,随机选择m个基于此结点上的特征,根据这m个特征,计算最佳的分割特征;
每棵决策树都完整地生长,不进行剪枝;
将生成的多棵决策树组成随机森林模型,使用该模型对未知数据进行判别与分类。
随机森林的分类性能与每一棵决策树的质量息息相关。通常,袋外数据被用于评价每一棵决策树的质量。另外,袋外数据还被应用于评估随机森林的误差和特征重要性评分。
随机森林算法的优点主要包括:
适用范围广,对于很多种资料,都可以产生高准确率的分类器,即使对于包含大量遗失资料的数据,随机森林依然可以维持准确率;
性能好,可以处理大量的输入变量;
随机森林能够评估特征的重要性;
随机森林具有良好的抗噪声干扰能力;
对于不平衡的分类数据集,随机森林可以平衡误差;
具有快速的学习过程,并且能够进行并行化处理;
一般而言,随机森林不会出现过拟合现象。
然而,随机森林算法并不是完美的。不论是在实际应用中,还是在研究中,随机森林算法都表现出一些不完善的地方。相对地,随机森林算法的缺点有:
对于包含噪声特征和冗余特征的数据集,随机森林算法的准确性会受到影响,错误率会提高。
随机森林算法进行决策时,无法区别对待每一棵决策树,导致准确性差的决策树会影响算法整体的准确性。
(3)随机森林算法对于特征的重要性评分
随机森林算法能够计算单个特征的重要性。这一特点可以在很多领域得到应用。例如,银行贷款业务中可以使用随机森林算法对贷款客户信息中的每一个特征计算重要性评分,并进行排序,进而从所有特征中选择重要性靠前的特征进行深入分析,以降低银行贷款的坏账率。具体而言,随机森林算法计算某个特征X的重要性评分的步骤如下:
对于随机森林中的每一棵决策树,使用相应的袋外数据计算袋外数据的误差,记为errOOB 1;
随机地对袋外数据所有样本的特征X加入噪声干扰,例如随机地改变样本在特征X处的取值,再次计算决策树对应的袋外数据误差,记为errOOB2;假设随机森林中包含Ntree棵树,则特征X的重要性为:
∑(errOOB2-errOOB l)/Ntree
选择上述表达式作为随机森林算法计算特征重要性评分度量值的原因在于:若给某个特征随机地加入噪声干扰之后,如果袋外数据的准确率大幅降低,则表示这个特征显著影响了样本的分类结果,即该特征的重要程度比较高。具体而言,随机森林以每一棵决策树为单位计算特征的重要性评分。为了计算一棵决策树对于一个特征的重要性度量结果,在其它特征的取值不发生变化的前提下,对该决策树的袋外数据在该特征上的取值进行重排,即破坏了袋外数据中的样本在该特征上与类标的映射关系。然后,使用该决策树重新预测“新”的袋外数据样本的类标。在袋外数据样本与类标的映射关系被破坏前后,分别计算决策树的准确率或者误差。前后两次准确率的差值就是该决策树对于该特征重要性的度量结果。特征的重要性评分是所有决策树共同作用的结果,得分越高,特征的重要性越高。
(4)随机森林算法的特征选择
对于包含噪声特征和冗余特征的数据集,随机森林算法的准确性会受到影响,错误率会提高。因此,可以使用特征选择对待分析数据集进行处理,删除噪声特征和冗余特征。
特征选择是利用一系列规则,计算特征重要性的相对关系,对数据的特征进行排名的过程。特征选择技术通常用于对分类分析中的数据进行转换,以提高分类的准确性。一般而言,机器学习中的特征选择技术主要分为三类:过滤法(Filter)、封装法(Wrapper)和集成法。
过滤法是指通过统计的方法,赋予特征一个权重,根据特征的权重进行特征排序,然后采用某种规则选取一个阈值,权重大于阈值的特征予以保留,否则被删除。过滤法的特征选择过程根据数据集的特征进行操作,独立于具体的分类算法。
过滤法具有速度快和鲁棒性强的优点,对于大数据集,尤其是海量数据集,依然适用。但是,过滤法过于简单,统计的结果取决于样本的质量,难以补救,选择的特征子集的分类性能一般也弱于封装法。因此,过滤法一般不单独使用,而是作为一种数据预处理的方法,辅助封装法或者集成法,提高模型参数和特征选择结果的质量。常见的过滤法有很多种,例如Fisher比、信息增益、Relief、T-test和方差分析等。以下将简单介绍T-test和方差分析。
T-test,又称T检验,是针对两类问题的非参数检验方法,使用t分布理论推导差异发生的概率。使用T-test检验方法筛选特征时,会计算每一个特征的T统计值,具体的公式如下:
式中,n1为第一类样本的数量,n2为第二类样本的数量,分子为某个特征对应的两类均值的差值。特征的T统计值计算完成后,会对应一个p-value值。如果特征的p-value值小于0.05,表示该特征在两类之间具有显著性差异;否则没有显著性差异。在选择0.05作为阈值时,p-value值小于0.05的特征即为特征选择的结果。
方差分析(Analysis of Variance,简称ANOVA),又称变异数分析或者F检验,是针对多类问题(类别数目超过两类)的非参数检验方法。方差分析的基本思想是通过分析研究不同来源的变异对总变异的贡献度,以此确定可控因素对研究结果影响力的大小。使用方差分析检验方法筛选特征时,会计算每一个特征的检验统计量F值,具体的计算公式如下:
组间变异量:
组内变异量:
其中ni为第i组内观测值的总数,为第i组的平均值,为总体的平均值,Yij为该特征在第i组的第j个观测值;
组间均方:
其中k为组别数量,N为观测值总数。
两个均方值的比值即为:
F值越大,表示组间均方大于组内均方,即组间变异量大于组内变异量,各组间的差异远超总期望值离差,各组的平均数存在明显的差异;相反地,F值越小,甚至逼近于0,表示组间变异量小于组内变异量,各组间的差异很小,各组平均值则不存在明显的差异。特征的检验统计量F值计算完成后,会对应一个p-value值,具体的处理方法与T-test类似。
封装法的特征选择过程与具体的分类算法绑定。与过滤法比较而言,封装法更加深入,通过迭代或者重复的方式,从一个给定的局部最优解出发,逐渐向全局最优解逼近。封装法选择的特征子集的数量一般比较小,并且分类性能优于过滤法。
但是封装法的速度比较慢,鲁棒性不如过滤法。成熟的封装法有很多,例如支持向量机、遗传算法和K-means算法等。
与过滤法和封装法比较而言,集成法没有清晰明确的定义。例如,可以对多种封装法进行集成,或者对各个封装法的输出结果进行集成,或者将多个封装法组合成一个新的方法。当然,也可以把过滤法作为封装法的一种数据预处理手段,将两种方法进行集成。虽然集成法的设计方式有多种多样,但是对现有方法进行随意的集成,其效果并不一定优于原有的特征选择方法。优秀的集成法取决于集成策略的设计能否综合各个子方法的优势,并且匹配数据集的特点。
随机森林算法能够通过计算特征的重要性评分的特性进行特征选择。基于这一特性设计的特征选择策略中,常用的方法是循环构建随机森林模型,计算特征的重要性评分,每次删除一个或者多个评分最低的特征,直至剩余特征的数量降低至用户设定的数量。但是这种方法并不是严格的、统一适用的或者高效的。另外,剩余特征的数量以及每次删除的特征数量必须由用户设定。这种方法只能基于具体的问题进行设计,不具备问题独立性。同时,由于随机森林的构建过程具有随机性,直接使用某一次构建的随机森林模型关于特征的重要性评分进行特征选择是不具备说服力的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。