賈 楠,霍曉燕,齊 忠,江朝力,董志良
(河北地質(zhì)大學(xué),河北 石家莊 050031)
當(dāng)今時代,由于生活水平的整體提高,人們更加關(guān)注自身的健康狀態(tài)。常見的人體健康狀態(tài)包括運動狀態(tài)下和靜息狀態(tài)下的人體健康水平。人體運動狀態(tài)包括散步、騎車、跑步等,而人體靜息狀態(tài)包括躺、坐、跪、站立等。
眾所周知,運動過度不僅不能起到健身鍛煉的效果,反而增加了人體的負(fù)荷,對人體安全造成嚴(yán)重傷害[1]。人體運動過程中伴隨著能量的消耗,一般情況下,運動強度越大,人體消耗的能量越多。能耗級別能直接反映人體的運動強度,因此及時獲取運動過程中的人體運動能耗級別,對于了解人體運動負(fù)荷、規(guī)避運動風(fēng)險有著重要的作用。人體運動能耗級別預(yù)測成為了當(dāng)前研究人員關(guān)注的重點和熱點[2-4]。
相對運動狀態(tài)而言,人體在靜息狀態(tài)下通常被認(rèn)為消耗較少的能量,因此很少受到人們的關(guān)注。然而,對于一些特殊人群,監(jiān)控和了解他們靜息狀態(tài)下的能耗級別具有重大意義。例如:對于某些重癥病人,需要隨時關(guān)注他們身體的能耗水平。重癥病人的身體能耗水平不能過高,同時也不能太低。因此,需要準(zhǔn)確了解這些重癥病人的身體能耗情況,然后提供準(zhǔn)確的能量補充計劃,從而避免因為身體能量損耗而造成病情進(jìn)一步加重。
由于人體機理本身的復(fù)雜性,人體能耗與肌肉抖動、心臟收縮、呼吸頻率等多種生理因素相關(guān)[3]。因此,在人體靜息狀態(tài)下,很難直接度量人體能耗級別。在實驗環(huán)境下,可以通過佩戴多種傳感器監(jiān)測人體靜息狀態(tài)下的能耗水平[5-10]。例如,在文獻(xiàn)[10]中,Gjoreski 等人在實驗環(huán)境下通過使用高精度的測量儀器,獲取人體靜息狀態(tài)下的呼吸率、心率、皮膚電反應(yīng)等人體生理體征,從而計算獲得人體靜息狀態(tài)下的能量消耗數(shù)據(jù)。
顯然,這種能耗獲取方式并不適用于人們?nèi)粘I睿嬖谔囟ㄆ鞑囊蕾嚺c器材佩戴不適感的問題。首先,某些特定的人體生理體征需要專門的儀器獲取。由于專業(yè)儀器價格昂貴,一般用戶難以承受,例如,Gjoreski 等人需要使用專業(yè)的BodyMedia傳感器才能獲取人體皮膚電反應(yīng)。其次,即使人們在日常生活中能夠佩戴專業(yè)傳感器,傳感器本身對人體造成的不適感也讓人難以接受。
針對當(dāng)前人體靜息狀態(tài)下能耗獲取過程中存在的難點,本文提出一種基于機器學(xué)習(xí)的人體能耗級別預(yù)測方法。首先,使用人體在實驗環(huán)境下獲取的生理體征及運動能耗作為數(shù)據(jù)集,并對人體靜息狀態(tài)下的能耗進(jìn)行級別劃分;然后,從獲取的數(shù)據(jù)集中使用機器學(xué)習(xí)的方式建立從人體生理體征到能耗級別的映射關(guān)系;最后,通過訓(xùn)練好的機器學(xué)習(xí)模型,預(yù)測人體靜息狀態(tài)下的能耗水平。在能耗級別判別模型的建立過程中,我們只把容易獲取的人體生理體征(即,易測生理體征)納入考慮,如心率、呼吸率等,擯棄需要使用專業(yè)傳感器才能獲取的人體生理體征,如皮膚電反應(yīng)等。因此,該方法能夠應(yīng)用于真實場景下人體靜息狀態(tài)下的能耗級別預(yù)測,從而提升模型的適用性。
實驗結(jié)果表明,在僅考慮有限種類易測生理體征的情況下,我們的模型預(yù)測人體能耗級別時可獲得80%以上的準(zhǔn)確率。
本文使用的人體靜息狀態(tài)下的生理體征與運動能耗數(shù)據(jù)集由Gjoreski等人通過實驗獲得。通過讓參與者佩戴傳感器的方式,他們從10位參與者身上獲取了10 種類型的人體生理體征及能耗數(shù)據(jù)。10 種運動類型包括:躺,走,坐,站,跪,趴,站立學(xué)習(xí),騎自行車,跑步以及過渡階段。其中,過渡階段是指從一種類型轉(zhuǎn)化為另一種類型的過程,如由站立變?yōu)樽隆?/p>
表1 參與者生理屬性統(tǒng)計
表1 統(tǒng)計了10 位參與者的基本生理屬性??梢杂^察到,這10 位參與者的以年輕人為主,他們的平均年齡為27.2 歲,平均生理質(zhì)量指數(shù)(即BMI)為24.1kg/m2,參與者的平均體重為78.2kg。
Gjoreski 等人使用傳感器監(jiān)測10 位參與者在2個星期內(nèi)的生理體征和能耗數(shù)據(jù)。參與者每天大約佩戴8個小時的傳感器。在參與者佩戴傳感器期間,其所有的生理體征和能耗數(shù)據(jù)將會被傳感器記錄下來。被記錄的人體生理體征包括:加速度、呼吸率、心率、胸部皮膚溫度、皮膚電反應(yīng)、身體溫度、手臂溫度。
參與者佩戴了4種類型的傳感器,其中,步行傳感器用于監(jiān)測人體運動加速度[11];Zephyr傳感器用于檢測人體心率、呼吸率以及胸部皮膚溫度[12];BodyMedia 傳感器用于檢測人體皮膚電反應(yīng)、手臂溫度、環(huán)境溫度[13];最后,通過分析人體運動過程中的生理體征數(shù)據(jù),并通過使用間接量熱計裝置Cosmed 獲得人體運動能耗[14]。表2 為人體生理體征和能耗數(shù)據(jù)的示例。
表2 人體生理體征和能耗數(shù)據(jù)示例
根據(jù)Gjoreski 等人檢測到的人體能耗數(shù)據(jù),人體靜息狀態(tài)下大部分的能耗水平位于0到2這個區(qū)間內(nèi)。因此,本文中我們將人體能耗分為3個級別,即低級(能耗水平≤1)、中級(能耗水平位于1~2 之間)、高級(能耗水平位于≥2)。
為實現(xiàn)人體靜息狀態(tài)下的能耗判別模型,本文采用有監(jiān)督機器學(xué)習(xí)分類算法[15]。常見的分類算法有樸素貝葉斯(NB,Naive Bayesian)[16]、支持向量機(SVM,Support Vector Machines)[17]、隨機森林(RF,Random Forest)[18]以及XGBoost(Extreme Gradient Booting)[19]。
樸素貝葉斯分類(NB)是以貝葉斯定理為基礎(chǔ)并且假設(shè)特征條件之間相互獨立的方法,先通過已給定的訓(xùn)練集,以特征詞之間獨立作為前提假設(shè),學(xué)習(xí)從輸入到輸出的聯(lián)合概率分布,再基于學(xué)習(xí)到的模型,輸入X,求出使得后驗概率最大的輸出Y。
設(shè)有樣本數(shù)據(jù)集D={d1,d2,…,dn},對應(yīng)樣本數(shù)據(jù)的特征屬性集為X={x1,x2,…,xd}。類變量為D={y1,y2,…,ym},即D可以分為ym類別。其中x1,x2,…,xd相互獨立且隨機,則Y的先驗概率Pprior=P(Y),Y的后驗概率Ppost=P(Y|X),由樸素貝葉斯算法可得,后驗概率可以由先驗概率Pprior=P(Y)、證據(jù)P(Y)、類條件概率P(Y|X)計算出:
樸素貝葉斯基于各特征之間相互獨立,在給定類別為y的情況下,上式可以進(jìn)一步表示為下式:
由以上兩式可以計算出后驗概率為:
由于P(X)的大小是固定不變的,因此在比較后驗概率時,只比較上式的分子部分即可。因此可以得到一個樣本數(shù)據(jù)屬于類別yi的樸素貝葉斯計算如下式:
SVM(支持向量機)的基本思想是求解能夠正確劃分訓(xùn)練數(shù)據(jù)集并且?guī)缀伍g隔最大的分離超平面。
給定數(shù)據(jù)集{xi,yi} ,i=1,2,…,n,其中,xi表示第i樣本的特征,yi表示該樣本對應(yīng)的標(biāo)簽,n為樣本數(shù),其分類函數(shù)為:
其中,αi為拉格朗日乘子,b為分類閾值,k(xi,xj)為核函數(shù),本文核函數(shù)選用RBF。αi的最優(yōu)解集計算如下:
其中,C為懲罰系數(shù),C>0。從式(6)中得到的最優(yōu)集中,選取αi>0(i=1,2,…,k且k<n)的對應(yīng)樣本作為輸入,從而構(gòu)造最優(yōu)分類決策函數(shù)并做出最優(yōu)決策分類。
RF(隨機森林)算法是通過集成多棵決策樹來形成整個森林從而得出算法結(jié)果的一種機器學(xué)習(xí)方法。隨機森林生成描述過程如下。
第一步:在整個樣本集中使用Bootstrap 方法,重抽樣出K 個子訓(xùn)練樣本集{D1,D2,…,Dk},并構(gòu)建出K棵決策樹。
第二步:在分類樹的任何一個節(jié)點上,從所有指標(biāo)中隨機選取幾個指標(biāo),選擇最優(yōu)分割指標(biāo)進(jìn)行分割。
第三步:重復(fù)以上步驟。
第四步:將所有的樹聚集在一起,構(gòu)建整個隨機森林。
其中,最為核心的幾個概念分別為:
(a)信息。對于決策樹而言,若待分類事物集合可劃分為多個類別,某個類xi信息定義如下:
(b)信息增益。反映了每個特征對分類的重要程度,信息增益越大,則該特征的分類效果越好,在各類別間的區(qū)分度也就越高。具體定義如下:
其中,D為所有的樣本預(yù)測數(shù)據(jù),某個特征將D劃分為v 個子集{D1,D2,…,Dv},Ent(D)為樣本集D的信息熵為存在的類別數(shù)目,pi為第i類在樣本集D中的比例。
XGBoost 是梯度提升樹模型(Gradient Boosting Trees)的一種高效實現(xiàn)方式。XGBoost 集成了K根CART 樹(Classification and Regression Trees){Tr1(x1,y1)},Tr2(x2,y2)},…,Trk(xk,yk)}。其中,xi表示第i樣本的特征,yi表示該樣本對應(yīng)的標(biāo)簽。CART 樹將分配給每個葉子節(jié)點一個分?jǐn)?shù)。而最終的預(yù)測結(jié)果將由所有CART 樹上對應(yīng)葉子節(jié)點的分?jǐn)?shù)通過加法模型得到,如公式(9)所示:
在上式中,fk(xi)為第k棵樹的預(yù)測分?jǐn)?shù),F(xiàn)則代表函數(shù)空間中所包含的所有樹模型。相比于傳統(tǒng)的梯度提升樹模型,XGBoost 一個重要的改進(jìn)是在目標(biāo)函數(shù)中加入了正則項。公式(10)為XGBoost的目標(biāo)函數(shù)。
l為損失函數(shù),描述了預(yù)測標(biāo)簽yi與y′i之間的誤差。為模型復(fù)雜度函數(shù)。其中T和ωj分別表示葉子數(shù)量及對應(yīng)葉子節(jié)點上的取值,γ和λ則用于控制正則化的懲罰程度。
為了驗證本文提出的人體靜息狀態(tài)下的能耗級別判別模型,我們在Gjoreski 等人提出的數(shù)據(jù)集上做了相應(yīng)的驗證實驗。
由于在人們靜息狀態(tài)下某些生理體征很難直接獲取,如皮膚電反應(yīng)和胸部皮膚溫度,因此我們在使用機器學(xué)習(xí)進(jìn)行人體能耗級別判別時,只將容易獲取的人體生理體征納入考慮,包括呼吸率、心率、環(huán)境溫度、手臂溫度五個特征。在人們?nèi)粘I钪?,呼吸率、心率和手臂溫度可以通過佩戴智能手環(huán)進(jìn)行監(jiān)測;而環(huán)境溫度可以從任意一款天氣預(yù)報APP上獲得。我們的目標(biāo)是通過人體表現(xiàn)出的這四個生理體征,預(yù)測人體靜息狀態(tài)下的能耗級別。
Gjoreski 等人提出的數(shù)據(jù)集中既包含人體靜息狀態(tài)下的生理數(shù)據(jù),如躺、坐、跪、站立等,又包含人體運動時的生理數(shù)據(jù),如散步、騎車、跑步等,因為本文主要關(guān)注人體靜息狀態(tài)下的能耗級別預(yù)測,因此我們從Gjoreski等人提出的數(shù)據(jù)集中分離出關(guān)于人體靜息狀態(tài)下的生理數(shù)據(jù)和能耗數(shù)據(jù),然后在這樣的數(shù)據(jù)上訓(xùn)練相應(yīng)的判定模型。
Gjoreski等人提出的數(shù)據(jù)集一共包含5972條數(shù)據(jù)記錄,每條數(shù)據(jù)記錄包含如表2 所示的內(nèi)容。通過過濾掉關(guān)于人體運動狀態(tài)的數(shù)據(jù)記錄,一共收集到3716 條人體靜息狀態(tài)的數(shù)據(jù)集。本文將在這些數(shù)據(jù)集上進(jìn)行模型訓(xùn)練和驗證。
為了驗證我們提出的判別模型的效果,引入了2 個度量指標(biāo)[20],即精確度(PRE)和召回率(REC)。精確度用來衡量結(jié)果集的精確性;而召回率用來度量結(jié)果集的安全性。同時,為了考察模型的綜合效果,還給出了F-measure 值(F1)的定義。這3 個度量指標(biāo)定義如下:
TP和TN分別表示正確預(yù)測的正樣本數(shù)量和負(fù)樣本數(shù)量;FP和FN分別表示錯誤預(yù)測的正樣本數(shù)量和負(fù)樣本數(shù)量。由于我們面臨的是多分類問題(即有3 個能耗級別),所以可以將問題視為多個二分類問題。實驗中我們使用XGBoost作為默認(rèn)分類器。
首先,使用提出的模型分別預(yù)測了人體不同靜息狀態(tài)下能耗級別下的準(zhǔn)確率。在整個實驗中使用10折驗證法。將數(shù)據(jù)集劃分為10份,其中9份用來訓(xùn)練機器學(xué)習(xí)模型,剩下1份用作測試集。
表3 展示了模型的效果??梢杂^察到,模型在預(yù)測低級能耗級別取得最好的效果,F(xiàn)1 值為0.90;同時,模型在預(yù)測中級能耗級別時能取得較好的召回率,為0.91;在預(yù)測高級能耗級別時,可以獲得0.84的召回率。
表3 能耗級別預(yù)測準(zhǔn)確率
總的來說,模型在預(yù)測人體靜息狀態(tài)下的能耗級別方面取得了較好的效果??紤]到本文只使用了部分日常生活中容易獲得的生理體征作為特征,因此,我們的模型具有更好的實用性和推廣性。
與此同時,還比較了不同機器學(xué)習(xí)算法在人體靜息狀態(tài)下能耗級別預(yù)測中的效果,如表4所示,加入了另外3 個機器學(xué)習(xí)算法預(yù)測運動能耗級別,包括樸素貝葉斯(NB)、支持向量機(SVM)、隨機森林(RF)。
從表4 中可以看出,在預(yù)測低級別的人體運動能耗時,樸素貝葉斯取得的效果較差,其F1 值為0.80;支持向量機和隨機森林分別能取得0.84 和0.87的F1值;XGBoost 表現(xiàn)較好,其F1值為0.9。
在預(yù)測中級別的人體運動能耗時,樸素貝葉斯和支撐向量機取得的效果較差,其F1值分別為0.73和0.79;隨機森林和XGBoost 表現(xiàn)較好,可以獲得0.83 和0.88 的F1 值。在預(yù)測高級別的人體運動能耗時,依舊是隨機森林和XGBoost 表現(xiàn)較好,其F1值分別為0.81和0.84。
表4 不同機器學(xué)習(xí)算法預(yù)測結(jié)果比較
從表4中的結(jié)果可以觀察到,XGBoost判定人體運動能耗級別的效果優(yōu)于隨機森林;而隨機森林的效果又優(yōu)于樸素貝葉斯和支撐向量機。因此,本文中我們選擇XGBoost作為我們的默認(rèn)分類器。
由于人體靜息狀態(tài)下的能耗級別難以直接獲取,為此本文提出了一種通過分析人體運動生理體征(如:心率、呼吸率、皮膚溫度等)預(yù)測能耗級別的方法。首先,分析了Gjoreski 等人關(guān)于人體生理體征數(shù)據(jù)和能耗數(shù)據(jù)集,并將人體靜息狀態(tài)下的能耗水平分成3個級別。其次,將人們靜息狀態(tài)下容易獲取的生理體征數(shù)據(jù)作為特征,建立了人體靜息狀態(tài)能耗級別預(yù)測模型。最后,實驗中使用XGBoost 模型預(yù)測人體能耗級別。同時,對比了不同機器學(xué)習(xí)模型在預(yù)測人體靜息狀態(tài)下能耗級別的準(zhǔn)確性。結(jié)果表明,XGBoost 模型可以取得最好的效果。