劉 坤,楊金瑞,薛 東,汪 瑞,王 珍
(南京中醫藥大學 人工智能與信息技術學院,江蘇 南京 210046)
失眠是指長時間睡眠質量低下,并伴有其他臨床癥狀,且嚴重影響患者正常的學習、工作等日常生活[1]。 “好睡眠,好身體”成為越來越多人追求睡眠質量的口號。 因此,市場上也隨之應運而生了許多與睡眠相關的App,如小睡眠、蝸牛等,但這些App 良莠不齊,普遍存在助眠方式單一、助眠方法效果不佳等局限性與缺陷。
為了幫助失眠人群進行睡眠管理,解決“睡不著”“睡得淺”以及“睡不好”等睡眠相關問題,睡眠測評監測預警App 主要提供睡眠測評、監測、分析和預警功能。 以“好睡眠,好身體”的服務理念,為用戶提供助眠一站式服務,幫助用戶提高睡眠質量。 以睡眠測評和監測數據為基礎,為用戶推薦個性化助眠方案,并監督用戶執行。 助眠商城售賣與方案相配套的助眠商品,如中醫助眠茶、助眠藥枕、助眠香薰等。
App 采用C/S 三層體系結構模式,包括UI 界面層、中間業務邏輯層以及數據庫服務層[2]。 移動客戶端主要通過發送http 請求來獲取服務器端響應的數據。 首先,通過藍牙獲取實時睡眠監測數據,并上傳到遠端服務器;其次,通過服務器強大的數據分析功能,并且利用隨機森林的算法,對上傳的數據進行分析以及預警,并將預警信息及時反饋給移動客戶端。 用戶通過藍牙上傳或者手動輸入睡眠監測數據,移動端App 將數據傳輸至服務器,云服務端調用隨機森林算法、基于用戶的協同過濾推薦算法等,實現睡眠質量預警、助眠方案推薦等功能,幫助用戶日常管理睡眠、持續化調理,防失眠于未然。 系統總體結構如圖1 所示。

圖1 App 系統結構
App 界面設計以“淺綠色”為基調,符合助眠“主題”,給用戶一種清新、活力的感覺。 首頁如圖2 所示,包括睡眠問卷測評、睡眠監測與分析預警、助眠方案推薦、助眠方案監督打卡以及方案效果反饋等模塊。

圖2 首頁
系統根據匹茲堡睡眠指數生成睡眠測評問卷,用戶通過填寫問卷,對自己近期的睡眠質量有初步的認知。 在用戶提交完問卷之后,系統依據匹茲堡睡眠指數,計算測評評分,并給出初步的睡眠質量等級。 具體實現如圖3 所示。

圖3 睡眠測評問卷
(1)系統根據匹茲堡睡眠質量指數生成問卷。(2)用戶提交問卷。 (3)用戶獲取當前填寫問卷的評分。 (4)用戶查看所有歷史問卷的平均評分、最高評分、最低評分。
用戶在入睡之前,可以選擇合適的音樂幫助自己更好的入眠。 然后,通過手環等硬件設備監測用戶每日的入睡時長、睡眠時長、翻身次數等。 由于手環屬于第三方硬件設備,需要將監測的睡眠數據同步到Google Fit 上,管理端通過官方的API 發送數據請求,獲取睡眠數據,再將數據存儲到部署于阿里云服務器上的Mysql 數據庫。 App 通過http 請求數據庫服務器,獲取用戶的睡眠數據,并根據獲取的數據生成睡眠監測報告。 管理端獲取監測數據之后,通過大數據分析建立的隨機森林預測模型,獲取預測結果,并基于此結果,產生預警通知,具體實現如圖4 所示。

圖4 睡眠監測
(1)用戶在入睡前,選擇適合自己入眠的音樂。(2)監測用戶的入睡時間、入睡時長、睡眠時長、周邊環境噪音、翻身次數等。 (3)用戶獲取當前的睡眠質量評分。 (4)用戶查看睡眠監測日報告,如睡眠評分、睡眠時長等。 (5)用戶獲取一周內的睡眠監測報告的統計分析結果,如本周睡眠時長、周平均值統計(平均入睡時間、綜合得分、平均睡眠時長)、同上周對比(睡眠時長、入睡時間)、睡眠綜合分析。 (6)系統發送預警通知。
以用戶的年齡、性別、睡眠質量等級等特征為基礎,采用協同過濾算法,找到和目標用戶特征相似的用戶集合中評價最優,即效果最佳的方案,最后將這個方案推薦給目標客戶[3]。 如果對系統推薦的方案不是很感興趣,可以選擇更換助眠方案,直至客戶滿意為止。具體實現如圖5 所示。

