水用量数据预测模型建立和用户分类.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《水用量数据预测模型建立和用户分类》
名称:水用量数据预测模型建立和用户分类
简述:(1)基于居民用户历史水用量数据,解决以下问题:分析出居民用户的水用量的规律;对用户进行分类;找出其中不合理用水的居民用户;可根据规律预测用户未来一段时间的用水量。(2)基于大用户历史用水量数据,解决以下问题:分析出大用户的水用量规律;对用户进行分类;当规律不匹配时进行提醒;根据规律预测用户未来一段时间的用水量。
1、小用户数据
1.1 数据预处理
原始数据表中包含很多字段,需要删除无用字段。其次水表可能
出现故障,导致读数有问题,如水表读书为负值等一些问题。
(1)去除重复记录,将CST_ID、CAI_ID、CXD_NEW_READING、CXD_USAGE和CXD_DATE相同的记录进行去重操作。
(2)将CXD_USAGE小于0的记录赋值为0;
(3)时间转换,数据库中数据毫秒格式存储,为了方便对日期进行
操作,故需要将时间转换为yyyy/MM/dd的格式,其转换过程如下所示:
(4)校验CXD_USAGE值是否正确,这里通过KETTLE将当天CXD_NEW_READING与前一天CXD_NEW_READING进行求差,然后将差值与CXD_USAGE对比,如果他们差值较大,说明CXD_NEW_READING读书有误或CXD_USAGE有误,则需要进行校验操作,其过程如下图所示:
转换结果如下图所示:
(5)对(4)所得结果进行去除无效值操作,将前一天后一天读数差值与CXD_USAGE比较,若差值大于10则删除该记录;若当天读数比前一天读书小,则说明读数有问题删除该记录;
(6)求每个用户的用水量之和、平均值和标准差。
(7)求每个用户周一到周七用水量的平均值,如下图所示:
结果如下图所示:
(8)合并记录,将总和、均值、方差和每周的的平均用水量合并到一个表中,通过简单的SQL语句便可以完成,
UPDATE USER_VAL A, USER_WEEK B
-> SET A.AVG_SUN=B.AVG_WEEK
-> WHERE A.CST_ID=B.CST_ID AND B.WEEK=7;
结果如下图所示:
1.2 聚类分析
K-means:k-means 算法接受参数k ;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
假设要把样本集分为c个类别,算法描述如下:
(1)适当选择c个类的初始中心;
(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
该算法的最大优势在于简洁和快速,综上所述,K-means可以对用户的用数量进行聚集。
(1)通过Weka打开数据,通过下图可以看出大部分用户的用水频率是相差不大的,少数用户用水频率较高,达到99.98%,少数用户用水频率较低,个别用户基本不用水。
(2)在Cluster选项卡里选择SimpleKmeans,设置参数numClusters 为4,并且忽略到其它属性,点击“S tart”,得到如下结果。从图中可以看出Cluster3中的用户用水频率较高,说明其用水是比较规律的,
Cluster1用水频率较低,说明是基本不用的,Cluster0是一段时间用,一段时间不用的,Cluster2是偶尔用一下的。
(3)用户聚类分组结果如下图所示:
1.3 用户用水规律分析
数据库中有很多CXD_USAGE为0的用户,和每天用水量较大的用户,由于是分析用户整体的用水规律,所以这里只对正常用户的用水情况进行分析。时间是对用户用水规律分析的重要因素,所以这里以周、年对用户进行分析。
(1)对原数据进行清洗,取出不符合规律的数据。然后求出每个用户,每周一到周七的平均用数量,过程如下:
数据如下图所示:
(2)使用K-Means算法进行聚类分析,设置K=7,结果如图所示,从图中可以看出,Cluster3每周用水量较大,Cluster4每周用水量偏小。
(4)随机抽取30个用户对其每周用水量的均值进行分析,从图中可以看出,用户周六、周日用水量相对偏大,周五用水量相对偏低。
1.3 用水预测
(1)用户每天用水预测
通过上面聚类分析,发现Cluster3中用户用水是比较规律的,所以选取Cluster3中数据集作为测试样本。操作如下:
a.读取数据
b.转换为时间序列
er1、user2、user3时间序列图像分别如下图所示:
d.从上面分析,整个曲线处于大致不变的水平,且随机变动在整个时间序列范围内也可以认为是大致不变的,所以该序列可以大致被描述为一个相加模型,因此我们可以使用简单指数平滑法进行预测。我们采用R中的HoltWinters()函数,为了能够使用HoltWinters中的指数平滑,我们需要进行参数设置:beta=FALSE和gamma=FALSE,预测结果如下图:
e. 以上三张图可以看出User1、User2、User3的alpha参数的估计值约分别为0.1370064、
0.06724179、0.05665951,User2、User3非常接近0,说明该序列比较平稳。
f.画出预测值和实际值,效果如下图所示: