第2章 数据流聚类方法的研究
2.1 简介
近年来,随着智慧农业、精准农业、农业物联网的迅速发展,各个传感器节点监测的数据产生了源源不断的数据流,数据流中的每个元素都属于潜在的、未知的数据,这些高速、持续、实时、无限的数据流是农业大数据的重要组成部分。大量未知的信息蕴含于数据流中,人们若想充分利用这些看似毫不相关,甚至支离破碎的大量数据,就需要针对其特征进行深层次的数据挖掘,才能从中提取出真知灼见,产生大智慧。
所谓数据挖掘,是指从大量无规律的数据中挖掘出潜在的、有价值的、有意义的、可理解的、可解释的模式,进而发现有用的知识,并得出时间上的趋向和内在关联,从而实现为用户提供问题求解层次的决策支持能力。聚类分析是数据挖掘的一个子领域,通过使用数学理论和方法将数据集按照一定的度量标准划分成不同的组,适合于用来探讨样本之间的相互关系,从而对样本结构进行初步的评价,是大数据预处理的一个中间环节。由聚类所生成的簇是一组数据对象的集合,聚类的结果使得同一组内的样本相似度尽可能高,不同组样本相异度尽可能高。聚类分析是数据挖掘分析中的热点研究领域,通过聚类分析,对数据稀疏或密集的区域进行区分识别,从而找出数据间的内在联系和分布规律,在模式识别、气象分析、天气预报等领域得到了广泛的应用,具有重要的理论意义和实用价值。
数据流的聚类分析都是由传统的静态聚类方法演变而来的,对数据集中的元素进行聚类,确定它们之间的关系,多用距离和相似度来度量。
类的定义描述如下。
∀xi,xj∈X,dij为元素xi,xj间的距离,阈值T 为给定的一个正数, X 为元素的集合。若dij≤T,则称X 对于阈值T 构成一个类。若集合X 中任意两个元素的相似度用距离dij来度量,则有dij≥0, dij≤dik+dkj, dij=d ji,常用的距离有名氏距离、马氏距离、杰氏距离、斜交空间距离等。若集合X 中任意两个元素的相似度用相似系数来度量,则集合中越相似的元素,相似系数的绝对值越接近1,不相似的元素间的相似系数接近0。
传统的聚类方法主要有如下几种:基于划分的聚类方法、基于网格的聚类方法、基于密度的聚类方法、基于模型的聚类方法、基于层次的聚类方法等,每种聚类方法各有其优缺点。
基于划分的聚类方法是将含有n个样本的数据集划分成m组,m≤n,每个组代表一个簇,划分的组至少要包含一个样本,每个样本只能属于一个组。要构建的划分数目m确定后,先确定一个初始划分,利用迭代不断重新定位,通过在簇之间的移动来优化划分。其中,较为经典的算法是K均值算法和K中心点算法。大部分基于划分的聚类方法,利用样本间的距离进行度量,导致聚类簇的性质受限,只能发现球形的聚簇。
基于网格的聚类方法是把样本空间量化为数量有限的单元,形成网格结构。系统的聚类操作都是在该量化空间上进行的,处理速度快是该算法的优点。处理时间取决于量化空间中每一维的单元数。缺点是只是对垂直点、水平点、边界点的聚类效果较好,较为经典的算法有Sting算法、WaveCluster算法等。
基于密度的聚类方法的核心思想是当邻近区域的数据点数超过了某个阈值就继续聚类。该方法能发现任意形状的聚簇,可过滤噪声点、孤立点数据,较为经典的算法有基于密度的增长聚类算法DBSCAN、成簇排序的OPTICS算法。
基于层次的聚类方法按照方向来分,可分为自顶向下的分裂、自底向上的合并(凝聚)两种,其优点是动态建模,可以保存概要数据。聚类方法简单,能识别出形状复杂、不同大小的聚类,能找到孤立点。在层次聚类方法中,程序需要根据一定的相似性衡量标准分割不相似部分,或合并相似部分,较为经典的算法如BIRCH算法、CURE算法、CluStream算法等,尤其是CluStream算法对数据流分两步聚类而被人们广泛采用。
基于模型的聚类方法假设数据集由某种潜在的概率分布所生成,用数据集来拟合某个数据模型,常用的、经典的基于模型的聚类方法有AutoClass、CLASSIT等。
由于数据流的特性,传统的数据挖掘技术无法直接应用于数据流挖掘中,人们在此基础上开始研究大数据背景下的数据流挖掘技术,以便找出分布未知的数据流中潜在的价值。数据流聚类与传统的数据聚类存在很大的差别,要求实时、高效处理,对数据流扫描一次完成聚类。
对于传感器采集到的数据流,不仅要监测是否发生变化,而且要能对监测到的数据流区分噪声变化与显著性变化。由于数据流采集的过程中不可避免地会引入噪声数据,若是在预处理环节不进行处理,则会对数据流后期的分析产生较大影响,使其分析结果不准确,甚至偏离真实的分布规律。此外,对于聚类的异常数据,可以对数据流进行追溯查询,找出问题的原因所在,因此,聚类分析的结果对进一步分析数据的特征尤为重要。
本研究的背景是对猪舍环境进行实时监测,在猪舍不同位置安放同种类型的传感器,由于各种环境因素的自身特性,对于同一猪舍的不同位置的同种类型的传感器所采集到的环境信息也不同。为了对猪舍采集到的数据流进行深入分析,首先对其进行聚类,然后在聚类的基础上进一步分析和挖掘其内部特征。