自《Python数据分析与挖掘实战》的两个章节
第10章:家用电器用户行为分析与事件识别
10.1 背景和目标
家电企业可以通过 研究 不同气候环境下、不同地区的、带有不同年龄性别属性的人 的不同使用习惯 ,来开发新的产品功能,开拓新市场。智能家电、物联网领域中,要想提供智能服务就得和大量人机交互数据打交道,所以物联网的数据挖掘也是一个非常值得探索的领域。
书中的案例是热水器用户行为分析,首先是想要通过热水器的时间序列数据,探索用户使用习惯,然后是划分每次完整的用水事件,并从中识别属于洗浴的事件。
把这类识别能力运用于对不同用户群体的分析,可以加深对用户的理解并制定相应营销策略。
10.2 数据预处理
抽取数据
智能热水器每2秒采集一条数据,数据来自大量用户,数据总量大,因此采用无放回随机抽样法抽取200个用户2014年的用水记录作为建模原始数据。属性包括热水器id,时间,热水器状态,有无水流,温度,水量等。
数据探索
① 统计了用水的停顿时间间隔(下一次用水开始-上一次用水结束)频数分布,发现停顿时间在0~0.3分钟的占比居多。
② 热水器编号对建模无用,删去;水流量反应有无水流,有无水流可删去;热水器为关且水流量为0,说明热水器不处于工作状态,可删去对应行。
数据变换
① 用水事件可以通过用水的停顿时间间隔和水流量来判别,所以依靠阈值寻优模型,识别用水事件。
原数据:用水的时间点、水流量。
状态标记:比较相邻两次用水数据的时间间隔 (df.diff),如果这个间隔时间大于某一阈值,说明这两次用水分别属于两个用水事件,如果小于某个阈值,说明这两次用水属于同一次用水事件。同一个事件的用水数据有相同的事件编号。
问题在于:阈值取多少,才能不把两个属于相同用水事件的数据拆开,同时也不把分别属于不同用水事件的数据放到一块,即阈值寻优模型。
阈值寻优模型
尝试不同阈值设定下,被划分出来的时间个数。横轴为阈值,竖轴为事件个数,画折线图,看斜率最平稳的地方(每四个斜率做滚动平均视为斜率指标,用K表示),找K<1时的最小阈值。如果K太大,则用专家阈值4min。
(事件划分方法:用每两条相邻用水数据的发生时间做差分,如果大于阈值,前面的数据标记为用水终点,后面数据标记为用水始点,做完标记后统计有多少完整用水事件)
② 整理指标并分类
时长、频率、用水量化、用水波动
③ 筛选“候选洗浴事件”
用水量小于,单次用水时长小于,总用水时长小于 (大于呢?水温?)
10.3 模型
构建3层神经网络
▲输出结果的判别和输出层的激活函数有关,如果用sigmoid,结果为-1~1之间,小于0则非洗浴,大于0则判别为洗浴
10.4 其他思考
关于识别洗浴事件,可能存在一些特殊情况,比如连续两个人洗浴,此时容易把两次事件合并成一次,因此需要特殊的识别(例如针对某些因素,such as 总时长、停顿次数、总用水量建立指标),提高模型精度。
第11章:应用系统负载分析和磁盘容量预测
11.1 背景和目标
信息化的大型企业需要许多信息管理系统,系统的负载过大则容易导致系统瘫痪,因此公司需要关注服务器、数据库、存储设备的运行状态,及时了解系统的负载情况,提前预防、确保系统安全稳定运行。
负载分析常常考虑当前的负载率和负载增长率,利用网格分析可以判断系统所处状态。
11.2 分析和数据预处理
随着系统的运行,数据会持续写入存储。so 可以用时间序列分析。
数据抽取方式:选择性抽取历史数据进行分析,定时更新数据(如果数据增长方式变化,就需要实时数据用于更新模型)
时序图:探索数据的平稳性。
数据:磁盘容量+磁盘已使用大小随时间变化。
11.3 建模啦
① 平稳性检测:例如ADF(p值小于0.05),用于确定时间序列中没有随机趋势或确定趋势
② 白噪声检验(完全随机的序列,与时间无关):要验证序列中的信息是否已经被提取完毕,如果是白噪声,说明数据中只剩下随机扰动了
③ 模型识别:利用BIC信息(最小值)对模型定阶,识别ARIMA的p和q(尝试不同的p、q组合,看那个组合的BIC最小)
④ 模型检验:看模型残差是否为白噪声,如果不是,说明残差中还存在有用信息,要进一步提取啊
⑤ 模型预测:怎么能预测未来5个呢?用预测出来的数再预测??
⑥ 模型评价: 平均绝对误差<=均方根误差
⑦ 模型应用:定时抽取新数据(更新模型频率按业务需要)、设置预警等级(其他预警也可以借鉴该方法进行分析)