基于机器学习的智能家居系统的设计与实现
2023-02-08尹力辰杨开语赵露露孙泽军
尹力辰,杨开语,赵露露,孙泽军
(平顶山学院 信息工程学院,河南 平顶山 467000)
0 引 言
近年来,随着经济的高速发展和人们生活水平的日益改善,人们对智能家居的需求越来越大。智能家居作为物联网技术在家庭生活环境中的一项重要应用,受到了产业界、学术界的广泛关注。智能家居主要以住宅为平台,通过物联网技术连接家居环境中的设备,提供家电控制、远程控制、环境监测、危险预警、安全监控等多种智能化家庭服务[1]。但目前对于传统智能家居而言,所有相关数值均为提前预设,使得用户无法获得更加个性化的服务。
本文利用物联网技术和WiFi无线通信技术建立基于机器学习的智能家居系统的硬件部分,采用K最近邻模型以及随机森林模型构建智能家居系统的机器学习部分。由阿里云生活物联网平台提供的云智能APP组成软件部分。结合无线通信技术、物联网技术、人工智能机器学习技术,构建一个能够对用户个性化定制的智能家居系统。系统检测到用户返回家中后进行家中信息检测,运用网络数据挖掘技术挖掘数据,并与上传到阿里云平台的数据相合并,通过Python进行数据分析。将不同的数据分别送入不同的机器学习模型中,从而通过机器学习得出结论[2],并反馈到用户端。本智能家居系统通过分析数据掌握用户对某一特定环境的需求,并提供个性化、智能化的私人定制服务。
1 系统总体设计
1.1 系统总体结构设计
本文采用分布性好、灵活性高的阿里云平台作为系统的云服务器。本文按照物联网四层架构将系统分为感知层、传输层、平台层和应用层[3]。本系统总体设计如图1所示。底层单片机设备监测数据并通过MQTT上传到阿里云平台,再通过阿里云平台提供的API下载传输到用户的手机,同时上传到终端进行机器学习。然后将终端学习结果反馈的数据通过MQTT传输到单片机中进行反向控制[4]。
图1 系统整体的框架
选用ESP8266芯片作为核心板,负责整体的控制与感知,各类传感器作为感知端口,核心板与其他控制器件作为控制端。中间件采用轻量级且常用的MQTT作为传输层协议,采用CSMA即IEEE802.11协议作为计算机网络中数据链路层协议,便于用户传输数据和接收数据。本文采用阿里云生活物联网平台作为平台层,其具有优秀的物数模型以及合理的API接口,便于用户接收和分析数据以及反向控制。通过分析和调用数据,设计符合当前用户需求的机器学习算法模型,并对用户行为继续进行分析[5]。
1.2 系统硬件功能设计
根据系统的硬件架构以及智能家居系统要求,本文选取较为常用且容易被替代的传感器。系统硬件电路设计以简单、方便、灵活为原则。目的是为了提高系统的实用性、可扩展性以及稳定性。结合各个元件的功能特点,实现智能家居的控制与检测。本智能家居系统采用干电池、接入电脑、移动电源供电方式。将不同场景环境检测端口检测的信息传送到阿里云生活物联网平台,采用DHT11、WS2812-1以及三脚光敏传感器进行检测。DHT11主要应用于检测屋内空气温度和湿度情况,其DATA接口主要接在I/O13端口中;WS2812双红外用于检测家中是否有人,其DATA接口主要接在I/O10以及I/O11端口内;光敏传感器主要接在I/O12。继电器接在I/O14、I/O15中。舵机接口通过转接板接在I/O2口中,方便用户随时知晓家中情况。硬件结构连接如图2所示。
图2 硬件结构连接
1.3 系统的数据采集以及数据库格式设计
由于传感器采集的数据以及设备通过对控制器进行操作所触发的事件在一定程度相互关联,所以需要对传感器所检测数据的规格基于一定的环境进行判断,可以通过多特征值对某一特征值进行判定[6]。阿里云平台中生活物联网平台提供API,使用Python将文件格式转换为CSV文件。本智能家居系统设计了一套基于多变量的数据采集格式,见表1所列。
表1 传感器数据采集格式
关于智能家居系统数据采集格式具体说明如下:
(1)时间(Time):是指智能家居系统被用户所感知或者是操作的时间、用户行为的开始或者结束的时间,用于区分室外环境。
(2)状态(Sensor_State):是指智能家居系统的状态,如工作、异常、休眠状态。
(3)类别(Sensor_Catagory):是指智能家居系统传感器的类别,每一种传感器均有不同的传感模式类型,根据传感器的类别可以判断该数据所适用的场景。
(4)数据(Sensor_Data):该智能家居设备所采集的数据,与设备类别配合使用。
(5)名称(Sensor_name):每一模块的功能性描述。
根据当前情况进行网络爬虫,并分析当前日期的天气情况,针对检测的信息共同构建数据库如下:
(1)Time时间:观察所处时间,对于机器学习模型和天气信息的爬取是最重要的。
(2)Sensor_State设备状态:根据用户是否在家,判断是否进入休眠模式。
(3)Sensor_Catagory类别:所获得数据对应的传感器。
(4)Sensor_name名称:设备名称。
(5)Temperature室内温度:系统感知用户调节了室内温度时所上传的数据。
(6)Apparent_Temperature室外温度:通过挖掘技术挖掘的室外相关数据源,可判断用户在该环境下需要的室内温度。
(7)Humidity湿度:即室外空气湿度。通过此室外空气湿度数据,判断用户在该环境下的空气温度和空气湿度需求。
(8)Visibility能见度:通过挖掘技术所感知到的室外能见度,判定室外PM2.5值,进而对室内湿度进行判断。
(9)Pressure压强:通过挖掘技术感知到的室外压强,判断室内湿度值。
(10)Wind_Speed风速:通过挖掘技术感知到的室外风速,判断室内温湿度值。
(11)Cloud_Cover云层:通过挖掘技术感知到的室外云层厚度,判断室内温湿度值。
(12)DewPoint露点值:通过挖掘技术感知到的室外露点值,判断室外昼夜温差值,进而判断室内温湿度。
(13)Wind_Bearing风力:通过挖掘技术感知到的室外风力值,判断室内温湿度值。
(14)Icon天气:通过挖掘技术感知到的室外天气,对室内温湿度值进行量化判断。
根据该数据库可知较为丰富的室外和室内环境数据,用户可以据此对家中温湿度等各项数据进行较为准确的判断。
本文采用随机森林模型对于温度值、湿度值进行判定。采用KNN预测进行判定时需要两个参数,即时间和状态。对MQTT服务器获取到的数据信息进行预处理,并将行为分析模型进行规范化处理得到表2。
表2 用户行为数据库信息
通过光照传感器感知环境光照信息,建立光照强度数据分析模型,通过阿里云平台API下载并规范数据,见表3所列。
表3 光照强度数据库信息
2 行为分析模型算法设计
2.1 数据的采集
传感器检测到用户在家时即开始运行检测功能。当用户在家时,每1 h进行一次感应,直到用户离开家中或者是进入休眠模式,通过阿里云API平台下载数据,通过Python将JSON格式数据转化为CSV文件,用户行为信息实体如图3所示;并通过网络挖掘技术爬取当日天气信息,与上述文件合并。对经过Pandas、Numpy、Seaborn数据包处理后的数据进行整合[6]。整体过程如图4所示。
图3 用户行为信息实体
图4 合并整体过程
2.2 数据的处理与分析
本文采用Beatiful Soup、Requests进行数据挖掘,例如挖掘天气相关信息,得到天气的各类指标;通过阿里云API将其转化为CSV文件并通过Pandas包进行合并。
从26 280个数据集中进行筛选,并从21个特征中逐一进行筛选,通过缺失值补充,加入屋内状态等因素。建立皮尔逊相关系数矩阵,得出室外温度、露点值、月份、湿度、能见度等相关度较高的数据[7],分别计算标准差、最小值、第一四分位数、第二四分位数、第三四分位数[8]。最终发现特征中含有空缺值以及差距较大的极值。根据它们的表现情况,采用Numpy与Pandas对极值元组进行剔除并填补空缺值。鉴于数据量巨大,决定采用在该量级的数据集表现较好的随机森林算法。
2.3 随机森林模型的搭建
随机森林模型(Random Forest)是利用多个决策树对样本进行训练、分类和预测的一种算法。在对数据进行分类的同时,还可以给出各个变量的重要性评分,评估各个变量在分类中所起的作用[8],如图5所示。利用随机森林模型可以评估出用户所期望的室内温度值。具体步骤如下:
图5 随机森林回归算法示意图
(1)建立皮尔逊相关系数矩阵,得出室外温度、露点值、月份、湿度、能见度等相关度较高的数据。特征数目取为5,并用未抽到的用例作预测,评估其平均绝对误差。
(2)选取随机森林模型数据集,根据时间序列分组,将2/3的数据作为训练集,并选取1/3的数据作为测试集[9]。建立随机森林模型,表达式为:
将输入空间划分成M个部分,最终生成的决策树为:
2.4 K近邻模型的搭建
本系统基于KNN预测光照强度,基于用户在家时的光照强度对窗帘和LED的状态进行判断。将预测结果反向输入到模型中[10]。将总体数据的70%作为训练集、30%作为测试集,并进行机器学习,如图6所示。
图6 训练集和测试集的划分
具体思想如下:
(1)当检测到用户在家时将光亮值稳定在一个固定值,并记录到灯光数据库中。
(2)当用户回到家中,对当时时间进行划分,精确到某一时刻。
(3)通过式(4)的欧氏距离公式,按照升序距离进行判断选出前三个点(本文选取k=3),即距离样本点最近的三个点。
(4)对灯光数据进行加权平均,所得即为设定灯光值,并将灯光值控制在该值,高于该值时拉上窗帘,若低于该值则打开LED灯。
(5)检验:通过再次检测用户的行为,即是否对窗帘以及LED灯进行控制,进行重新判断。
训练集与测试集拟合程度如图7所示。
图7 测试集与训练集拟合程度
3 系统调试与功能测试
为了检测系统整体开发是否符合智能家居的设计需求,本文主要从系统的硬件功能和用户行为分析功能两方面进行测试[11]。
首先要从系统的功能上进行测试,测试系统功能是否可以长期稳定;其次传感器检测的数据是否真实有效;最后检测智能家居系统是否可以全面稳定地运行。如果均符合预期,即通过测试;如若未通过测试,则反复修改直到通过为止[12]。当基于机器学习的智能家居系统通过了各项功能测试,系统就能够确保监测到数据的正确性和整个系统的稳定性、可靠性,达到预期目标见表4所列。
表4 系统功能测试
3.1 数据测试
进行数据测试的目的是通过对各个传感器的测试以及网络挖掘测试,检测智能家居系统中传感器以及网络挖掘技术中各个节点是否可以平稳运行,是系统进行用户行为分析中的最为关键的一步。测试情况见表5所列。基于机器学习的智能家居系统中对于数据要求极其严格,如果数据有了缺失值,则需要补充和去极值。
表5 各传感器测试
3.2 行为分析部分
本部分主要进行测试行为分析。测试模块的平均绝对误差值MAE模型为[13]:
通过计算MAE的值可以清晰地算出来该模型的确切误差值,确定在该环境下与真实值的差距应该控制在多少[14]。
通过Matplotlib数据包将误差进行可视化展示,如图8所示。可以看出随机森林模型展现了较好的性能。由公式(5)可以得到KNN算法中MAE值为7.878,随机森林模型的MAE值为0.448。因为K近邻模型数据较小,所以展现的性能不是极佳的,但总体而言不超过测试所需要的结果。而随机森林模型相对较好。系统对用户的预测值与真实值之间的契合度较高,比较符合用户行为分析模型所要求的值,满足设计要求,两个行为分析模型均取得了良好的效果[15]。
图8 随机森林分析模型测试
系统响应速度较快,其中连接家庭WiFi消耗的时间较多,但整体上仍在用户可接受的范围之内。综上所述,系统对于用户操作的响应速度满足设计要求[16]。用户行为分析模型响应速度见表6所列。图9为云智能APP测试,图10为阿里云上传物数模型测试。
表6 系统响应速度
图9 云智能APP测试
图10 物数模型测试
4 结 语
针对以往物联网智能家居系统中存在的用户定制化程度不高以及现有的行为分析算法运行时间较长的问题,本文构建了一种基于用户行为分析模型的智能家居系统。该系统能够为用户量身定制个性化的环境数据,提高用户体验感。