劉 坤,楊金瑞,薛 東,汪 瑞,王 珍
(南京中醫(yī)藥大學(xué) 人工智能與信息技術(shù)學(xué)院,江蘇 南京 210046)
失眠是指長(zhǎng)時(shí)間睡眠質(zhì)量低下,并伴有其他臨床癥狀,且嚴(yán)重影響患者正常的學(xué)習(xí)、工作等日常生活[1]。 “好睡眠,好身體”成為越來(lái)越多人追求睡眠質(zhì)量的口號(hào)。 因此,市場(chǎng)上也隨之應(yīng)運(yùn)而生了許多與睡眠相關(guān)的App,如小睡眠、蝸牛等,但這些App 良莠不齊,普遍存在助眠方式單一、助眠方法效果不佳等局限性與缺陷。
為了幫助失眠人群進(jìn)行睡眠管理,解決“睡不著”“睡得淺”以及“睡不好”等睡眠相關(guān)問(wèn)題,睡眠測(cè)評(píng)監(jiān)測(cè)預(yù)警App 主要提供睡眠測(cè)評(píng)、監(jiān)測(cè)、分析和預(yù)警功能。 以“好睡眠,好身體”的服務(wù)理念,為用戶提供助眠一站式服務(wù),幫助用戶提高睡眠質(zhì)量。 以睡眠測(cè)評(píng)和監(jiān)測(cè)數(shù)據(jù)為基礎(chǔ),為用戶推薦個(gè)性化助眠方案,并監(jiān)督用戶執(zhí)行。 助眠商城售賣與方案相配套的助眠商品,如中醫(yī)助眠茶、助眠藥枕、助眠香薰等。
App 采用C/S 三層體系結(jié)構(gòu)模式,包括UI 界面層、中間業(yè)務(wù)邏輯層以及數(shù)據(jù)庫(kù)服務(wù)層[2]。 移動(dòng)客戶端主要通過(guò)發(fā)送http 請(qǐng)求來(lái)獲取服務(wù)器端響應(yīng)的數(shù)據(jù)。 首先,通過(guò)藍(lán)牙獲取實(shí)時(shí)睡眠監(jiān)測(cè)數(shù)據(jù),并上傳到遠(yuǎn)端服務(wù)器;其次,通過(guò)服務(wù)器強(qiáng)大的數(shù)據(jù)分析功能,并且利用隨機(jī)森林的算法,對(duì)上傳的數(shù)據(jù)進(jìn)行分析以及預(yù)警,并將預(yù)警信息及時(shí)反饋給移動(dòng)客戶端。 用戶通過(guò)藍(lán)牙上傳或者手動(dòng)輸入睡眠監(jiān)測(cè)數(shù)據(jù),移動(dòng)端App 將數(shù)據(jù)傳輸至服務(wù)器,云服務(wù)端調(diào)用隨機(jī)森林算法、基于用戶的協(xié)同過(guò)濾推薦算法等,實(shí)現(xiàn)睡眠質(zhì)量預(yù)警、助眠方案推薦等功能,幫助用戶日常管理睡眠、持續(xù)化調(diào)理,防失眠于未然。 系統(tǒng)總體結(jié)構(gòu)如圖1 所示。
圖1 App 系統(tǒng)結(jié)構(gòu)
App 界面設(shè)計(jì)以“淺綠色”為基調(diào),符合助眠“主題”,給用戶一種清新、活力的感覺(jué)。 首頁(yè)如圖2 所示,包括睡眠問(wèn)卷測(cè)評(píng)、睡眠監(jiān)測(cè)與分析預(yù)警、助眠方案推薦、助眠方案監(jiān)督打卡以及方案效果反饋等模塊。
圖2 首頁(yè)
系統(tǒng)根據(jù)匹茲堡睡眠指數(shù)生成睡眠測(cè)評(píng)問(wèn)卷,用戶通過(guò)填寫問(wèn)卷,對(duì)自己近期的睡眠質(zhì)量有初步的認(rèn)知。 在用戶提交完問(wèn)卷之后,系統(tǒng)依據(jù)匹茲堡睡眠指數(shù),計(jì)算測(cè)評(píng)評(píng)分,并給出初步的睡眠質(zhì)量等級(jí)。 具體實(shí)現(xiàn)如圖3 所示。
圖3 睡眠測(cè)評(píng)問(wèn)卷
(1)系統(tǒng)根據(jù)匹茲堡睡眠質(zhì)量指數(shù)生成問(wèn)卷。(2)用戶提交問(wèn)卷。 (3)用戶獲取當(dāng)前填寫問(wèn)卷的評(píng)分。 (4)用戶查看所有歷史問(wèn)卷的平均評(píng)分、最高評(píng)分、最低評(píng)分。
用戶在入睡之前,可以選擇合適的音樂(lè)幫助自己更好的入眠。 然后,通過(guò)手環(huán)等硬件設(shè)備監(jiān)測(cè)用戶每日的入睡時(shí)長(zhǎng)、睡眠時(shí)長(zhǎng)、翻身次數(shù)等。 由于手環(huán)屬于第三方硬件設(shè)備,需要將監(jiān)測(cè)的睡眠數(shù)據(jù)同步到Google Fit 上,管理端通過(guò)官方的API 發(fā)送數(shù)據(jù)請(qǐng)求,獲取睡眠數(shù)據(jù),再將數(shù)據(jù)存儲(chǔ)到部署于阿里云服務(wù)器上的Mysql 數(shù)據(jù)庫(kù)。 App 通過(guò)http 請(qǐng)求數(shù)據(jù)庫(kù)服務(wù)器,獲取用戶的睡眠數(shù)據(jù),并根據(jù)獲取的數(shù)據(jù)生成睡眠監(jiān)測(cè)報(bào)告。 管理端獲取監(jiān)測(cè)數(shù)據(jù)之后,通過(guò)大數(shù)據(jù)分析建立的隨機(jī)森林預(yù)測(cè)模型,獲取預(yù)測(cè)結(jié)果,并基于此結(jié)果,產(chǎn)生預(yù)警通知,具體實(shí)現(xiàn)如圖4 所示。
圖4 睡眠監(jiān)測(cè)
(1)用戶在入睡前,選擇適合自己入眠的音樂(lè)。(2)監(jiān)測(cè)用戶的入睡時(shí)間、入睡時(shí)長(zhǎng)、睡眠時(shí)長(zhǎng)、周邊環(huán)境噪音、翻身次數(shù)等。 (3)用戶獲取當(dāng)前的睡眠質(zhì)量評(píng)分。 (4)用戶查看睡眠監(jiān)測(cè)日?qǐng)?bào)告,如睡眠評(píng)分、睡眠時(shí)長(zhǎng)等。 (5)用戶獲取一周內(nèi)的睡眠監(jiān)測(cè)報(bào)告的統(tǒng)計(jì)分析結(jié)果,如本周睡眠時(shí)長(zhǎng)、周平均值統(tǒng)計(jì)(平均入睡時(shí)間、綜合得分、平均睡眠時(shí)長(zhǎng))、同上周對(duì)比(睡眠時(shí)長(zhǎng)、入睡時(shí)間)、睡眠綜合分析。 (6)系統(tǒng)發(fā)送預(yù)警通知。
以用戶的年齡、性別、睡眠質(zhì)量等級(jí)等特征為基礎(chǔ),采用協(xié)同過(guò)濾算法,找到和目標(biāo)用戶特征相似的用戶集合中評(píng)價(jià)最優(yōu),即效果最佳的方案,最后將這個(gè)方案推薦給目標(biāo)客戶[3]。 如果對(duì)系統(tǒng)推薦的方案不是很感興趣,可以選擇更換助眠方案,直至客戶滿意為止。具體實(shí)現(xiàn)如圖5 所示。
圖5 助眠方案推薦
(1)根據(jù)問(wèn)卷評(píng)分、睡眠質(zhì)量評(píng)分,用戶獲取自己的專屬定制助眠方案。 (2)系統(tǒng)根據(jù)用戶睡眠質(zhì)量的不斷變化,及時(shí)更新方案。
系統(tǒng)會(huì)根據(jù)用戶選擇的助眠方案,細(xì)化方案中的內(nèi)容,生成每日需要完成的任務(wù),App 會(huì)以通知的形式監(jiān)督用戶打卡完成。 每日任務(wù)對(duì)應(yīng)的都會(huì)有一個(gè)教程,用戶根據(jù)教程完成任務(wù)。 當(dāng)所有任務(wù)完成之后,方案的總體進(jìn)度會(huì)向前進(jìn)。 具體實(shí)現(xiàn)如圖6所示。
圖6 方案監(jiān)督打卡
(1)系統(tǒng)根據(jù)助眠方案發(fā)布每日任務(wù)。 (2)用戶打卡完成方案生成的每日任務(wù)。 (3)用戶查看方案總體完成情況。
當(dāng)任務(wù)進(jìn)度完成之后,系統(tǒng)會(huì)收集用戶對(duì)于此方案的評(píng)價(jià),以便及時(shí)調(diào)整、更新方案。 具體實(shí)現(xiàn)如圖7所示。
圖7 方案效果反饋
(1)系統(tǒng)在用戶完成助眠方案之后發(fā)布方案治療效果反饋表。 (2)用戶填寫方案效果反饋表。 (3)系統(tǒng)收集反饋,進(jìn)行統(tǒng)計(jì)分析,采取相應(yīng)措施。
App 以匹茲堡睡眠指數(shù)為基礎(chǔ),生成睡眠質(zhì)量測(cè)評(píng)問(wèn)卷,并結(jié)合智能手環(huán)監(jiān)測(cè)用戶睡眠數(shù)據(jù),借助機(jī)器學(xué)習(xí)以及數(shù)據(jù)挖掘算法,對(duì)睡眠質(zhì)量進(jìn)行智能分類,分為正常、輕度失眠、中度失眠以及重度失眠四個(gè)等級(jí)。同時(shí),App 還建立隨機(jī)森林預(yù)測(cè)模型,對(duì)睡眠質(zhì)量進(jìn)行等級(jí)預(yù)測(cè),及時(shí)為輕度失眠、中度失眠以及重度失眠的用戶進(jìn)行預(yù)警通知,并通過(guò)分析用戶睡眠特征,進(jìn)行個(gè)性化助眠方案推薦。
目前,在機(jī)器學(xué)習(xí)算法中,決策樹(shù)由于其計(jì)算公式簡(jiǎn)單、效率高,而受到廣泛使用,但單個(gè)決策樹(shù)不穩(wěn)定,容易產(chǎn)生過(guò)于擬合的問(wèn)題。 隨機(jī)森林是將多個(gè)決策樹(shù)通過(guò)集成的方法融合在一起,最終結(jié)果由每個(gè)決策樹(shù)的結(jié)果綜合得到[4]。
首先,從多維度分析不同基本信息的用戶的睡眠質(zhì)量特性,并根據(jù)特征差異性對(duì)用戶進(jìn)行群體劃分,如性別、年齡段。 其次,利用Person 相關(guān)性分析,得到睡眠監(jiān)測(cè)數(shù)據(jù)中影響睡眠質(zhì)量等級(jí)的強(qiáng)關(guān)聯(lián)因素。 最后,采用隨機(jī)森林算法分別對(duì)隸屬不同群體的用戶建立睡眠質(zhì)量等級(jí)預(yù)測(cè)模型。 最終確定將預(yù)測(cè)用戶的性別、年齡、入睡時(shí)間、入睡時(shí)長(zhǎng)、睡眠時(shí)長(zhǎng)、環(huán)境噪音、翻身次數(shù)、夢(mèng)話次數(shù)等作為參數(shù),通過(guò)構(gòu)建的隨機(jī)森林模型進(jìn)行訓(xùn)練,從而預(yù)測(cè)用戶的睡眠質(zhì)量等級(jí)。 隨機(jī)森林預(yù)測(cè)模型的實(shí)現(xiàn)框架,如圖8 所示。
圖8 隨機(jī)森林預(yù)測(cè)模型框架
利用年齡段、體重、性別、睡眠質(zhì)量等級(jí)等用戶特征,通過(guò)計(jì)算歐幾里得距離,得到用戶之間的相似度。先找到和目標(biāo)用戶特征相似的用戶集合;再找到這個(gè)集合中用戶評(píng)價(jià)較高,即用戶認(rèn)為助眠效果尚可的方案;最后將這個(gè)方案推薦給目標(biāo)客戶。
隨機(jī)森林是利用多個(gè)決策樹(shù)對(duì)樣本進(jìn)行訓(xùn)練、分類并預(yù)測(cè)的一種算法,主要應(yīng)用于回歸和分類場(chǎng)景。在對(duì)數(shù)據(jù)進(jìn)行分類的同時(shí),還可以給出各個(gè)變量的重要性評(píng)分,評(píng)估各個(gè)變量在分類中所起的作用[5]。 主要過(guò)程為構(gòu)建訓(xùn)練集和驗(yàn)證集、生成決策樹(shù)、組合模型、驗(yàn)證模型。
首先,使用sklearn 庫(kù)中的train_test_split 類,將睡眠數(shù)據(jù)集按90%訓(xùn)練集,10%驗(yàn)證集分配。 接著,進(jìn)行睡眠特征分析,在每一輪生成決策樹(shù)的過(guò)程中,從這些特征中選取若干個(gè)特征,組成新的特征集,通過(guò)使用新的特征集來(lái)生成決策樹(shù)。 由于生成的決策樹(shù)之間是相互獨(dú)立的,在進(jìn)行睡眠質(zhì)量等級(jí)分類時(shí),只需要所有的決策樹(shù)投票來(lái)確定最終的分類結(jié)果[6]。 最后,只需要將未被使用過(guò)的驗(yàn)證集中的數(shù)據(jù)拿來(lái)驗(yàn)證最終的預(yù)測(cè)模型即可[7]。
睡眠測(cè)評(píng)與監(jiān)測(cè)預(yù)警App 利用大數(shù)據(jù)技術(shù),挖掘影響睡眠的影響因子,運(yùn)用隨機(jī)森林算法,建立失眠分類模型,對(duì)于中度失眠以及重度失眠的用戶進(jìn)行及時(shí)預(yù)警。 根據(jù)睡眠質(zhì)量等級(jí)分類,制定中醫(yī)特色助眠方案,以用戶反饋為基礎(chǔ),精準(zhǔn)推薦。 以養(yǎng)代療,運(yùn)用中醫(yī)治未病理念進(jìn)行失眠調(diào)理,全方位、多途徑地緩解用戶的失眠狀況,提高其睡眠質(zhì)量。