方法MATLAB编制Kmeans算法程序并进行仿真分析Word文档格式.docx
- 文档编号:22969917
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:25
- 大小:1.87MB
方法MATLAB编制Kmeans算法程序并进行仿真分析Word文档格式.docx
《方法MATLAB编制Kmeans算法程序并进行仿真分析Word文档格式.docx》由会员分享,可在线阅读,更多相关《方法MATLAB编制Kmeans算法程序并进行仿真分析Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
所以,真实负荷信息的掌控是很有限的,因此这会导致偏离实际的负荷。
国家在《电价改革方案》中所提出过的“合理成本、合理赢利、公平负担”的定价原则。
于是,想要达到公平,必须根据实际负荷曲线分类才有意义。
在电力市场,从经济公平的角度和负荷控制实现电网安全的角度来看,都应该是按照用户负荷实际曲线分别采取针对性措施,对用户进行分类,而其中最为基础工作就是对负荷曲线进行聚类。
基于电力用户负荷曲线的聚类分析,是获得典型负荷分布的重要手段,对按负荷特性对用户分类有重要帮助,对于负荷控制、负荷预测、用电异常检测甚至电价目录制定和开发营销策略等都有实际意义。
负荷曲线是负荷分析的数据来源,是用户电能消费行为的直观表示。
如果用户具有相似的消费模式,则他们也具有相似的负荷分布形状。
为了方便企业的管理和制定有针对性的运营策略,可以根据用户负荷分布的相似性来对用户加以归类。
而聚类分析在负荷分析中占有主导地位,是负荷分析的基础。
本文介绍了聚类分析的一些方法,运用k-means聚类算法并结合数据的归一化处理,以某一地点超过二百多个用户的负荷数据为研究东西,提取出日负荷特征曲线,对用户负荷进行了研究。
并用MATLAB编写了算法程序并进行仿真分析,结果表明,此方法效果良好。
2.聚类问题综述
2.1聚类的概念及综述
聚类分析是一种多元统计方法,同时也是一种模式识别技术。
数据库中知识的发现和数据挖掘(knowledgediscoveryanddatamining,简称KDDM)广泛受到当今国际人工智能与数据库界的重视。
聚类则是该领域中的一个十分重要的研究课题。
聚类分析(ClusterAnalysis)是一个新的数学分支,它是在多元统计分析被引入分类学中后逐步形成的。
聚类分析是研究如何将一组样品(指标、东西、属性等)分成类内相近、类间有别的若干类群的一种多元统计分析方法。
聚类所生成的簇是一组东西的集合,这些东西与同一个簇中的其他东西彼此相似,与其它簇中的东西相异。
简单的来说,所谓聚类就是将物理或抽象的集合分组成为类似的东西组成的多个类。
人类早在儿时,就能通过不断地改进下意识的聚类模式来学习如何区分动物植物。
通过自动聚类能够识别东西空间中稠密和稀疏的区域,包括市场研究、模式识别、数据分析和图像处理。
在商业应用中,聚类能够帮助市场分析员根据购买模式从顾客数据库中发现不同的顾客群体。
在生物学中,聚类能够用来推导植物和动物的分类,根据相似功能对基因进行分类,获得对种群中固有结构的认识。
在电力系统中,对于电力用户负荷特性进行聚类分析,能够帮助找出电力零售市场下的用电营销群体,提高识别电力用户中存在的用电异常现象等。
所以,基于电力用户负荷特性的聚类分析近年在国内外得到快速发展。
下面就聚类分析方法研究现状及基于电力用户负荷特性分类研究的发展情况分别展开详细的说明。
聚类的过程就是一个将数据集合区分为若干个不同子集的过程,并同时满足使得同一集合内的数据东西相似度较高,而不同集合中的数据东西则是不相似的。
其中提到的相似或不相似的度量,是基于数据东西描述属性的取值来确定的。
通常则利用各个聚类间的距离来描述集合之间的相似程度。
聚类分析的基本原则是使类中东西最大程度地相似,不同类间的东西相似度则达到最小。
这里需要指出的是,聚类与分类是不同的。
在分类的时候,存在样本数据,这些数据属于哪个;
类别是已知的,分类的目的是从样本集中提取出分类的规则,用于对其他未知类别的东西进行类标识。
而聚类预先并不知道目标数据有关于类别的相关信息,需要以某种度量为标准将所有的数据东西划分到新生成的各个簇中。
因此,聚类分析又称为无监督的学习。
而获得能够反映N维空间中这些样本点的最本质的“类”的性质就是聚类算法的目。
聚类主要包括以下几个过程:
(l)数据准备
包括特征降维和标准化。
(2)特征选择、提出
从最初的特征中选择最有效的特征,并将选出的特征其存储于向量中。
(3)特征提取
对所选择之特征进行转,通过换形成的新特征具有突出特征。
(4)聚类(或分组)
先选择一个合适特征类型的距离函数(或构造一个全新的距离函数)进行相似程度的度量。
然后执行聚类或分组。
(5)聚类结果评估
评估聚类的结果。
评估主要有3种:
内部有效性评估、外部有效性评估和相关性测试的评估。
动态的聚类过程如图2.1所示:
图2.1动态的聚类过程
2.1.3聚类算法的要求
聚类分析是一个正在蓬勃发展的新领域。
聚类分析所涉及的领域包括:
统计学、数据挖掘、空间数据库技术、生物学、机器学习和市场学等等。
正是因为每个应用程序数据库中包含的数据量越来越多,聚类分析在数据挖掘中已成为一个非常活跃的研究课题。
作为统计学的一个分支,聚类分析已有多年的研究历史,这些研究主要集中在基于距离的聚类分析方面。
许多统计软件包,诸如:
S-Pins、SPSS和SAS,都包含基于K-means、K-medoids等其它许多聚类分析工具。
在机器学习中,聚类分析属于一种无监督的学习方法。
与分类学习不同,无监督学习不依靠事先确定的数据类别,以及标有数据类别的学习训练样本集合。
正因为如此,聚类分析又是一种通过观察学习方法,而不是示例学习。
在概念聚类方法中,仅当一组东西可以由一个概念所描述时,这些东西方才能构成一个类。
这与基于几何距离表示相似程度并进行聚类的传统聚类方法有所不同。
概念聚类方法主要包含两部分内容:
(l)发现适当的类。
(2)根据每个类形成相应的特征描述,与在分类学习中的方法类似。
无论如何最大程度地实现类中东西相似度最大,类间东西相似度最小是聚类分析的基本指导思想。
在数据挖掘中,大多数工作都集中在发现能够有效、高效地对大数据库进行聚类分析的方法上。
相关的研究课题包括:
聚类方法的可扩展性、复杂形状和复杂数据类型的聚类分析的有效高效性、高维聚类技术,以及混合数值属性与符号属性数据库中的聚类分析方法等。
聚类分析是一个富有挑战的研究领域,有关每一个应用都提出了一个自己独特的要求。
以下就是对数据挖掘中的聚类分析的一些典型要求:
l)可扩展性。
许多聚类算法在小数据集(少于200个数据东西)时可以工作很好,但一个大数据库可能会包含数以百万的东西。
利用采样方法进行聚类分析可能得到一个有偏差的结果,这时就需要可扩展的聚类分析算法。
2)处理不同类型属性的能力。
许多算法是针对基于区间的数值属性而设计的。
但是有些应用需要对其它类型数据,如:
二值类型、符号类型、顺序类型,或这些数据类型的组合。
3)发现任意形状的聚类。
许多聚类算法是根据欧氏距离和Manhattan距离来进行聚类的。
基于这类距离的聚类方法一般只能发现具有类似大小和密度的圆形或球状聚类。
而实际上一个聚类是可以具有任意形状的,因此设计出能够发现任意形状类集的聚类算法是非常重要的。
4)需要(由用户)决定的输入参数最少。
许多聚类算法需要用户输入聚类分析中所需要的一些参数(如:
期望所获聚类的个数)。
而聚类结果通常都与输入参数密切相关;
而这些参数常常也很难决定,特别是包含高维对象的数据集。
这不仅构成了用户的负担;
也使得聚类质量难以控制。
5)处理噪声数据的能力。
大多数现实世界的数据库均包含异常数据、不明数据、数据丢失和噪声数据,有些聚类算法对这样的数据非常敏感并会导致获得质量较差的数据。
6)对输入记录顺序不敏感。
一些聚类算法对输入数据的顺序敏感,也就是不同的数据输入顺序会导致获得非常不同的结果。
因此设计对输入数据顺序不敏感的聚类算法也是非常重要的。
7)高维问题。
一个数据库或一个数据仓库或许包含若干维或属性。
许多聚类算法在处理低维数据时(仅包含二到三个维)时表现很好。
人的视觉也可以帮助判断多至三维的数据聚类分析质量。
然而设计对高维空间中的数据对象,特别是对高维空间稀疏和怪异分布的数据对象,能进行较好聚类分析的聚类算法已成为聚类研究中的一项挑战。
8)基于约束的聚类。
现实世界中的应用可能需要在各种约束之下进行聚类分析。
假设需要在一个城市中确定一些新加油站的位置,就需要考虑诸如:
城市中的河流、高速路,以及每个区域的客户需求等约束情况下居民住地的聚类分析。
设计能够发现满足特定约束条件且具有较好聚类质量的聚类算法也是一个重要聚类研究任务。
9)可解释性和可用性。
用户往往希望聚类结果是可理解的、可解释的,以及可用的。
这就需要聚类分析要与特定的解释和应用联系在一起。
因此研究一个应用的目标是如何影响聚类方法选择也是非常重要的。
2.1.4聚类算法的分类
聚类算法可以分为划分的方法、层次的方法、基于密度的方法、基于网格的方法和基于模型的方法。
(l)划分的方法
给定n个对象,一个划分方法构建对象的k个划分,每个划分表示一个聚簇,并且k≦n。
给定要构建的划分的数目k,划分方法首先创建一个初始划分。
然后采用一种迭代的重定位技术,尝试通过对象在划分间移动来改进划分。
一个好的划分的一般准则是:
在同一个类中的对象之间有较高的相似性,而不同类中的对象之间的相似性较低。
(2)层次的方法
层次的方法对给定数据对象集合进行层次的分解。
根据层次的分解,层次的方法可以分为凝聚的和分裂的。
凝聚的方法,也称为自底向上的方法,一开始将每个对象作为一个单独的一个组,然后相继地合并相近的对象或组,直到所有的组合并为一个,或者达到一个终止条件。
分裂的方法,也称为自顶向下的方法,一开始将所有的对象置于一个簇中,在迭代的每一步中,一个簇分裂为更小的簇,直到最终每个对象在单独的一个簇中,或者达到一个终止条件。
(3)基于密度的方法
绝大多数划分方法基于对象之间的距离进行聚类,这样的方法只能发现球状的簇,而在发现任意形状的簇时遇到困难,随之提出了基于密度的方法。
其主要思想是:
只要临近区域的密度(对象或者数据点的数目)超过某个闽值,就继续聚类。
(4)基于网格的方法
基于网格的方法是把对象空间量化为有限数目的单元,形成了一个网格结构。
所有的聚类操作都在这个网格结构(即量化的空间)上进行。
这种方法的主要优点是它的处理速度很快,其处理时间独立于数据对象的数目,只与量化空间的每一维的单元数目有关。
(5)基于模型的方法
基于模型的方法为每个簇假定了一个模型,寻找数据对给定模型的最佳拟合。
一个基于模型的算法可能通过构建反映数据点空间分布的密度的来定位聚类,也可能基于标准的统计数字自动决定聚类的数目,考虑“噪声”数据或者孤立点从而产生健壮地聚类方法。
2.2聚类在电力系统中的应用
目前,聚类分析在电力系统中的应用一般在以下一些方面:
电力系统的故障诊断,电力系统同调机群,电力负荷预测以及电力负荷建模等。
(1)电力系统中的故障诊断,如基于聚类分析的电力系统暂态稳定故障筛选,该方法的基本原理是:
先将给定的故障样本根据其特征变量信息分为若干类。
计算各类的聚类中心,并确定每一类的稳定属性,然后针对实际电力系统故障列表中的每一故障,依据其特征变量相对于各类的隶属度将故障划归到某一类。
当故障所属类别为不稳定类时,则认为该故障为严重故障;
当故障所属类别为稳定类时,则认为该故障为不严重故障。
据此思路,可以从故障表中筛选出严重故障。
(2)用模糊聚类方法识别电力系统同调机群。
同调机群的识别,在电力系统动态特性研究中有着广泛应用,发电机的同调是指在系统受到扰动后,发电机摇摆曲线具有相同的形式。
同调机群的识别方法有多种,何种程度的动态相似才算同调机群划分准则,有一定的模糊性和不确定性,而何种程度的动态相似才算同调需要视研究的具体问题而定,不存在严格的同调机群划分准则,用传统的精确的数学理论来处理模糊现象显得十分不足。
根据这一特点,可用模糊数学中基于模糊划分的模糊聚类方法应用于电力系统同调机群的识别。
(3)用于电力负荷短期预测,电力系统负荷预测是电力调度、用电、计划、规划等管理部门的重要工作之一,提高负荷预测水平有利于计划用电管理,有利于安排电网运行方式和机组检修计划,有利于提高电力系统的经济效益和社会效益。
国内外关于电力系统短期负荷预测的文献很多,采用的预测方法和预测精度也各不相同,但由于影响负荷的诸多因素和负荷的不确定性,各种预测方法都存在着一定的局限性。
传统的短期负荷预测方法有回归模型,时间序列等,随着人工智能的兴起和发展,模糊聚类辨识方法也引入到短期负荷预测中,并取得了较好的结果。
2.3聚类在负荷建模方面的应用综述
众所周知,电力负荷具有时变性、变结构性和不同地域特性的差异等特点。
忽视这些特点,建立一个“通用”模型,就目前的理论和研究现状来说是不现实的。
按照季节、时间、负荷水平和负荷构成等将负荷分成几个大类,针对每类负荷分别建模,从多侧面多角度来描述负荷的行为,则是一个合理的选择,这也是负荷建模理论的基本思想。
负荷分类是电力负荷本身的特殊性决定的。
负荷特性具有一定的重复性,负荷特性是有规律可循的。
对于得到的样本数据聚类,虽然聚类分析后,分属于同类的负荷数据具体反映的负荷特性也有差异。
但也应该认识到属于同一类的负荷具有相对稳定的性质和共同的特点。
而这也就是对负荷数据进行聚类分析的理论基础。
对一个大的地域来说,先采用统计综合法调查出该地域几种最主要的负荷成分(如工业、农业、商业等),并统计该地域所有变电站的样本数据,对样本数据分类,再采用总体测辨法为每个类别建立一个统一的覆盖该地区所有负荷的负荷特性的负荷模型。
这样,在整个地区只采用几个负荷模型,就能“具有一定精度”得覆盖该地区所有负荷的负荷特性。
这就是前面提到的将负荷建模研究的成果实用化的思想,很早就引起了人们的注意。
并且随着电力负荷特性记录装置的负荷特性数据的不断积累,欲使负荷建模工作由研究阶段走向实际应用,就不可避免地面临着负荷特性的分类与综合问题。
这也是电力负荷本身的特点和电力负荷建模原则所决定的。
聚类分析作为一种有效的数据处理方法,已经被人们引入到了负荷建模的研究中。
3.基于负荷曲线的聚类研究
3.1数据归一化处理
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。
归一化化定义:
归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。
首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。
归一化的具体作用是归纳统一样本的统计分布性。
归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。
通过电力系统负荷测量装置得到的用户负荷数据,在数值范围上会有很大的差别,这些差别会对分类的结果造成很大的影响。
因此,在进行分类之前要对样本数据进行归一化,以消除这些差别的影响。
本文以下所指的负荷曲线均为归一化之后的具有代表性的用户日负荷曲线,因此对电力系统用户的分类即转化为对用户负荷曲线的分类。
3.2k-means聚类算法简介
K-means算法又称k-均值算法,是划分方法中典型算法之一,也是聚类应用中常用算法之一,很多学者对其进行了分析研究。
因此,从K-means聚类算法展开研究是必要的。
下面分别从算法的算法原理和流程上进行论述。
K-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
K-means算法的处理过程如下:
首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心。
对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇。
然后重新计算每个簇的平均值。
这个过程不断重复,直到准则函数收敛。
通常,采用平方误差准则,其定义如下:
(3-1)
这里E是数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值。
该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其它距离度量。
对于初始聚类中心的选择方法有以下几种:
(1)经验选择法。
根据以往经验大体知道对象应如何划分,分为几类,选择每一类中有代表性的对象作为初值中心。
(2)随机选择法。
将对象随机分成几个组,取每组的中心作为聚点。
(3)抽样法。
当对象数量很大时,先随机抽取一部分对其进行聚类,然后取每组的中心作为聚点。
(4)最小最大法。
先选择所有对象中相距最远的两个对象作为聚点,然后选择第三个聚点,使得它与已确定的聚点的最小距离是其余对象与前两个聚点的较小距离中最大的,然后按同样的原则选择以后的聚点。
(5)最小距离法。
确定一个正数r,把所有对象的中心作为第一个聚点,然后依次输入对象,如果当前输入对象与已确定的聚点的距离都大于r,则该对象作为一个新的聚点。
k均值算法试图确定最小化平方误差函数的k个划分。
当结果簇是紧凑的,并且簇与簇之间明显分离时,它的效果较好。
3.2.1K-means算法优点
(1)对处理大数据集,该算法是相对可伸缩的和高效率的。
(2)K-means算法是解决聚类问题的一种经典算法,这种算法简单、快速。
(3)算法经常以局部最优结束。
算法尝试找出平方误差函数值最小的k个划分,当结果簇是密集的,而簇与簇之间区别明显时,它的效果较好。
3.2.2K-means算法缺陷分析
(l)K-means算法中聚类个数k的初始化
聚类结果依赖于初始值的设定,但是k值的选定往往要经过很多次实验才能找到最佳聚类个数。
(2)初始聚类中心的选择
K-means算法采用随机法选取初始聚类中心,选取点的不同,聚类结果可能就不同,这样的依赖性就导致聚类结果的不稳定性,且容易陷入局部最优而非全局最优聚类结果。
(3)只能发现球状簇
K-means算法常采用基于欧几里德距离的误差平方和准则函数作为聚类准则函数,如果各类之间区别明显,即各个类间的相似度很低,那么误差平方和准则函数比较有效;
但是相反情况,则可能出现将大的聚类进一步分割的现象。
3.2.3K-means聚类算法描述
否
是
图3.1K-means聚类算法流程图
3.3层次聚类算法简介
层次聚类方法将数据对象组成一棵聚类树。
根据层次分解是自底向上还是自顶向下方式,层次聚类方法可以进一步分为凝聚的和分裂的。
分裂层次聚类:
该算法首先将数据置于一个簇中,然后将其逐步细分为越来越小的簇,直到每个对象单独为一簇,或达到某个终止条件。
凝聚层次聚类:
首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有的对象都在一个簇中,或者终止于某个条件。
绝大多数层次聚类方法属于这一类。
只是在相似度的定义上有所不同。
层次聚类的困难点在于,一旦一组对象合并或分裂,就会一直继续下去,中间不能撤销。
即如果某一步没有选择好的话就会导致低质量的聚类结果。
由于绝大多数的研究为凝聚型层次聚类,下面就凝聚型层次聚类展开探讨,文中接下来的部分所涉及的层次聚类也均指凝聚型层次聚类。
这里给出采用最小距离的凝聚层次聚类算法(又称最近邻聚类算法和单连接算法)流程如下:
(1)将每个对象看作一类,计算两两之间的最小距离;
(2)将距离最小的两个类合并成一个新类;
(3)重新计算新类与所有类之间的距离;
(4)重复
(2)(3),直到所有类最后合并成一类。
3.4基于MATLAB的聚类算法的实现
3.4.1MATLAB简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数
据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括
MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
3.4.2算法实现
基于各聚类算法的算法思想和算法流程,给出基于MATLAB实现的k-means聚类算法代码。
由于代码较长,以下只展示重要部分。
Z=xlsread('
data.xls'
);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 方法 MATLAB 编制 Kmeans 算法 程序 进行 仿真 分析