尹力辰,楊開語,趙露露,孫澤軍
(平頂山學(xué)院 信息工程學(xué)院,河南 平頂山 467000)
近年來,隨著經(jīng)濟(jì)的高速發(fā)展和人們生活水平的日益改善,人們對智能家居的需求越來越大。智能家居作為物聯(lián)網(wǎng)技術(shù)在家庭生活環(huán)境中的一項(xiàng)重要應(yīng)用,受到了產(chǎn)業(yè)界、學(xué)術(shù)界的廣泛關(guān)注。智能家居主要以住宅為平臺,通過物聯(lián)網(wǎng)技術(shù)連接家居環(huán)境中的設(shè)備,提供家電控制、遠(yuǎn)程控制、環(huán)境監(jiān)測、危險(xiǎn)預(yù)警、安全監(jiān)控等多種智能化家庭服務(wù)[1]。但目前對于傳統(tǒng)智能家居而言,所有相關(guān)數(shù)值均為提前預(yù)設(shè),使得用戶無法獲得更加個(gè)性化的服務(wù)。
本文利用物聯(lián)網(wǎng)技術(shù)和WiFi無線通信技術(shù)建立基于機(jī)器學(xué)習(xí)的智能家居系統(tǒng)的硬件部分,采用K最近鄰模型以及隨機(jī)森林模型構(gòu)建智能家居系統(tǒng)的機(jī)器學(xué)習(xí)部分。由阿里云生活物聯(lián)網(wǎng)平臺提供的云智能APP組成軟件部分。結(jié)合無線通信技術(shù)、物聯(lián)網(wǎng)技術(shù)、人工智能機(jī)器學(xué)習(xí)技術(shù),構(gòu)建一個(gè)能夠?qū)τ脩魝€(gè)性化定制的智能家居系統(tǒng)。系統(tǒng)檢測到用戶返回家中后進(jìn)行家中信息檢測,運(yùn)用網(wǎng)絡(luò)數(shù)據(jù)挖掘技術(shù)挖掘數(shù)據(jù),并與上傳到阿里云平臺的數(shù)據(jù)相合并,通過Python進(jìn)行數(shù)據(jù)分析。將不同的數(shù)據(jù)分別送入不同的機(jī)器學(xué)習(xí)模型中,從而通過機(jī)器學(xué)習(xí)得出結(jié)論[2],并反饋到用戶端。本智能家居系統(tǒng)通過分析數(shù)據(jù)掌握用戶對某一特定環(huán)境的需求,并提供個(gè)性化、智能化的私人定制服務(wù)。
本文采用分布性好、靈活性高的阿里云平臺作為系統(tǒng)的云服務(wù)器。本文按照物聯(lián)網(wǎng)四層架構(gòu)將系統(tǒng)分為感知層、傳輸層、平臺層和應(yīng)用層[3]。本系統(tǒng)總體設(shè)計(jì)如圖1所示。底層單片機(jī)設(shè)備監(jiān)測數(shù)據(jù)并通過MQTT上傳到阿里云平臺,再通過阿里云平臺提供的API下載傳輸?shù)接脩舻氖謾C(jī),同時(shí)上傳到終端進(jìn)行機(jī)器學(xué)習(xí)。然后將終端學(xué)習(xí)結(jié)果反饋的數(shù)據(jù)通過MQTT傳輸?shù)絾纹瑱C(jī)中進(jìn)行反向控制[4]。
圖1 系統(tǒng)整體的框架
選用ESP8266芯片作為核心板,負(fù)責(zé)整體的控制與感知,各類傳感器作為感知端口,核心板與其他控制器件作為控制端。中間件采用輕量級且常用的MQTT作為傳輸層協(xié)議,采用CSMA即IEEE802.11協(xié)議作為計(jì)算機(jī)網(wǎng)絡(luò)中數(shù)據(jù)鏈路層協(xié)議,便于用戶傳輸數(shù)據(jù)和接收數(shù)據(jù)。本文采用阿里云生活物聯(lián)網(wǎng)平臺作為平臺層,其具有優(yōu)秀的物數(shù)模型以及合理的API接口,便于用戶接收和分析數(shù)據(jù)以及反向控制。通過分析和調(diào)用數(shù)據(jù),設(shè)計(jì)符合當(dāng)前用戶需求的機(jī)器學(xué)習(xí)算法模型,并對用戶行為繼續(xù)進(jìn)行分析[5]。
根據(jù)系統(tǒng)的硬件架構(gòu)以及智能家居系統(tǒng)要求,本文選取較為常用且容易被替代的傳感器。系統(tǒng)硬件電路設(shè)計(jì)以簡單、方便、靈活為原則。目的是為了提高系統(tǒng)的實(shí)用性、可擴(kuò)展性以及穩(wěn)定性。結(jié)合各個(gè)元件的功能特點(diǎn),實(shí)現(xiàn)智能家居的控制與檢測。本智能家居系統(tǒng)采用干電池、接入電腦、移動(dòng)電源供電方式。將不同場景環(huán)境檢測端口檢測的信息傳送到阿里云生活物聯(lián)網(wǎng)平臺,采用DHT11、WS2812-1以及三腳光敏傳感器進(jìn)行檢測。DHT11主要應(yīng)用于檢測屋內(nèi)空氣溫度和濕度情況,其DATA接口主要接在I/O13端口中;WS2812雙紅外用于檢測家中是否有人,其DATA接口主要接在I/O10以及I/O11端口內(nèi);光敏傳感器主要接在I/O12。繼電器接在I/O14、I/O15中。舵機(jī)接口通過轉(zhuǎn)接板接在I/O2口中,方便用戶隨時(shí)知曉家中情況。硬件結(jié)構(gòu)連接如圖2所示。
圖2 硬件結(jié)構(gòu)連接
由于傳感器采集的數(shù)據(jù)以及設(shè)備通過對控制器進(jìn)行操作所觸發(fā)的事件在一定程度相互關(guān)聯(lián),所以需要對傳感器所檢測數(shù)據(jù)的規(guī)格基于一定的環(huán)境進(jìn)行判斷,可以通過多特征值對某一特征值進(jìn)行判定[6]。阿里云平臺中生活物聯(lián)網(wǎng)平臺提供API,使用Python將文件格式轉(zhuǎn)換為CSV文件。本智能家居系統(tǒng)設(shè)計(jì)了一套基于多變量的數(shù)據(jù)采集格式,見表1所列。
表1 傳感器數(shù)據(jù)采集格式
關(guān)于智能家居系統(tǒng)數(shù)據(jù)采集格式具體說明如下:
(1)時(shí)間(Time):是指智能家居系統(tǒng)被用戶所感知或者是操作的時(shí)間、用戶行為的開始或者結(jié)束的時(shí)間,用于區(qū)分室外環(huán)境。
(2)狀態(tài)(Sensor_State):是指智能家居系統(tǒng)的狀態(tài),如工作、異常、休眠狀態(tài)。
(3)類別(Sensor_Catagory):是指智能家居系統(tǒng)傳感器的類別,每一種傳感器均有不同的傳感模式類型,根據(jù)傳感器的類別可以判斷該數(shù)據(jù)所適用的場景。
(4)數(shù)據(jù)(Sensor_Data):該智能家居設(shè)備所采集的數(shù)據(jù),與設(shè)備類別配合使用。
(5)名稱(Sensor_name):每一模塊的功能性描述。
根據(jù)當(dāng)前情況進(jìn)行網(wǎng)絡(luò)爬蟲,并分析當(dāng)前日期的天氣情況,針對檢測的信息共同構(gòu)建數(shù)據(jù)庫如下:
(1)Time時(shí)間:觀察所處時(shí)間,對于機(jī)器學(xué)習(xí)模型和天氣信息的爬取是最重要的。
(2)Sensor_State設(shè)備狀態(tài):根據(jù)用戶是否在家,判斷是否進(jìn)入休眠模式。
(3)Sensor_Catagory類別:所獲得數(shù)據(jù)對應(yīng)的傳感器。
(4)Sensor_name名稱:設(shè)備名稱。
(5)Temperature室內(nèi)溫度:系統(tǒng)感知用戶調(diào)節(jié)了室內(nèi)溫度時(shí)所上傳的數(shù)據(jù)。
(6)Apparent_Temperature室外溫度:通過挖掘技術(shù)挖掘的室外相關(guān)數(shù)據(jù)源,可判斷用戶在該環(huán)境下需要的室內(nèi)溫度。
(7)Humidity濕度:即室外空氣濕度。通過此室外空氣濕度數(shù)據(jù),判斷用戶在該環(huán)境下的空氣溫度和空氣濕度需求。
(8)Visibility能見度:通過挖掘技術(shù)所感知到的室外能見度,判定室外PM2.5值,進(jìn)而對室內(nèi)濕度進(jìn)行判斷。
(9)Pressure壓強(qiáng):通過挖掘技術(shù)感知到的室外壓強(qiáng),判斷室內(nèi)濕度值。
(10)Wind_Speed風(fēng)速:通過挖掘技術(shù)感知到的室外風(fēng)速,判斷室內(nèi)溫濕度值。
(11)Cloud_Cover云層:通過挖掘技術(shù)感知到的室外云層厚度,判斷室內(nèi)溫濕度值。
(12)DewPoint露點(diǎn)值:通過挖掘技術(shù)感知到的室外露點(diǎn)值,判斷室外晝夜溫差值,進(jìn)而判斷室內(nèi)溫濕度。
(13)Wind_Bearing風(fēng)力:通過挖掘技術(shù)感知到的室外風(fēng)力值,判斷室內(nèi)溫濕度值。
(14)Icon天氣:通過挖掘技術(shù)感知到的室外天氣,對室內(nèi)溫濕度值進(jìn)行量化判斷。
根據(jù)該數(shù)據(jù)庫可知較為豐富的室外和室內(nèi)環(huán)境數(shù)據(jù),用戶可以據(jù)此對家中溫濕度等各項(xiàng)數(shù)據(jù)進(jìn)行較為準(zhǔn)確的判斷。
本文采用隨機(jī)森林模型對于溫度值、濕度值進(jìn)行判定。采用KNN預(yù)測進(jìn)行判定時(shí)需要兩個(gè)參數(shù),即時(shí)間和狀態(tài)。對MQTT服務(wù)器獲取到的數(shù)據(jù)信息進(jìn)行預(yù)處理,并將行為分析模型進(jìn)行規(guī)范化處理得到表2。
表2 用戶行為數(shù)據(jù)庫信息
通過光照傳感器感知環(huán)境光照信息,建立光照強(qiáng)度數(shù)據(jù)分析模型,通過阿里云平臺API下載并規(guī)范數(shù)據(jù),見表3所列。
表3 光照強(qiáng)度數(shù)據(jù)庫信息
傳感器檢測到用戶在家時(shí)即開始運(yùn)行檢測功能。當(dāng)用戶在家時(shí),每1 h進(jìn)行一次感應(yīng),直到用戶離開家中或者是進(jìn)入休眠模式,通過阿里云API平臺下載數(shù)據(jù),通過Python將JSON格式數(shù)據(jù)轉(zhuǎn)化為CSV文件,用戶行為信息實(shí)體如圖3所示;并通過網(wǎng)絡(luò)挖掘技術(shù)爬取當(dāng)日天氣信息,與上述文件合并。對經(jīng)過Pandas、Numpy、Seaborn數(shù)據(jù)包處理后的數(shù)據(jù)進(jìn)行整合[6]。整體過程如圖4所示。
圖3 用戶行為信息實(shí)體
圖4 合并整體過程
本文采用Beatiful Soup、Requests進(jìn)行數(shù)據(jù)挖掘,例如挖掘天氣相關(guān)信息,得到天氣的各類指標(biāo);通過阿里云API將其轉(zhuǎn)化為CSV文件并通過Pandas包進(jìn)行合并。
從26 280個(gè)數(shù)據(jù)集中進(jìn)行篩選,并從21個(gè)特征中逐一進(jìn)行篩選,通過缺失值補(bǔ)充,加入屋內(nèi)狀態(tài)等因素。建立皮爾遜相關(guān)系數(shù)矩陣,得出室外溫度、露點(diǎn)值、月份、濕度、能見度等相關(guān)度較高的數(shù)據(jù)[7],分別計(jì)算標(biāo)準(zhǔn)差、最小值、第一四分位數(shù)、第二四分位數(shù)、第三四分位數(shù)[8]。最終發(fā)現(xiàn)特征中含有空缺值以及差距較大的極值。根據(jù)它們的表現(xiàn)情況,采用Numpy與Pandas對極值元組進(jìn)行剔除并填補(bǔ)空缺值。鑒于數(shù)據(jù)量巨大,決定采用在該量級的數(shù)據(jù)集表現(xiàn)較好的隨機(jī)森林算法。
隨機(jī)森林模型(Random Forest)是利用多個(gè)決策樹對樣本進(jìn)行訓(xùn)練、分類和預(yù)測的一種算法。在對數(shù)據(jù)進(jìn)行分類的同時(shí),還可以給出各個(gè)變量的重要性評分,評估各個(gè)變量在分類中所起的作用[8],如圖5所示。利用隨機(jī)森林模型可以評估出用戶所期望的室內(nèi)溫度值。具體步驟如下:
圖5 隨機(jī)森林回歸算法示意圖
(1)建立皮爾遜相關(guān)系數(shù)矩陣,得出室外溫度、露點(diǎn)值、月份、濕度、能見度等相關(guān)度較高的數(shù)據(jù)。特征數(shù)目取為5,并用未抽到的用例作預(yù)測,評估其平均絕對誤差。
(2)選取隨機(jī)森林模型數(shù)據(jù)集,根據(jù)時(shí)間序列分組,將2/3的數(shù)據(jù)作為訓(xùn)練集,并選取1/3的數(shù)據(jù)作為測試集[9]。建立隨機(jī)森林模型,表達(dá)式為:
將輸入空間劃分成M個(gè)部分,最終生成的決策樹為:
本系統(tǒng)基于KNN預(yù)測光照強(qiáng)度,基于用戶在家時(shí)的光照強(qiáng)度對窗簾和LED的狀態(tài)進(jìn)行判斷。將預(yù)測結(jié)果反向輸入到模型中[10]。將總體數(shù)據(jù)的70%作為訓(xùn)練集、30%作為測試集,并進(jìn)行機(jī)器學(xué)習(xí),如圖6所示。
圖6 訓(xùn)練集和測試集的劃分
具體思想如下:
(1)當(dāng)檢測到用戶在家時(shí)將光亮值穩(wěn)定在一個(gè)固定值,并記錄到燈光數(shù)據(jù)庫中。
(2)當(dāng)用戶回到家中,對當(dāng)時(shí)時(shí)間進(jìn)行劃分,精確到某一時(shí)刻。
(3)通過式(4)的歐氏距離公式,按照升序距離進(jìn)行判斷選出前三個(gè)點(diǎn)(本文選取k=3),即距離樣本點(diǎn)最近的三個(gè)點(diǎn)。
(4)對燈光數(shù)據(jù)進(jìn)行加權(quán)平均,所得即為設(shè)定燈光值,并將燈光值控制在該值,高于該值時(shí)拉上窗簾,若低于該值則打開LED燈。
(5)檢驗(yàn):通過再次檢測用戶的行為,即是否對窗簾以及LED燈進(jìn)行控制,進(jìn)行重新判斷。
訓(xùn)練集與測試集擬合程度如圖7所示。
圖7 測試集與訓(xùn)練集擬合程度
為了檢測系統(tǒng)整體開發(fā)是否符合智能家居的設(shè)計(jì)需求,本文主要從系統(tǒng)的硬件功能和用戶行為分析功能兩方面進(jìn)行測試[11]。
首先要從系統(tǒng)的功能上進(jìn)行測試,測試系統(tǒng)功能是否可以長期穩(wěn)定;其次傳感器檢測的數(shù)據(jù)是否真實(shí)有效;最后檢測智能家居系統(tǒng)是否可以全面穩(wěn)定地運(yùn)行。如果均符合預(yù)期,即通過測試;如若未通過測試,則反復(fù)修改直到通過為止[12]。當(dāng)基于機(jī)器學(xué)習(xí)的智能家居系統(tǒng)通過了各項(xiàng)功能測試,系統(tǒng)就能夠確保監(jiān)測到數(shù)據(jù)的正確性和整個(gè)系統(tǒng)的穩(wěn)定性、可靠性,達(dá)到預(yù)期目標(biāo)見表4所列。
表4 系統(tǒng)功能測試
進(jìn)行數(shù)據(jù)測試的目的是通過對各個(gè)傳感器的測試以及網(wǎng)絡(luò)挖掘測試,檢測智能家居系統(tǒng)中傳感器以及網(wǎng)絡(luò)挖掘技術(shù)中各個(gè)節(jié)點(diǎn)是否可以平穩(wěn)運(yùn)行,是系統(tǒng)進(jìn)行用戶行為分析中的最為關(guān)鍵的一步。測試情況見表5所列?;跈C(jī)器學(xué)習(xí)的智能家居系統(tǒng)中對于數(shù)據(jù)要求極其嚴(yán)格,如果數(shù)據(jù)有了缺失值,則需要補(bǔ)充和去極值。
表5 各傳感器測試
本部分主要進(jìn)行測試行為分析。測試模塊的平均絕對誤差值MAE模型為[13]:
通過計(jì)算MAE的值可以清晰地算出來該模型的確切誤差值,確定在該環(huán)境下與真實(shí)值的差距應(yīng)該控制在多少[14]。
通過Matplotlib數(shù)據(jù)包將誤差進(jìn)行可視化展示,如圖8所示??梢钥闯鲭S機(jī)森林模型展現(xiàn)了較好的性能。由公式(5)可以得到KNN算法中MAE值為7.878,隨機(jī)森林模型的MAE值為0.448。因?yàn)镵近鄰模型數(shù)據(jù)較小,所以展現(xiàn)的性能不是極佳的,但總體而言不超過測試所需要的結(jié)果。而隨機(jī)森林模型相對較好。系統(tǒng)對用戶的預(yù)測值與真實(shí)值之間的契合度較高,比較符合用戶行為分析模型所要求的值,滿足設(shè)計(jì)要求,兩個(gè)行為分析模型均取得了良好的效果[15]。
圖8 隨機(jī)森林分析模型測試
系統(tǒng)響應(yīng)速度較快,其中連接家庭WiFi消耗的時(shí)間較多,但整體上仍在用戶可接受的范圍之內(nèi)。綜上所述,系統(tǒng)對于用戶操作的響應(yīng)速度滿足設(shè)計(jì)要求[16]。用戶行為分析模型響應(yīng)速度見表6所列。圖9為云智能APP測試,圖10為阿里云上傳物數(shù)模型測試。
表6 系統(tǒng)響應(yīng)速度
圖9 云智能APP測試
圖10 物數(shù)模型測試
針對以往物聯(lián)網(wǎng)智能家居系統(tǒng)中存在的用戶定制化程度不高以及現(xiàn)有的行為分析算法運(yùn)行時(shí)間較長的問題,本文構(gòu)建了一種基于用戶行為分析模型的智能家居系統(tǒng)。該系統(tǒng)能夠?yàn)橛脩袅可矶ㄖ苽€(gè)性化的環(huán)境數(shù)據(jù),提高用戶體驗(yàn)感。