會思考的飲水機:基於時間序列分析節能30%+

周建丁發表於2016-07-22

本文來自AbleCloud研發團隊的實踐,通過對歷史資料的建模,學習出特定的規律,並應用此規律預測某臺飲水機在未來某個時間點是應該開啟電源燒水還是關閉電源以節能。

概要

瑞典愛立信公司的最新研究報告顯示,智慧手機使用者數量在2016年將首次超過功能手機,但兩者都將在未來幾年內迅速被物聯網裝置超越。該公司預計,到2018年,連線在物聯網上的感測器、家電和機器的數量將超過手機,成為最大類別的連線裝置。到2021年,全球280億臺連線裝置中有近160億臺將是物聯網裝置,從智慧城市、智慧汽車和智慧家庭到移動健康護理和診斷裝置。

可以想象,到那時家家戶戶每時每刻都在使用著智慧裝置;然而,目前所謂的“智慧裝置”絕大部分都只是傳統裝置新增一個聯網模組,新增一個或幾個感測器,他們能彙報位置,用電量,感受溫度溼度並上傳這些資料;再進一步,他們可能能夠聽懂你說什麼,可能能夠看懂你在做什麼(附加了語音識別和影像識別功能),然後呢?然後他們的行為仍然完全依賴或者部分依賴人類的指令:空調仍然需要人們通過APP或者語音來控制開關;體重秤仍然只能報告你這周漲了幾兩體重或者你的體脂現在維持在什麼水平;早上窗簾仍然需要你告訴他開他才會開;飲水機仍然不知疲倦的燒呀燒。這樣的裝置雖然能聽,能說,能看,但是仍然還不能思考,我們認為這樣的智慧裝置還只是“偽智慧”,還算不上真正的智慧裝置。

我們眼中的智慧裝置要會思考。空調了解你在什麼季節喜歡什麼溫度、溼度;體重秤能根據你的健康狀況推薦飲食,設定運動計劃;飲水機知道什麼時候該燒水,什麼時候該休息等等。只有裝置真的學會思考以後,才能把人從繁瑣的對裝置的管理工作中解放出來。這就是我們的目標——讓裝置學會思考。

基於此,我們嘗試改造我們公司的“智慧飲水機”。目前我們公司的智慧飲水機只能連線wifi,定時通過wifi上報用電量,並能通過我們的雲端Matrix系統對飲水機的開關進行控制。我們要讓他變得更“智慧”——能自主決定是否需要燒水,在什麼時候燒水,在什麼時候關閉。這樣做至少有以下幾個好處:

  1. 減少我們喝“千滾水”或者叫“千沸水”的次數;
  2. 節能環保;
  3. 解放我們自己,讓我們每天下班時不用再記得去把飲水機的電源斷掉,並且在早上來到公司還要記得把飲水機開啟。

系統架構

我們的智慧飲水機的自動控制功能是通過Matrix和Inspire來構建的。Matrix和Inspire是AbleCloud PaaS雲平臺上兩個主要的系統。Matrix負責裝置和使用者的接入,以及對廠商的裝置和使用者進行管理,同時還允許廠商定製開發其需要的服務。Inspire是大資料分析平臺,其儲存使用者、裝置、App等資料,同時給我們的客戶提供巨集觀和微觀粒度的視覺化資料分析功能(關於Matrix和Inspire的功能這裡不展開說明,有興趣的可以在www.ablecloud.cn上進行了解)。

智慧飲水機總體架構圖如圖1。

  1. 聯網的智慧裝置在聯網啟用後會註冊到Matrix平臺,終端使用者可以通過我們Matrix雲平臺對裝置進行控制,比如:開機,關機等(取決於廠商開放給終端使用者的許可權)。
  2. 智慧裝置執行時的資料會定期通過UDS上報到Inspire系統中。
  3. Inspire系統中的演算法模組對上報資料進行建模並輸出模型。
  4. Inspire系統中的控制模組載入模型,並通過模型預測是否應該開啟或者關閉飲水機,然後通過UDS對裝置進行控制。

圖片描述

圖 1

演算法簡述