圖5 助眠方案推薦
(1)根據問卷評分、睡眠質量評分,用戶獲取自己的專屬定制助眠方案。 (2)系統根據用戶睡眠質量的不斷變化,及時更新方案。
系統會根據用戶選擇的助眠方案,細化方案中的內容,生成每日需要完成的任務,App 會以通知的形式監督用戶打卡完成。 每日任務對應的都會有一個教程,用戶根據教程完成任務。 當所有任務完成之后,方案的總體進度會向前進。 具體實現如圖6所示。

圖6 方案監督打卡
(1)系統根據助眠方案發布每日任務。 (2)用戶打卡完成方案生成的每日任務。 (3)用戶查看方案總體完成情況。
當任務進度完成之后,系統會收集用戶對于此方案的評價,以便及時調整、更新方案。 具體實現如圖7所示。

圖7 方案效果反饋
(1)系統在用戶完成助眠方案之后發布方案治療效果反饋表。 (2)用戶填寫方案效果反饋表。 (3)系統收集反饋,進行統計分析,采取相應措施。
App 以匹茲堡睡眠指數為基礎,生成睡眠質量測評問卷,并結合智能手環監測用戶睡眠數據,借助機器學習以及數據挖掘算法,對睡眠質量進行智能分類,分為正常、輕度失眠、中度失眠以及重度失眠四個等級。同時,App 還建立隨機森林預測模型,對睡眠質量進行等級預測,及時為輕度失眠、中度失眠以及重度失眠的用戶進行預警通知,并通過分析用戶睡眠特征,進行個性化助眠方案推薦。
目前,在機器學習算法中,決策樹由于其計算公式簡單、效率高,而受到廣泛使用,但單個決策樹不穩定,容易產生過于擬合的問題。 隨機森林是將多個決策樹通過集成的方法融合在一起,最終結果由每個決策樹的結果綜合得到[4]。
首先,從多維度分析不同基本信息的用戶的睡眠質量特性,并根據特征差異性對用戶進行群體劃分,如性別、年齡段。 其次,利用Person 相關性分析,得到睡眠監測數據中影響睡眠質量等級的強關聯因素。 最后,采用隨機森林算法分別對隸屬不同群體的用戶建立睡眠質量等級預測模型。 最終確定將預測用戶的性別、年齡、入睡時間、入睡時長、睡眠時長、環境噪音、翻身次數、夢話次數等作為參數,通過構建的隨機森林模型進行訓練,從而預測用戶的睡眠質量等級。 隨機森林預測模型的實現框架,如圖8 所示。

圖8 隨機森林預測模型框架
利用年齡段、體重、性別、睡眠質量等級等用戶特征,通過計算歐幾里得距離,得到用戶之間的相似度。先找到和目標用戶特征相似的用戶集合;再找到這個集合中用戶評價較高,即用戶認為助眠效果尚可的方案;最后將這個方案推薦給目標客戶。
隨機森林是利用多個決策樹對樣本進行訓練、分類并預測的一種算法,主要應用于回歸和分類場景。在對數據進行分類的同時,還可以給出各個變量的重要性評分,評估各個變量在分類中所起的作用[5]。 主要過程為構建訓練集和驗證集、生成決策樹、組合模型、驗證模型。
首先,使用sklearn 庫中的train_test_split 類,將睡眠數據集按90%訓練集,10%驗證集分配。 接著,進行睡眠特征分析,在每一輪生成決策樹的過程中,從這些特征中選取若干個特征,組成新的特征集,通過使用新的特征集來生成決策樹。 由于生成的決策樹之間是相互獨立的,在進行睡眠質量等級分類時,只需要所有的決策樹投票來確定最終的分類結果[6]。 最后,只需要將未被使用過的驗證集中的數據拿來驗證最終的預測模型即可[7]。
睡眠測評與監測預警App 利用大數據技術,挖掘影響睡眠的影響因子,運用隨機森林算法,建立失眠分類模型,對于中度失眠以及重度失眠的用戶進行及時預警。 根據睡眠質量等級分類,制定中醫特色助眠方案,以用戶反饋為基礎,精準推薦。 以養代療,運用中醫治未病理念進行失眠調理,全方位、多途徑地緩解用戶的失眠狀況,提高其睡眠質量。