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