我們的目標是給每一臺飲水機安裝一個大腦,讓他們能夠根據自己的歷史行為學習出規律,從而在未來指導或控制其行為。本質上這是一個預測行為:通過對歷史資料的建模,學習出特定的規律,並應用此規律預測某臺飲水機在未來某個時間點是應該開啟電源燒水還是關閉電源以節能。這裡其實隱含了一個假設,飲水機使用者在相對的一段時間內(比如2周)的使用習慣是一定的。用機器學習語言描述就是:通過對歷史資料建模,得到模型,並應用模型做預測;隱含假設:歷史資料和未來的資料是同分布的。

思路

具體做法上有兩個不同的思路:

  1. 根據使用者過去對飲水機的開和關的操作情況,直接估計每天的開機時段和關機時段。現在市面上的某些智慧空調、恆溫器就是以這種方法為基礎實現的。這種方法的優點是簡單,不需要複雜的處理,能夠快速轉化成程式碼實現;缺點也很明顯:需要有使用者操作的資料;也不能識別出開機過程中使用者不需要的時間段(比如飲水機雖然一整天都開機,但不代表每時每刻使用者都需要)。這種方法只適合某些特定的場景,比如只能拿到裝置操作資訊,拿不到裝置的用電量,或者其他裝置相關的資料的情景。

  2. 把一天24小時(也可以是一週或者一個月,視不同的業務場景而定)離散化成若干時間段,構造成一個時間序列,然後借鑑經濟學中時間序列分析的思路做預測。

在我們這個智慧飲水機的場景下,一方面我們拿不到飲水機的操作行為資料,而且操作行為對預測飲水機的使用幫助不大;另一方面用電量更能描述飲水機的工作狀態。因此我們在第二種方法上做一些來預測飲水機的使用情況。

方法

我們把一天的24小時劃分成大小相等的K個時間窗,我們的飲水機每3秒會上報一次用電量,所以我們可以統計每個時間窗的用電量,這樣我們把問題轉化成一個標準的時間序列分析問題,可以用時間序列分析方法分析。

  1. 首先,我們的資料以天為週期迴圈的,不同天的同時段表現近似;
  2. 其次,我們的資料還是以周為週期迴圈的,週末的表現和非週末的表現是不同的;
  3. 再次,可以想象,隨著季節的變化,對熱水的需求也是有變化的,冬天自然會多一些,夏天自然會少一些,因此我們的資料還是有季節性的。
  4. 另外,我們的一臺飲水機的熱水供應量是有限的,如果公司的人增多,對熱水的需求量增大,那麼只能靠增加飲水機來解決,所以單看一臺飲水機,是不具備長期變動趨勢的特點的。

綜上,可供我們選擇的演算法有:算術平均法、加權平均法以及不考慮長期變動趨勢的季節指數法。

算數平均法

算數平均法就是以觀察期資料之和除以求和時使用的資料個數(或資料期數),求得平均數。假設 為n期觀察到的歷史資料,那麼算數平均數可依下列公式求得:

圖片描述

在此例中,我們嘗試把不同天同時段的用電量資料放在一起,單獨成為一個時間序列,然後運用此方法來預測某時段的用電量。

加權平均法

加權平均法就是在求平均數時,根據觀察期各資料重要性的不同,分別給以不同的權數後加以平均的方法。這種方法能在一定程度上處理帶長期變動趨勢的情況。

假設x1,x2,……,xn為n期觀察到的歷史資料;w1,w2,……,wn為觀察期資料相對應的權數,那麼加權平均數可依下列公式求得:

圖片描述

這種方法的缺點是每一期的權數不是很容易確定,需要大量的實驗對比。同樣地,在此例中我們也把同一時段的資料彙總到一起單獨成為一個時間序列,使用一組等差數列作為權重。

不考慮長期變動的季節指數法

上面兩種方法實現簡單,但是在預測週末的用電情況時需要人工干預。如果我們把週末和非週末理解成兩個不同的季節,那麼可以借鑑季節指數法。首先,我們通過把每週分為工作日和週末兩個季節,先預測某一整天的用電量;然後再在天內的各個時段間採用“變種季節指數法”來預測某一時段的用電量(正常的季節指數法是根據已知的一個季節來推測另一個季節的結果,而這裡的變種季節指數是通過總體的值來預測一個季節的值)。季節指數法可表示為下式:

圖片描述
其中:ŷi為待預測季節的值;yi為已知季節的值;a’i為待預測季節的季節指數;ai為已知季節的季節指數。

變種的季節指數法可表示為:

圖片描述
其中:ŷi為待預測季節的值;Y為一個週期的總值(這裡指通過上一個季節指數法預測出來的值);a’i為待預測季節的季節指數。

判斷開關機狀態

以上方法用於預測某一時段的用電量,但當我們預測出用電量之後還需要判斷這個時段是否應該開機。直觀的,當某一時段的用電量很高的時候,這應該是飲水機處於用水期,應該開啟;當某一時段的用電量比較低的時候,這應該是飲水機處於空閒期,應該關閉。因此,我們需要找到一個用來判斷飲水機開關狀態的電量閾值——T。閾值——T的選取也有多種方法,比如可以根據經驗選擇某一段無人使用時間的最大用電量;或者選擇某一段有人使用時間的最小值;或者使用某一段時間用電量的平均值;當然也可以訓練一個簡單的二元分類器。

效果展示

在我們的模型中時間窗我們設定為0.5小時,即一天24小時劃分為K=48個時間窗;我們使用過去一個月的資料進行訓練;閾值我們在這裡使用單個時間窗在全時段的用電量平均值作為閾值。即:

圖片描述
其中:K=48,eij表示第i天,第j個時間窗的用電量。通過對比三種不同的演算法的效果,我們發現“不考慮長期變動的季節指數法”要略微優於“算數平均法”和“加權平均法”。這裡我們僅展示我們的最終模型的效果。

應用了不考慮長期變動的季節指數法模型後,我們的飲水機開關時段如圖2:

圖片描述

圖 2

圖2中,藍色覆蓋的時間段表示飲水機處於開機狀態;白色區域的時間段表示飲水機處於關機狀態。這個圖是符合我們的直觀認知的:22點到早上9點公司極少有人使用飲水機;中午會有一段時間大家在進行午休,不會使用飲水機;下午有段時間大家去吃完飯也不會使用飲水機。值得一提的是,下午16:30 ~ 17:00 這段時間大家不喝熱水是我們無法通過經驗判斷出來的;這個時間段為什麼是沒有問題的呢?因為我們沒有聽到來自同事們的抱怨。

圖片描述

圖 3

圖3是應用了自動控制模型和沒有應用自動控制模型各個時段用電量的對比。從中可以看到,在夜晚無人使用的時候,如果不做控制那麼飲水機仍然會頻繁反覆的燒水、耗電;而在早上9點的時候模型組(紅色)用電量比非模型組(藍色)高很多的原因是經過一夜,飲水機的水很涼了,剛一開機就會用很多的電量去努力把冷水燒熱。

圖片描述

圖 4

圖4是使用模型控制和不使用模型控制的一天中各個時段的總用電量的對比。從中我們可以看到,通過使用自動控制模型,在滿足用水的需求的情況下,我們把一臺飲水機的用電量從0.8度降到了0.53度,節約用電33.75%;同時我們還避免了同事們飲用大量的“千滾水”。

後續工作

以上工作我們只是在一臺只能上報用電量的飲水機上做的嘗試。雖然資料和特徵都很少,但已經很大程度上能滿足我們的需求了。然而,當智慧裝置擁有更多的感測器的時候,我們其實可以做更多更有意思的事。比如,如果飲水機能上報熱水用量和冷水用量,那我們可以改進我們的演算法獲得更精準的結果;如果能夠配合上檢測房間是否有人的感測器,那麼對夜晚的控制也會更加準確;甚至我們還可以結合實時的天氣氣溫情況做更加人性化的控制。

另外,在演算法層面我們還可以嘗試更多的方法。比如ARMA、ARIMA演算法都是在時間序列分析中使用的比較多的,我們現在也正在嘗試使用這兩個演算法來解決我們的問題。同時,隨著深度學習的發展,已經用人把LSTM演算法用在了序列分析中,用於擬合某個曲線,未來我們也會嘗試採用深度學習的方法來更好的學習使用者習慣。

責編:周建丁(zhoujd@csdn.net)

2016 年 9 月 23-24 日,由 CSDN 和創新工場聯合主辦的“MDCC 2016 移動開發者大會• 中國”(Mobile Developer Conference China)將在北京• 國家會議中心召開,來自iOS、Android、跨平臺開發、產品設計、VR開發、移動直播、人工智慧、物聯網、硬體開發、資訊無障礙10個領域的技術專家將分享他們在各自行業的真知灼見。

從即日起至8月7日23:59,MDCC 2016移動開發者大會門票5折優惠。五人以上團購更有特惠,限量供應,預購從速。票務詳情連結

相關文章